15
15
*/
16
16
package org .metafacture .metamorph .functions ;
17
17
18
- import static org .mockito .Mockito .inOrder ;
19
- import static org .mockito .Mockito .times ;
18
+ import static org .metafacture .metamorph .TestHelpers .assertMorph ;
20
19
21
20
import org .junit .Rule ;
22
21
import org .junit .Test ;
23
22
import org .metafacture .framework .StreamReceiver ;
24
- import org .metafacture .metamorph .InlineMorph ;
25
- import org .metafacture .metamorph .Metamorph ;
26
- import org .mockito .InOrder ;
27
23
import org .mockito .Mock ;
28
24
import org .mockito .junit .MockitoJUnit ;
29
25
import org .mockito .junit .MockitoRule ;
@@ -42,114 +38,112 @@ public final class UniqueTest {
42
38
@ Mock
43
39
private StreamReceiver receiver ;
44
40
45
- private Metamorph metamorph ;
46
-
47
41
@ Test
48
42
public void shouldAllowSelectingTheUniqueScope () {
49
- metamorph = InlineMorph . in ( this )
50
- . with ( "<rules>" )
51
- . with ( " <data source='data' name='inRecord'>" )
52
- . with ( " <unique />" )
53
- . with ( " </data>" )
54
- . with ( " <data source='e.data' name='inEntity'>" )
55
- . with ( " <unique in='entity' />" )
56
- . with ( " </data>" )
57
- . with ( "</rules>" )
58
- . createConnectedTo ( receiver );
59
-
60
- metamorph . startRecord ( "1 " );
61
- metamorph . startEntity ( "e " );
62
- metamorph .literal ("data" , "d" );
63
- metamorph . literal ( "data" , "d" );
64
- metamorph . endEntity ( );
65
- metamorph . startEntity ( "e " );
66
- metamorph .literal ("data" , "d" );
67
- metamorph . literal ( "data" , "d" );
68
- metamorph . endEntity ( );
69
- metamorph .literal ("data" , "d" );
70
- metamorph .literal ("data" , "d" );
71
- metamorph . literal ( "data" , "d" );
72
- metamorph . endRecord ( );
73
- metamorph . startRecord ( "2 " );
74
- metamorph . startEntity ( "e " );
75
- metamorph .literal ("data" , "d" );
76
- metamorph . literal ( "data" , "d" );
77
- metamorph . endEntity ( );
78
- metamorph . startEntity ( "e " );
79
- metamorph .literal ("data" , "d" );
80
- metamorph . literal ( "data" , "d" );
81
- metamorph . endEntity ( );
82
- metamorph .literal ("data" , "d" );
83
- metamorph .literal ("data" , "d" );
84
- metamorph . literal ( "data" , "d" );
85
- metamorph . endRecord ();
86
-
87
- final InOrder ordered = inOrder ( receiver );
88
- ordered . verify ( receiver ). startRecord ( "1 " );
89
- ordered . verify ( receiver , times ( 2 )) .literal ("inEntity " , "d" );
90
- ordered . verify ( receiver ). literal ( "inRecord" , "d" );
91
- ordered . verify ( receiver ). endRecord ( );
92
- ordered . verify ( receiver ). startRecord ( "2 " );
93
- ordered . verify ( receiver , times ( 2 )) .literal ("inEntity " , "d" );
94
- ordered . verify ( receiver ). literal ( "inRecord" , "d" );
95
- ordered . verify ( receiver ). endRecord ();
96
- ordered . verifyNoMoreInteractions ( );
43
+ assertMorph ( receiver ,
44
+ "<rules>" +
45
+ " <data source='data' name='inRecord'>" +
46
+ " <unique />" +
47
+ " </data>" +
48
+ " <data source='e.data' name='inEntity'>" +
49
+ " <unique in='entity' />" +
50
+ " </data>" +
51
+ "</rules>" ,
52
+ i -> {
53
+ i . startRecord ( "1" );
54
+ i . startEntity ( "e " );
55
+ i . literal ( "data" , "d " );
56
+ i .literal ("data" , "d" );
57
+ i . endEntity ( );
58
+ i . startEntity ( "e" );
59
+ i . literal ( "data" , "d " );
60
+ i .literal ("data" , "d" );
61
+ i . endEntity ( );
62
+ i . literal ( "data" , "d" );
63
+ i .literal ("data" , "d" );
64
+ i .literal ("data" , "d" );
65
+ i . endRecord ( );
66
+ i . startRecord ( "2" );
67
+ i . startEntity ( "e " );
68
+ i . literal ( "data" , "d " );
69
+ i .literal ("data" , "d" );
70
+ i . endEntity ( );
71
+ i . startEntity ( "e" );
72
+ i . literal ( "data" , "d " );
73
+ i .literal ("data" , "d" );
74
+ i . endEntity ( );
75
+ i . literal ( "data" , "d" );
76
+ i .literal ("data" , "d" );
77
+ i .literal ("data" , "d" );
78
+ i . endRecord ( );
79
+ },
80
+ ( o , f ) -> {
81
+ o . get (). startRecord ( "1" );
82
+ f . apply ( 2 ). literal ( "inEntity" , "d " );
83
+ o . get () .literal ("inRecord " , "d" );
84
+ o . get (). endRecord ( );
85
+ o . get (). startRecord ( "2" );
86
+ f . apply ( 2 ). literal ( "inEntity" , "d " );
87
+ o . get () .literal ("inRecord " , "d" );
88
+ o . get (). endRecord ( );
89
+ }
90
+ );
97
91
}
98
92
99
93
@ Test
100
94
public void shouldAllowSelectingTheUniquePart () {
101
- metamorph = InlineMorph . in ( this )
102
- . with ( "<rules>" )
103
- . with ( " <group name='name'>" )
104
- . with ( " <group>" )
105
- . with ( " <data source='data1' />" )
106
- . with ( " <data source='data2' />" )
107
- . with ( " <postprocess>" )
108
- . with ( " <unique part='name' />" )
109
- . with ( " </postprocess>" )
110
- . with ( " </group>" )
111
- . with ( " </group>" )
112
- . with ( " <group name='value'>" )
113
- . with ( " <group>" )
114
- . with ( " <data source='data1' />" )
115
- . with ( " <data source='data2' />" )
116
- . with ( " <postprocess>" )
117
- . with ( " <unique part='value' />" )
118
- . with ( " </postprocess>" )
119
- . with ( " </group>" )
120
- . with ( " </group>" )
121
- . with ( " <group name='both'>" )
122
- . with ( " <group>" )
123
- . with ( " <data source='data1' />" )
124
- . with ( " <data source='data2' />" )
125
- . with ( " <postprocess>" )
126
- . with ( " <unique part='name-value' />" )
127
- . with ( " </postprocess>" )
128
- . with ( " </group>" )
129
- . with ( " </group>" )
130
- . with ( "</rules>" )
131
- . createConnectedTo ( receiver );
132
-
133
- metamorph . startRecord ( "1 " );
134
- metamorph .literal ("data1" , "d1" );
135
- metamorph .literal ("data1" , "d1 " );
136
- metamorph .literal ("data1" , "d2" );
137
- metamorph .literal ("data1 " , "d2" );
138
- metamorph .literal ("data2" , "d2" );
139
- metamorph . literal ( "data2" , "d2" );
140
- metamorph . endRecord ();
141
-
142
- final InOrder ordered = inOrder ( receiver );
143
- ordered . verify ( receiver ). startRecord ( "1 " );
144
- ordered . verify ( receiver ).literal ("name " , "d1" );
145
- ordered . verify ( receiver ).literal ("value " , "d1" );
146
- ordered . verify ( receiver ).literal ("both " , "d1 " );
147
- ordered . verify ( receiver ).literal ("value " , "d2" );
148
- ordered . verify ( receiver ).literal ("both " , "d2" );
149
- ordered . verify ( receiver ).literal ("name " , "d2" );
150
- ordered . verify ( receiver ). literal ( "both" , "d2" );
151
- ordered . verify ( receiver ). endRecord ();
152
- ordered . verifyNoMoreInteractions ( );
95
+ assertMorph ( receiver ,
96
+ "<rules>" +
97
+ " <group name='name'>" +
98
+ " <group>" +
99
+ " <data source='data1' />" +
100
+ " <data source='data2' />" +
101
+ " <postprocess>" +
102
+ " <unique part='name' />" +
103
+ " </postprocess>" +
104
+ " </group>" +
105
+ " </group>" +
106
+ " <group name='value'>" +
107
+ " <group>" +
108
+ " <data source='data1' />" +
109
+ " <data source='data2' />" +
110
+ " <postprocess>" +
111
+ " <unique part='value' />" +
112
+ " </postprocess>" +
113
+ " </group>" +
114
+ " </group>" +
115
+ " <group name='both'>" +
116
+ " <group>" +
117
+ " <data source='data1' />" +
118
+ " <data source='data2' />" +
119
+ " <postprocess>" +
120
+ " <unique part='name-value' />" +
121
+ " </postprocess>" +
122
+ " </group>" +
123
+ " </group>" +
124
+ "</rules>" ,
125
+ i -> {
126
+ i . startRecord ( "1" );
127
+ i . literal ( "data1" , "d1 " );
128
+ i .literal ("data1" , "d1" );
129
+ i .literal ("data1" , "d2 " );
130
+ i .literal ("data1" , "d2" );
131
+ i .literal ("data2 " , "d2" );
132
+ i .literal ("data2" , "d2" );
133
+ i . endRecord ( );
134
+ },
135
+ o -> {
136
+ o . get (). startRecord ( "1" );
137
+ o . get (). literal ( "name" , "d1 " );
138
+ o . get ( ).literal ("value " , "d1" );
139
+ o . get ( ).literal ("both " , "d1" );
140
+ o . get ( ).literal ("value " , "d2 " );
141
+ o . get ( ).literal ("both " , "d2" );
142
+ o . get ( ).literal ("name " , "d2" );
143
+ o . get ( ).literal ("both " , "d2" );
144
+ o . get (). endRecord ( );
145
+ }
146
+ );
153
147
}
154
148
155
149
}
0 commit comments