Skip to content

Commit a2602a6

Browse files
committed
Renamed object builders to strategies
1 parent c0c8dbe commit a2602a6

10 files changed

Lines changed: 53 additions & 53 deletions

File tree

TestStack.Dossier.Tests/Builders/AutoConstructorCustomerBuilder.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
using TestStack.Dossier.ObjectBuilders;
1+
using TestStack.Dossier.BuildStrategies;
22
using TestStack.Dossier.Tests.Stubs.Entities;
33

44
namespace TestStack.Dossier.Tests.Builders
@@ -7,7 +7,7 @@ class AutoConstructorCustomerBuilder : TestDataBuilder<Customer, AutoConstructor
77
{
88
protected override Customer BuildObject()
99
{
10-
return ObjectBuilderRegistry.Get<ConstructorObjectBuilder>().BuildObject(this);
10+
return BuilderStrategy.Apply<UseConstructor>().BuildObject(this);
1111
}
1212

1313
public AutoConstructorCustomerBuilder WithFirstName(string firstName)

TestStack.Dossier/ObjectBuilders/AllPropertiesObjectBuilder.cs renamed to TestStack.Dossier/BuildStrategies/AllProperties.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
using Ploeh.AutoFixture;
22

3-
namespace TestStack.Dossier.ObjectBuilders
3+
namespace TestStack.Dossier.BuildStrategies
44
{
55
/// <summary>
66
/// Creates an instance of an object by setting all public and private properties.
77
/// </summary>
8-
public class AllPropertiesObjectBuilder : IObjectBuilder
8+
public class AllProperties : IBuildStrategy
99
{
1010
/// <inheritdoc />
1111
public TObject BuildObject<TObject, TBuilder>(TestDataBuilder<TObject, TBuilder> builder)

TestStack.Dossier/ObjectBuilders/AutoFixtureObjectBuilder.cs renamed to TestStack.Dossier/BuildStrategies/AutoFixture.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
using Ploeh.AutoFixture;
22

3-
namespace TestStack.Dossier.ObjectBuilders
3+
namespace TestStack.Dossier.BuildStrategies
44
{
55
/// <summary>
66
/// Creates an instance of an object with AutoFixture.
77
/// </summary>
8-
public class AutoFixtureObjectBuilder : IObjectBuilder
8+
public class AutoFixture : IBuildStrategy
99
{
1010
/// <inheritdoc />
1111
public TObject BuildObject<TObject, TBuilder>(TestDataBuilder<TObject, TBuilder> builder)
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
using System;
2+
using System.Collections.Generic;
3+
using System.Linq;
4+
5+
namespace TestStack.Dossier.BuildStrategies
6+
{
7+
/// <summary>
8+
/// A static registry of object builder factories.
9+
/// </summary>
10+
public static class BuilderStrategy
11+
{
12+
private static List<Tuple<Type, IBuildStrategy>> _factories = new List<Tuple<Type, IBuildStrategy>>
13+
{
14+
new Tuple<Type, IBuildStrategy>(typeof(AllProperties), new AllProperties()),
15+
new Tuple<Type, IBuildStrategy>(typeof(PublicProperties), new PublicProperties()),
16+
new Tuple<Type, IBuildStrategy>(typeof(UseConstructor), new UseConstructor()),
17+
new Tuple<Type, IBuildStrategy>(typeof(AutoFixture), new AutoFixture())
18+
};
19+
20+
/// <summary>
21+
/// Provides access to specified factory.
22+
/// </summary>
23+
/// <typeparam name="T"></typeparam>
24+
/// <returns>The requested Factory</returns>
25+
public static IBuildStrategy Apply<T>() where T : IBuildStrategy
26+
{
27+
return _factories.Where(x => x.Item1 == typeof (T))
28+
.Select(x => x.Item2)
29+
.First();
30+
}
31+
}
32+
}

TestStack.Dossier/ObjectBuilders/IObjectBuilder.cs renamed to TestStack.Dossier/BuildStrategies/IBuildStrategy.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
namespace TestStack.Dossier.ObjectBuilders
1+
namespace TestStack.Dossier.BuildStrategies
22
{
33
/// <summary>
44
/// Interface for object building strategies
55
/// </summary>
6-
public interface IObjectBuilder
6+
public interface IBuildStrategy
77
{
88
/// <summary>
99
/// Takes a builder and generates an object of the specified type.

TestStack.Dossier/ObjectBuilders/PublicPropertiesObjectBuilder.cs renamed to TestStack.Dossier/BuildStrategies/PublicProperties.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
using Ploeh.AutoFixture;
22

3-
namespace TestStack.Dossier.ObjectBuilders
3+
namespace TestStack.Dossier.BuildStrategies
44
{
55
/// <summary>
66
/// Creates an instance of an object by setting all public properties but not private properties.
77
/// </summary>
8-
public class PublicPropertiesObjectBuilder : IObjectBuilder
8+
public class PublicProperties : IBuildStrategy
99
{
1010
/// <inheritdoc />
1111
public TObject BuildObject<TObject, TBuilder>(TestDataBuilder<TObject, TBuilder> builder)

TestStack.Dossier/ObjectBuilders/ConstructorObjectBuilder.cs renamed to TestStack.Dossier/BuildStrategies/UseConstructor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
using System.Linq.Expressions;
44
using Ploeh.AutoFixture;
55

6-
namespace TestStack.Dossier.ObjectBuilders
6+
namespace TestStack.Dossier.BuildStrategies
77
{
88
/// <summary>
99
/// Builds the object using the constructor with the most arguments.
1010
/// </summary>
11-
public class ConstructorObjectBuilder : IObjectBuilder
11+
public class UseConstructor : IBuildStrategy
1212
{
1313
/// <inheritdoc />
1414
public TObject BuildObject<TObject, TBuilder>(TestDataBuilder<TObject, TBuilder> builder)

TestStack.Dossier/ObjectBuilders/ObjectBuilderRegistry.cs

Lines changed: 0 additions & 32 deletions
This file was deleted.

TestStack.Dossier/TestDataBuilder.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Linq.Expressions;
4+
using TestStack.Dossier.BuildStrategies;
45
using TestStack.Dossier.Lists;
5-
using TestStack.Dossier.ObjectBuilders;
66

77
namespace TestStack.Dossier
88
{
@@ -76,8 +76,8 @@ public static implicit operator List<TObject>(TestDataBuilder<TObject, TBuilder>
7676
/// <returns>The built object</returns>
7777
protected virtual TObject BuildObject()
7878
{
79-
var model = ObjectBuilderRegistry
80-
.Get<AllPropertiesObjectBuilder>()
79+
var model = BuilderStrategy
80+
.Apply<AllProperties>()
8181
.BuildObject(this);
8282

8383
return model;

TestStack.Dossier/TestStack.Dossier.csproj

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,19 +80,19 @@
8080
<Compile Include="DataSources\Generators\RandomGenerator.cs" />
8181
<Compile Include="DataSources\Generators\SequentialGenerator.cs" />
8282
<Compile Include="EquivalenceClasses\StringEquivalenceClasses.cs" />
83-
<Compile Include="ObjectBuilders\AutoFixtureObjectBuilder.cs" />
84-
<Compile Include="ObjectBuilders\ConstructorObjectBuilder.cs" />
85-
<Compile Include="ObjectBuilders\ObjectBuilderRegistry.cs" />
86-
<Compile Include="ObjectBuilders\AllPropertiesObjectBuilder.cs" />
87-
<Compile Include="ObjectBuilders\PublicPropertiesObjectBuilder.cs" />
83+
<Compile Include="BuildStrategies\AutoFixture.cs" />
84+
<Compile Include="BuildStrategies\UseConstructor.cs" />
85+
<Compile Include="BuildStrategies\BuilderStrategy.cs" />
86+
<Compile Include="BuildStrategies\AllProperties.cs" />
87+
<Compile Include="BuildStrategies\PublicProperties.cs" />
8888
<Compile Include="IAnonymousValueSupplier.cs" />
8989
<Compile Include="Lists\EnsureAllMethodsVirtual.cs" />
9090
<Compile Include="Lists\ListBuilder.cs" />
9191
<Compile Include="Lists\ListBuilderExtensions.cs" />
9292
<Compile Include="Lists\ListBuilderGenerator.cs" />
9393
<Compile Include="Lists\ListBuilderInterceptor.cs" />
9494
<Compile Include="NullingExpandoObject.cs" />
95-
<Compile Include="ObjectBuilders\IObjectBuilder.cs" />
95+
<Compile Include="BuildStrategies\IBuildStrategy.cs" />
9696
<Compile Include="Reflector.cs" />
9797
<Compile Include="Suppliers\DefaultEmailValueSupplier.cs" />
9898
<Compile Include="Suppliers\DefaultLastNameValueSupplier.cs" />

0 commit comments

Comments
 (0)