1 package mockit;
2
3 import static org.junit.jupiter.api.Assertions.assertEquals;
4 import static org.junit.jupiter.api.Assertions.assertNotNull;
5 import static org.junit.jupiter.api.Assertions.assertNotSame;
6 import static org.junit.jupiter.api.Assertions.assertSame;
7
8 import java.util.ArrayList;
9 import java.util.HashMap;
10 import java.util.List;
11 import java.util.Map;
12
13 import javax.inject.Inject;
14 import javax.inject.Named;
15
16 import org.junit.jupiter.api.Test;
17
18
19
20
21 final class TestedFieldExtractionTest {
22
23
24
25
26 static class Dependency {
27 }
28
29
30
31
32 static class TestedClassWithMultipleFieldsOfSameType {
33
34
35 Dependency dep1;
36
37
38 Dependency dep2;
39 }
40
41
42 @Tested(fullyInitialized = true)
43 TestedClassWithMultipleFieldsOfSameType tested1;
44
45
46 @Tested
47 Dependency dep;
48
49
50
51
52 @Test
53 void extractMultipleFieldsOfSameTypeIntoSingleTestedField() {
54 assertNotNull(tested1.dep1);
55 assertNotNull(tested1.dep2);
56 assertSame(tested1.dep1, tested1.dep2);
57 assertSame(tested1.dep1, dep);
58 }
59
60
61
62
63 static class TestedClassWithNamedFields {
64
65
66 @Inject
67 @Named("first")
68 Dependency dep1;
69
70
71 @Inject
72 @Named("second")
73 Dependency dep2;
74 }
75
76
77 @Tested(fullyInitialized = true)
78 TestedClassWithNamedFields tested2;
79
80
81 @Tested
82 Dependency first;
83
84
85 @Tested
86 Dependency second;
87
88
89
90
91 @Test
92 void extractMultipleQualifiedFieldsOfSameTypeIntoSeparateTestedFields() {
93 assertNotNull(tested2.dep1);
94 assertNotNull(tested2.dep2);
95 assertNotSame(tested2.dep1, tested2.dep2);
96 assertSame(tested2.dep1, first);
97 assertSame(tested2.dep2, second);
98 }
99
100
101
102
103 static class TestedClassWithInitializedFieldsOfVariousTypes {
104
105
106 final String name = "test";
107
108
109 int number = 123;
110
111
112 @Inject
113 @Named("test")
114 final List<String> names = new ArrayList<>();
115
116
117 Map<Integer, String> numbersAndNames = new HashMap<>();
118 }
119
120
121 @Tested
122 TestedClassWithInitializedFieldsOfVariousTypes tested3;
123
124
125 @Tested
126 String name;
127
128
129 @Tested
130 List<String> test;
131
132
133 @Tested
134 Map<Integer, String> numbersAndNames;
135
136
137 @Tested
138 int number;
139
140
141
142
143 @Test
144 void extractFieldsInitializedByConstructorOfTestedClass() {
145 assertEquals(tested3.name, name);
146 assertEquals(tested3.number, number);
147 assertSame(tested3.names, test);
148 assertSame(tested3.numbersAndNames, numbersAndNames);
149 }
150 }