Skip to content

Commit 4b76491

Browse files
committed
Metamorph tuples collector test should verify that no unexpected interactions occurred.
1 parent 3fc965b commit 4b76491

File tree

1 file changed

+121
-126
lines changed
  • metamorph/src/test/java/org/metafacture/metamorph/collectors

1 file changed

+121
-126
lines changed

metamorph/src/test/java/org/metafacture/metamorph/collectors/TuplesTest.java

Lines changed: 121 additions & 126 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,11 @@
1515
*/
1616
package org.metafacture.metamorph.collectors;
1717

18-
import static org.mockito.Mockito.inOrder;
18+
import static org.metafacture.metamorph.TestHelpers.assertMorph;
1919

2020
import org.junit.Rule;
2121
import org.junit.Test;
2222
import org.metafacture.framework.StreamReceiver;
23-
import org.metafacture.metamorph.InlineMorph;
24-
import org.metafacture.metamorph.Metamorph;
25-
import org.mockito.InOrder;
2623
import org.mockito.Mock;
2724
import org.mockito.junit.MockitoJUnit;
2825
import org.mockito.junit.MockitoRule;
@@ -35,127 +32,125 @@
3532
*/
3633
public final class TuplesTest {
3734

38-
@Rule
39-
public final MockitoRule mockitoRule = MockitoJUnit.rule();
40-
41-
@Mock
42-
private StreamReceiver receiver;
43-
44-
private Metamorph metamorph;
45-
46-
@Test
47-
public void shouldEmitTwoandThreeTuples() {
48-
metamorph = InlineMorph.in(this)
49-
.with("<rules>")
50-
.with(" <tuples name='product'>")
51-
.with(" <data source='1' />")
52-
.with(" <data source='3' />")
53-
.with(" <data source='2' />")
54-
.with(" </tuples>")
55-
.with("</rules>")
56-
.createConnectedTo(receiver);
57-
58-
metamorph.startRecord("1");
59-
metamorph.literal("1", "a");
60-
metamorph.literal("1", "b");
61-
metamorph.literal("2", "A");
62-
metamorph.literal("2", "B");
63-
metamorph.endRecord();
64-
metamorph.startRecord("2");
65-
metamorph.literal("3", "X");
66-
metamorph.literal("1", "c");
67-
metamorph.literal("1", "d");
68-
metamorph.literal("2", "C");
69-
metamorph.literal("3", "Y");
70-
metamorph.literal("2", "D");
71-
metamorph.endRecord();
72-
73-
final InOrder ordered = inOrder(receiver);
74-
ordered.verify(receiver).startRecord("1");
75-
ordered.verify(receiver).literal("product", "aA");
76-
ordered.verify(receiver).literal("product", "bA");
77-
ordered.verify(receiver).literal("product", "aB");
78-
ordered.verify(receiver).literal("product", "bB");
79-
ordered.verify(receiver).endRecord();
80-
ordered.verify(receiver).startRecord("2");
81-
ordered.verify(receiver).literal("product", "cCX");
82-
ordered.verify(receiver).literal("product", "dCX");
83-
ordered.verify(receiver).literal("product", "cDX");
84-
ordered.verify(receiver).literal("product", "dDX");
85-
ordered.verify(receiver).literal("product", "cCY");
86-
ordered.verify(receiver).literal("product", "dCY");
87-
ordered.verify(receiver).literal("product", "cDY");
88-
ordered.verify(receiver).literal("product", "dDY");
89-
ordered.verify(receiver).endRecord();
90-
ordered.verifyNoMoreInteractions();
91-
}
92-
93-
@Test
94-
public void shouldOnlyEmitTriplesWithMoreThanMinNValues() {
95-
metamorph = InlineMorph.in(this)
96-
.with("<rules>")
97-
.with(" <tuples name='product' minN='3'>")
98-
.with(" <data source='1' />")
99-
.with(" <data source='3' />")
100-
.with(" <data source='2' />")
101-
.with(" </tuples>")
102-
.with("</rules>")
103-
.createConnectedTo(receiver);
104-
105-
metamorph.startRecord("1");
106-
metamorph.literal("1", "a");
107-
metamorph.literal("1", "b");
108-
metamorph.literal("2", "A");
109-
metamorph.literal("2", "B");
110-
metamorph.endRecord();
111-
metamorph.startRecord("2");
112-
metamorph.literal("3", "X");
113-
metamorph.literal("1", "c");
114-
metamorph.literal("1", "d");
115-
metamorph.literal("2", "C");
116-
metamorph.literal("3", "Y");
117-
metamorph.literal("2", "D");
118-
metamorph.endRecord();
119-
120-
final InOrder ordered = inOrder(receiver);
121-
ordered.verify(receiver).startRecord("1");
122-
ordered.verify(receiver).endRecord();
123-
ordered.verify(receiver).startRecord("2");
124-
ordered.verify(receiver).literal("product", "cCX");
125-
ordered.verify(receiver).literal("product", "dCX");
126-
ordered.verify(receiver).literal("product", "cDX");
127-
ordered.verify(receiver).literal("product", "dDX");
128-
ordered.verify(receiver).literal("product", "cCY");
129-
ordered.verify(receiver).literal("product", "dCY");
130-
ordered.verify(receiver).literal("product", "cDY");
131-
ordered.verify(receiver).literal("product", "dDY");
132-
ordered.verify(receiver).endRecord();
133-
ordered.verifyNoMoreInteractions();
134-
}
135-
136-
@Test
137-
public void shouldEmitTuplesWithMinNIfNotAllStatementsFired() {
138-
metamorph = InlineMorph.in(this)
139-
.with("<rules>")
140-
.with(" <tuples name='product' minN='1'>")
141-
.with(" <data source='1' />")
142-
.with(" <data source='3' />")
143-
.with(" <data source='2' />")
144-
.with(" </tuples>")
145-
.with("</rules>")
146-
.createConnectedTo(receiver);
147-
148-
metamorph.startRecord("1");
149-
metamorph.literal("1", "a");
150-
metamorph.literal("1", "b");
151-
metamorph.endRecord();
152-
153-
final InOrder ordered = inOrder(receiver);
154-
ordered.verify(receiver).startRecord("1");
155-
ordered.verify(receiver).literal("product", "a");
156-
ordered.verify(receiver).literal("product", "b");
157-
ordered.verify(receiver).endRecord();
158-
ordered.verifyNoMoreInteractions();
159-
}
35+
@Rule
36+
public final MockitoRule mockitoRule = MockitoJUnit.rule();
37+
38+
@Mock
39+
private StreamReceiver receiver;
40+
41+
@Test
42+
public void shouldEmitTwoAndThreeTuples() {
43+
assertMorph(receiver,
44+
"<rules>" +
45+
" <tuples name='product'>" +
46+
" <data source='1' />" +
47+
" <data source='3' />" +
48+
" <data source='2' />" +
49+
" </tuples>" +
50+
"</rules>",
51+
i -> {
52+
i.startRecord("1");
53+
i.literal("1", "a");
54+
i.literal("1", "b");
55+
i.literal("2", "A");
56+
i.literal("2", "B");
57+
i.endRecord();
58+
i.startRecord("2");
59+
i.literal("3", "X");
60+
i.literal("1", "c");
61+
i.literal("1", "d");
62+
i.literal("2", "C");
63+
i.literal("3", "Y");
64+
i.literal("2", "D");
65+
i.endRecord();
66+
},
67+
o -> {
68+
o.get().startRecord("1");
69+
o.get().literal("product", "aA");
70+
o.get().literal("product", "bA");
71+
o.get().literal("product", "aB");
72+
o.get().literal("product", "bB");
73+
o.get().endRecord();
74+
o.get().startRecord("2");
75+
o.get().literal("product", "cCX");
76+
o.get().literal("product", "dCX");
77+
o.get().literal("product", "cDX");
78+
o.get().literal("product", "dDX");
79+
o.get().literal("product", "cCY");
80+
o.get().literal("product", "dCY");
81+
o.get().literal("product", "cDY");
82+
o.get().literal("product", "dDY");
83+
o.get().endRecord();
84+
}
85+
);
86+
}
87+
88+
@Test
89+
public void shouldOnlyEmitTriplesWithMoreThanMinNValues() {
90+
assertMorph(receiver,
91+
"<rules>" +
92+
" <tuples name='product' minN='3'>" +
93+
" <data source='1' />" +
94+
" <data source='3' />" +
95+
" <data source='2' />" +
96+
" </tuples>" +
97+
"</rules>",
98+
i -> {
99+
i.startRecord("1");
100+
i.literal("1", "a");
101+
i.literal("1", "b");
102+
i.literal("2", "A");
103+
i.literal("2", "B");
104+
i.endRecord();
105+
i.startRecord("2");
106+
i.literal("3", "X");
107+
i.literal("1", "c");
108+
i.literal("1", "d");
109+
i.literal("2", "C");
110+
i.literal("3", "Y");
111+
i.literal("2", "D");
112+
i.endRecord();
113+
},
114+
o -> {
115+
o.get().startRecord("1");
116+
o.get().endRecord();
117+
o.get().startRecord("2");
118+
o.get().literal("product", "cCX");
119+
o.get().literal("product", "dCX");
120+
o.get().literal("product", "cDX");
121+
o.get().literal("product", "dDX");
122+
o.get().literal("product", "cCY");
123+
o.get().literal("product", "dCY");
124+
o.get().literal("product", "cDY");
125+
o.get().literal("product", "dDY");
126+
o.get().endRecord();
127+
}
128+
);
129+
}
130+
131+
@Test
132+
public void shouldEmitTuplesWithMinNIfNotAllStatementsFired() {
133+
assertMorph(receiver,
134+
"<rules>" +
135+
" <tuples name='product' minN='1'>" +
136+
" <data source='1' />" +
137+
" <data source='3' />" +
138+
" <data source='2' />" +
139+
" </tuples>" +
140+
"</rules>",
141+
i -> {
142+
i.startRecord("1");
143+
i.literal("1", "a");
144+
i.literal("1", "b");
145+
i.endRecord();
146+
},
147+
o -> {
148+
o.get().startRecord("1");
149+
o.get().literal("product", "a");
150+
o.get().literal("product", "b");
151+
o.get().endRecord();
152+
}
153+
);
154+
}
160155

161156
}

0 commit comments

Comments
 (0)