35
35
public final class PicaItemSplitterTest {
36
36
37
37
private static final String RECORD_ID = "1" ;
38
- private static final String ENTITY = "001@" ;
39
- private static final String LITERAL1 = "a" ;
40
- private static final String LITERAL2 = "b" ;
38
+ private static final String ENTITY = "001B" ;
39
+ private static final String LITERAL = "a" ;
41
40
private static final String VALUE = "val" ;
42
- private static final String ENTITY_WITH_SUFFIX1 = "002/01" ;
43
- private static final String ENTITY_WITH_SUFFIX2 = "002/02" ;
44
- private static final String ENTITY_WITH_SUFFIX_STRIPPED = "002" ;
41
+ private static final String ITEM_MARKER_ENTITY = "101@" ;
42
+ private static final String ENTITY_WITH_SUFFIX1 = "002A/01" ;
43
+ private static final String ENTITY_WITH_SUFFIX2 = "002A/02" ;
44
+ private static final String ENTITY_WITH_SUFFIX_STRIPPED = "002A" ;
45
45
46
46
private PicaItemSplitter picaItemSplitter ;
47
47
@@ -59,93 +59,142 @@ public void setup() {
59
59
public void cleanup () {
60
60
picaItemSplitter .closeStream ();
61
61
}
62
-
62
+
63
63
@ Test
64
- public void testShouldSplitAtFirstEntityWithSuffix () {
64
+ public void testShouldSplitAtItemMarkerEntities () {
65
65
picaItemSplitter .startRecord (RECORD_ID );
66
- picaItemSplitter .startEntity (ENTITY );
67
- picaItemSplitter .literal (LITERAL1 , VALUE );
68
- picaItemSplitter .endEntity ();
69
- picaItemSplitter .startEntity (ENTITY_WITH_SUFFIX1 );
70
- picaItemSplitter .literal (LITERAL2 , VALUE );
71
- picaItemSplitter .endEntity ();
66
+ emitEntity ();
67
+ emitItemMarkerEntity ();
68
+ emitEntity ();
69
+ emitItemMarkerEntity ();
70
+ emitEntity ();
72
71
picaItemSplitter .endRecord ();
73
72
74
73
final InOrder ordered = inOrder (receiver );
75
74
ordered .verify (receiver ).startRecord (RECORD_ID );
76
- ordered .verify (receiver ).startEntity (ENTITY );
77
- ordered .verify (receiver ).literal (LITERAL1 , VALUE );
78
- ordered .verify (receiver ).endEntity ();
75
+ verifyEntity (ordered );
79
76
ordered .verify (receiver ).endRecord ();
80
77
ordered .verify (receiver ).startRecord (RECORD_ID );
81
- ordered .verify (receiver ).startEntity (ENTITY_WITH_SUFFIX_STRIPPED );
82
- ordered .verify (receiver ).literal (LITERAL2 , VALUE );
83
- ordered .verify (receiver ).endEntity ();
78
+ verifyEntity (ordered );
79
+ ordered .verify (receiver ).endRecord ();
80
+ ordered .verify (receiver ).startRecord (RECORD_ID );
81
+ verifyEntity (ordered );
84
82
ordered .verify (receiver ).endRecord ();
85
83
}
86
84
87
85
@ Test
88
- public void testShouldNotSplitIfTheFirstEntityHasASuffix () {
86
+ public void testShouldCreateEmptyRecordsIfNothingBeforeOrAfterItemMarkers () {
89
87
picaItemSplitter .startRecord (RECORD_ID );
90
- picaItemSplitter . startEntity ( ENTITY_WITH_SUFFIX1 );
91
- picaItemSplitter . literal ( LITERAL1 , VALUE );
92
- picaItemSplitter .endEntity ();
93
- picaItemSplitter . endRecord ();
88
+ emitItemMarkerEntity ( );
89
+ emitItemMarkerEntity ( );
90
+ picaItemSplitter .endRecord ();
91
+
94
92
95
93
final InOrder ordered = inOrder (receiver );
96
94
ordered .verify (receiver ).startRecord (RECORD_ID );
97
- ordered .verify (receiver ).startEntity (ENTITY_WITH_SUFFIX_STRIPPED );
98
- ordered .verify (receiver ).literal (LITERAL1 , VALUE );
99
- ordered .verify (receiver ).endEntity ();
95
+ ordered .verify (receiver ).endRecord ();
96
+ ordered .verify (receiver ).startRecord (RECORD_ID );
97
+ ordered .verify (receiver ).endRecord ();
98
+ ordered .verify (receiver ).startRecord (RECORD_ID );
100
99
ordered .verify (receiver ).endRecord ();
101
100
}
102
101
103
102
@ Test
104
- public void testShouldSplitAtFirstEntityWithoutSuffix () {
103
+ public void testShouldRemoveSuffix () {
105
104
picaItemSplitter .startRecord (RECORD_ID );
106
- picaItemSplitter .startEntity (ENTITY_WITH_SUFFIX1 );
107
- picaItemSplitter .literal (LITERAL2 , VALUE );
108
- picaItemSplitter .endEntity ();
109
- picaItemSplitter .startEntity (ENTITY );
110
- picaItemSplitter .literal (LITERAL1 , VALUE );
111
- picaItemSplitter .endEntity ();
105
+ emitItemMarkerEntity ();
106
+ emitSuffixedEntity1 ();
112
107
picaItemSplitter .endRecord ();
113
108
114
109
final InOrder ordered = inOrder (receiver );
115
110
ordered .verify (receiver ).startRecord (RECORD_ID );
116
- ordered .verify (receiver ).startEntity (ENTITY_WITH_SUFFIX_STRIPPED );
117
- ordered .verify (receiver ).literal (LITERAL2 , VALUE );
118
- ordered .verify (receiver ).endEntity ();
119
- ordered .verify (receiver ).endRecord ();
111
+ ordered .verify (receiver ).endRecord ();
120
112
ordered .verify (receiver ).startRecord (RECORD_ID );
121
- ordered .verify (receiver ).startEntity (ENTITY );
122
- ordered .verify (receiver ).literal (LITERAL1 , VALUE );
123
- ordered .verify (receiver ).endEntity ();
113
+ verifySuffixedEntityStripped (ordered );
124
114
ordered .verify (receiver ).endRecord ();
125
115
}
126
116
127
117
@ Test
128
118
public void testShouldSplitWhenSuffixChanges () {
129
119
picaItemSplitter .startRecord (RECORD_ID );
130
- picaItemSplitter .startEntity (ENTITY_WITH_SUFFIX1 );
131
- picaItemSplitter .literal (LITERAL1 , VALUE );
132
- picaItemSplitter .endEntity ();
133
- picaItemSplitter .startEntity (ENTITY_WITH_SUFFIX2 );
134
- picaItemSplitter .literal (LITERAL2 , VALUE );
135
- picaItemSplitter .endEntity ();
120
+ emitItemMarkerEntity ();
121
+ emitSuffixedEntity1 ();
122
+ emitSuffixedEntity2 ();
136
123
picaItemSplitter .endRecord ();
137
124
138
125
final InOrder ordered = inOrder (receiver );
139
126
ordered .verify (receiver ).startRecord (RECORD_ID );
140
- ordered .verify (receiver ).startEntity ( ENTITY_WITH_SUFFIX_STRIPPED );
141
- ordered .verify (receiver ).literal ( LITERAL1 , VALUE );
142
- ordered . verify ( receiver ). endEntity ( );
127
+ ordered .verify (receiver ).endRecord ( );
128
+ ordered .verify (receiver ).startRecord ( RECORD_ID );
129
+ verifySuffixedEntityStripped ( ordered );
143
130
ordered .verify (receiver ).endRecord ();
144
131
ordered .verify (receiver ).startRecord (RECORD_ID );
145
- ordered .verify (receiver ).startEntity (ENTITY_WITH_SUFFIX_STRIPPED );
146
- ordered .verify (receiver ).literal (LITERAL2 , VALUE );
147
- ordered .verify (receiver ).endEntity ();
132
+ verifySuffixedEntityStripped (ordered );
148
133
ordered .verify (receiver ).endRecord ();
149
134
}
135
+
136
+ @ Test
137
+ public void testShouldOnlySplitOnSuffixChangeAfterFirstItemMarkerEntity () {
138
+ picaItemSplitter .startRecord (RECORD_ID );
139
+ emitEntity ();
140
+ emitSuffixedEntity1 ();
141
+ emitSuffixedEntity2 ();
142
+ picaItemSplitter .endRecord ();
143
+
144
+ final InOrder ordered = inOrder (receiver );
145
+ ordered .verify (receiver ).startRecord (RECORD_ID );
146
+ verifyEntity (ordered );
147
+ verifySuffixedEntity1 (ordered );
148
+ verifySuffixedEntity2 (ordered );
149
+ ordered .verify (receiver ).endRecord ();
150
+ }
151
+
152
+ private void emitEntity () {
153
+ picaItemSplitter .startEntity (ENTITY );
154
+ picaItemSplitter .literal (LITERAL , VALUE );
155
+ picaItemSplitter .endEntity ();
156
+ }
157
+
158
+ private void emitSuffixedEntity1 () {
159
+ picaItemSplitter .startEntity (ENTITY_WITH_SUFFIX1 );
160
+ picaItemSplitter .literal (LITERAL , VALUE );
161
+ picaItemSplitter .endEntity ();
162
+ }
163
+
164
+ private void emitSuffixedEntity2 () {
165
+ picaItemSplitter .startEntity (ENTITY_WITH_SUFFIX2 );
166
+ picaItemSplitter .literal (LITERAL , VALUE );
167
+ picaItemSplitter .endEntity ();
168
+ }
169
+
170
+ private void emitItemMarkerEntity () {
171
+ picaItemSplitter .startEntity (ITEM_MARKER_ENTITY );
172
+ picaItemSplitter .literal (LITERAL , VALUE );
173
+ picaItemSplitter .endEntity ();
174
+ }
175
+
176
+ private void verifyEntity (final InOrder ordered ) {
177
+ ordered .verify (receiver ).startEntity (ENTITY );
178
+ ordered .verify (receiver ).literal (LITERAL , VALUE );
179
+ ordered .verify (receiver ).endEntity ();
180
+ }
181
+
182
+ private void verifySuffixedEntity1 (final InOrder ordered ) {
183
+ ordered .verify (receiver ).startEntity (ENTITY_WITH_SUFFIX1 );
184
+ ordered .verify (receiver ).literal (LITERAL , VALUE );
185
+ ordered .verify (receiver ).endEntity ();
186
+ }
187
+
188
+ private void verifySuffixedEntity2 (final InOrder ordered ) {
189
+ ordered .verify (receiver ).startEntity (ENTITY_WITH_SUFFIX2 );
190
+ ordered .verify (receiver ).literal (LITERAL , VALUE );
191
+ ordered .verify (receiver ).endEntity ();
192
+ }
193
+
194
+ private void verifySuffixedEntityStripped (final InOrder ordered ) {
195
+ ordered .verify (receiver ).startEntity (ENTITY_WITH_SUFFIX_STRIPPED );
196
+ ordered .verify (receiver ).literal (LITERAL , VALUE );
197
+ ordered .verify (receiver ).endEntity ();
198
+ }
150
199
151
200
}
0 commit comments