1
1
package pl .pojo .tester .api ;
2
2
3
3
import java .util .Arrays ;
4
+ import java .util .HashMap ;
4
5
import java .util .List ;
6
+ import java .util .Map ;
5
7
import java .util .function .Predicate ;
6
8
import org .apache .commons .lang3 .builder .EqualsBuilder ;
7
9
import org .apache .commons .lang3 .builder .HashCodeBuilder ;
@@ -15,13 +17,15 @@ public abstract class AbstractTester {
15
17
16
18
protected ObjectGenerator objectGenerator ;
17
19
protected TestAssertions testAssertions = new TestAssertions ();
20
+ private Map <Class <?>, ConstructorParameters > constructorParameters = new HashMap <>();
21
+ private AbstractFieldValueChanger fieldValuesChanger = DefaultFieldValueChanger .INSTANCE ;
18
22
19
23
public AbstractTester () {
20
24
this (DefaultFieldValueChanger .INSTANCE );
21
25
}
22
26
23
27
public AbstractTester (final AbstractFieldValueChanger abstractFieldValueChanger ) {
24
- objectGenerator = new ObjectGenerator (abstractFieldValueChanger );
28
+ objectGenerator = new ObjectGenerator (abstractFieldValueChanger , constructorParameters );
25
29
}
26
30
27
31
public void test (final Class <?> clazz ) {
@@ -50,7 +54,13 @@ public void testAll(final ClassAndFieldPredicatePair... classesAndFieldPredicate
50
54
public abstract void test (final ClassAndFieldPredicatePair baseClassAndFieldPredicatePair , final ClassAndFieldPredicatePair ... classAndFieldPredicatePairs );
51
55
52
56
public void setFieldValuesChanger (final AbstractFieldValueChanger fieldValuesChanger ) {
53
- objectGenerator = new ObjectGenerator (fieldValuesChanger );
57
+ this .fieldValuesChanger = fieldValuesChanger ;
58
+ objectGenerator = new ObjectGenerator (fieldValuesChanger , constructorParameters );
59
+ }
60
+
61
+ public void setUserDefinedConstructors (final Map <Class <?>, ConstructorParameters > constructorParameters ) {
62
+ this .constructorParameters = constructorParameters ;
63
+ objectGenerator = new ObjectGenerator (fieldValuesChanger , constructorParameters );
54
64
}
55
65
56
66
@ Override
@@ -67,13 +77,17 @@ public boolean equals(final Object o) {
67
77
68
78
return new EqualsBuilder ().append (objectGenerator , that .objectGenerator )
69
79
.append (testAssertions , that .testAssertions )
80
+ .append (constructorParameters , that .constructorParameters )
81
+ .append (fieldValuesChanger , that .fieldValuesChanger )
70
82
.isEquals ();
71
83
}
72
84
73
85
@ Override
74
86
public int hashCode () {
75
87
return new HashCodeBuilder ().append (objectGenerator )
76
88
.append (testAssertions )
89
+ .append (constructorParameters )
90
+ .append (fieldValuesChanger )
77
91
.toHashCode ();
78
92
}
79
93
}
0 commit comments