-
Notifications
You must be signed in to change notification settings - Fork 33
/
Copy pathSetupTests.cs
132 lines (100 loc) · 4.31 KB
/
SetupTests.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace Tynamix.ObjectFiller.Test
{
[TestClass]
public class SetupTests
{
public class Parent
{
public Child Child { get; set; }
public int? SomeId { get; set; }
}
public class Child
{
public int IntValue { get; set; }
public string StringValue { get; set; }
}
[TestMethod]
public void ExplicitSetupShallJustFillPropertiesWhichAreSetUpEvenInSubtypes()
{
Filler<Parent> filler = new Filler<Parent>();
filler.Setup(true)
.SetupFor<Child>().OnProperty(x => x.IntValue).Use(new IntRange(1, 20));
var parent = filler.Create();
Assert.IsNotNull(parent);
Assert.IsNotNull(parent.Child);
Assert.IsNull(parent.SomeId);
Assert.IsTrue(parent.Child.IntValue > 1 && parent.Child.IntValue < 20);
Assert.IsNull(parent.Child.StringValue);
}
[TestMethod]
public void ExplicitSetupShallJustFillPropertiesWhichAreSetUpAndNoInstanceShallCreateForSubTypesIfNotSetup()
{
Filler<Parent> filler = new Filler<Parent>();
filler.Setup(true)
.OnProperty(x => x.SomeId).Use(new IntRange(1, 20));
var parent = filler.Create();
Assert.IsNotNull(parent);
Assert.IsNull(parent.Child);
Assert.IsNotNull(parent.SomeId);
}
[TestMethod]
public void RandomizerCreatesObjectsBasedOnPreviouseSetups()
{
int givenValue = Randomizer<int>.Create();
var childFiller = new Filler<Child>();
var childSetup = childFiller.Setup().OnProperty(x => x.IntValue).Use(givenValue).Result;
var child = Randomizer<Child>.Create(childSetup);
Assert.AreEqual(givenValue, child.IntValue);
}
[TestMethod]
public void UseSetupsAgainForPropertyConfigurations()
{
int givenValue = Randomizer<int>.Create();
var childFiller = new Filler<Child>();
var childSetup = childFiller.Setup().OnProperty(x => x.IntValue).Use(givenValue).Result;
var parentFiller = new Filler<Parent>();
parentFiller.Setup().OnProperty(x => x.Child).Use(childSetup);
var parent = parentFiller.Create();
Assert.AreEqual(givenValue, parent.Child.IntValue);
}
[TestMethod]
public void UseSetupsAgainForTypeConfigurations()
{
int givenValue = Randomizer<int>.Create();
var childFiller = new Filler<Child>();
var childSetup = childFiller.Setup().OnProperty(x => x.IntValue).Use(givenValue).Result;
var parentFiller = new Filler<Parent>();
parentFiller.Setup().OnType<Child>().Use(childSetup);
var parent = parentFiller.Create();
Assert.AreEqual(givenValue, parent.Child.IntValue);
}
[TestMethod]
public void UseSetupsAgain()
{
int givenValue = Randomizer<int>.Create();
var firstChildFiller = new Filler<Child>();
var childSetup = firstChildFiller.Setup().OnProperty(x => x.IntValue).Use(givenValue).Result;
var secondChildFiller = new Filler<Child>();
secondChildFiller.Setup(childSetup);
var child = secondChildFiller.Create();
Assert.AreEqual(givenValue, child.IntValue);
}
[TestMethod]
public void SetupsCanBeCreatedWithFactoryMethod()
{
var childSetup = FillerSetup.Create<Child>().OnProperty(x => x.IntValue).Use(42).Result;
var child = Randomizer<Child>.Create(childSetup);
Assert.AreEqual(42, child.IntValue);
}
[TestMethod]
public void SetupsCanBeCreatedWithFactoryMethodBasedOnExistingSetupManager()
{
var childSetup = FillerSetup.Create<Child>().OnProperty(x => x.IntValue).Use(42).Result;
childSetup = FillerSetup.Create<Child>(childSetup).OnProperty(x => x.StringValue).Use("Juchu").Result;
var child = Randomizer<Child>.Create(childSetup);
Assert.AreEqual(42, child.IntValue);
Assert.AreEqual("Juchu", child.StringValue);
}
}
}