Skip to content

Commit 6c07bcc

Browse files
unknownunknown
unknown
authored and
unknown
committed
Enum bugfix
1 parent 5cc7f52 commit 6c07bcc

File tree

2 files changed

+138
-84
lines changed

2 files changed

+138
-84
lines changed

ObjectFiller.Test/EnumTest.cs

Lines changed: 132 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -4,85 +4,136 @@
44

55
namespace ObjectFiller.Test
66
{
7-
[TestClass]
8-
public class EnumTest
9-
{
10-
[TestMethod]
11-
public void Must_support_enums_out_of_the_box()
12-
{
13-
var filler = new Filler<MyClass>();
14-
filler.Setup()
15-
.OnProperty(x => x.Manual).Use(() => ManualSetupEnum.B)
16-
.OnProperty(x => x.Ignored).IgnoreIt();
17-
18-
for (int n = 0; n < 1000; n++)
19-
{
20-
var c = filler.Create();
21-
22-
Assert.IsTrue(
23-
c.Standard == StandardEnum.A ||
24-
c.Standard == StandardEnum.B ||
25-
c.Standard == StandardEnum.C);
26-
27-
Assert.IsTrue(
28-
c.Numbered == NumberedEnum.A ||
29-
c.Numbered == NumberedEnum.B ||
30-
c.Numbered == NumberedEnum.C);
31-
32-
Assert.IsTrue(
33-
c.Flags == FlagsEnum.A ||
34-
c.Flags == FlagsEnum.B ||
35-
c.Flags == FlagsEnum.C);
36-
37-
Assert.IsTrue((int)c.Nasty == 0);
38-
39-
Assert.IsTrue(c.Manual == ManualSetupEnum.B);
40-
41-
Assert.IsTrue((int)c.Ignored == 0);
42-
}
43-
}
44-
45-
public enum StandardEnum
46-
{
47-
A, B, C
48-
}
49-
50-
public enum NumberedEnum
51-
{
52-
A=1,B=3,C=5
53-
}
54-
55-
[Flags]
56-
public enum FlagsEnum
57-
{
58-
A = 0x01,
59-
B = 0x02,
60-
C = A | B,
61-
}
62-
63-
[Flags]
64-
public enum NastyEmptyEnum
65-
{
66-
}
67-
68-
public enum ManualSetupEnum
69-
{
70-
A, B, C
71-
}
72-
73-
public enum IgnoredEnum
74-
{
75-
A, B, C
76-
}
77-
78-
public class MyClass
79-
{
80-
public StandardEnum Standard { get; set; }
81-
public NumberedEnum Numbered { get; set; }
82-
public FlagsEnum Flags { get; set; }
83-
public NastyEmptyEnum Nasty { get; set; }
84-
public ManualSetupEnum Manual { get; set; }
85-
public IgnoredEnum Ignored { get; set; }
86-
}
87-
}
7+
[TestClass]
8+
public class EnumTest
9+
{
10+
[TestMethod]
11+
public void Must_support_enums_out_of_the_box()
12+
{
13+
var filler = new Filler<MyClass>();
14+
filler.Setup()
15+
.OnProperty(x => x.Manual).Use(() => ManualSetupEnum.B)
16+
.OnProperty(x => x.Ignored).IgnoreIt();
17+
18+
for (int n = 0; n < 1000; n++)
19+
{
20+
var c = filler.Create();
21+
22+
Assert.IsTrue(
23+
c.Standard == StandardEnum.A ||
24+
c.Standard == StandardEnum.B ||
25+
c.Standard == StandardEnum.C);
26+
27+
Assert.IsTrue(
28+
c.Numbered == NumberedEnum.A ||
29+
c.Numbered == NumberedEnum.B ||
30+
c.Numbered == NumberedEnum.C);
31+
32+
Assert.IsTrue(
33+
c.Flags == FlagsEnum.A ||
34+
c.Flags == FlagsEnum.B ||
35+
c.Flags == FlagsEnum.C);
36+
37+
Assert.IsTrue((int)c.Nasty == 0);
38+
39+
Assert.IsTrue(c.Manual == ManualSetupEnum.B);
40+
41+
Assert.IsTrue((int)c.Ignored == 0);
42+
}
43+
}
44+
45+
[TestMethod]
46+
public void Must_support_class_with_enums_as_ctor_out_of_the_box()
47+
{
48+
var filler = new Filler<MyClassWithCstr>();
49+
filler.Setup().OnProperty(x => x.Manual).Use(() => ManualSetupEnum.B);
50+
51+
for (int n = 0; n < 1000; n++)
52+
{
53+
var c = filler.Create();
54+
55+
Assert.IsTrue(
56+
c.Standard == StandardEnum.A ||
57+
c.Standard == StandardEnum.B ||
58+
c.Standard == StandardEnum.C);
59+
60+
Assert.IsTrue(
61+
c.Numbered == NumberedEnum.A ||
62+
c.Numbered == NumberedEnum.B ||
63+
c.Numbered == NumberedEnum.C);
64+
65+
Assert.IsTrue(
66+
c.Flags == FlagsEnum.A ||
67+
c.Flags == FlagsEnum.B ||
68+
c.Flags == FlagsEnum.C);
69+
70+
Assert.IsTrue((int)c.Nasty == 0);
71+
72+
Assert.IsTrue(c.Manual == ManualSetupEnum.B);
73+
}
74+
}
75+
76+
77+
public enum StandardEnum
78+
{
79+
A, B, C
80+
}
81+
82+
public enum NumberedEnum
83+
{
84+
A = 1, B = 3, C = 5
85+
}
86+
87+
[Flags]
88+
public enum FlagsEnum
89+
{
90+
A = 0x01,
91+
B = 0x02,
92+
C = A | B,
93+
}
94+
95+
[Flags]
96+
public enum NastyEmptyEnum
97+
{
98+
}
99+
100+
public enum ManualSetupEnum
101+
{
102+
A, B, C
103+
}
104+
105+
public enum IgnoredEnum
106+
{
107+
A, B, C
108+
}
109+
110+
public class MyClass
111+
{
112+
public StandardEnum Standard { get; set; }
113+
public NumberedEnum Numbered { get; set; }
114+
public FlagsEnum Flags { get; set; }
115+
public NastyEmptyEnum Nasty { get; set; }
116+
public ManualSetupEnum Manual { get; set; }
117+
public IgnoredEnum Ignored { get; set; }
118+
}
119+
120+
public class MyClassWithCstr
121+
{
122+
public MyClassWithCstr(StandardEnum standard ,NumberedEnum numbered, FlagsEnum flags, ManualSetupEnum manual, IgnoredEnum ignored)
123+
{
124+
this.Standard = standard;
125+
this.Numbered = numbered;
126+
this.Flags = flags;
127+
this.Manual = manual;
128+
this.Ignored = ignored;
129+
}
130+
131+
public StandardEnum Standard { get; set; }
132+
public NumberedEnum Numbered { get; set; }
133+
public FlagsEnum Flags { get; set; }
134+
public NastyEmptyEnum Nasty { get; set; }
135+
public ManualSetupEnum Manual { get; set; }
136+
public IgnoredEnum Ignored { get; set; }
137+
}
138+
}
88139
}

ObjectFiller/Filler.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -313,12 +313,15 @@ private static bool TypeIsClrType(Type type)
313313
/// </returns>
314314
private static bool TypeIsValidForObjectFiller(Type type, FillerSetupItem currentSetupItem)
315315
{
316-
return HasTypeARandomFunc(type, currentSetupItem)
316+
var result= HasTypeARandomFunc(type, currentSetupItem)
317317
|| (TypeIsList(type) && ListParamTypeIsValid(type, currentSetupItem))
318318
|| (TypeIsDictionary(type) && DictionaryParamTypesAreValid(type, currentSetupItem))
319319
|| TypeIsPoco(type)
320+
|| TypeIsEnum(type)
320321
|| (type.IsInterface && currentSetupItem.InterfaceToImplementation.ContainsKey(type)
321322
|| currentSetupItem.InterfaceMocker != null);
323+
324+
return result;
322325
}
323326

324327
/// <summary>
@@ -423,7 +426,7 @@ private object CreateAndFillObject(
423426
return this.CreateInstanceOfInterfaceOrAbstractClass(type, currentSetupItem, typeTracker);
424427
}
425428

426-
if (this.TypeIsEnum(type))
429+
if (TypeIsEnum(type))
427430
{
428431
return this.GetRandomEnumValue(type);
429432
}
@@ -918,7 +921,7 @@ private void SetPropertyValue(PropertyInfo property, object objectToFill, object
918921
/// <returns>
919922
/// True if the target <see cref="type"/> is a enumeration
920923
/// </returns>
921-
private bool TypeIsEnum(Type type)
924+
private static bool TypeIsEnum(Type type)
922925
{
923926
return type.IsEnum;
924927
}

0 commit comments

Comments
 (0)