1 /**
2  *  ServingXML
3  *
4  *  Copyright (C) 2006  Daniel Parker
5  *    daniel.parker@servingxml.com
6  *
7  * Licensed under the Apache License, Version 2.0 (the "License");
8  * you may not use this file except in compliance with the License.
9  * You may obtain a copy of the License at
10  *
11  * http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  *
19  **/
20 
21 package com.servingxml.components.flatfile.scanner.characters;
22 
23 import java.util.ArrayList;
24 import java.util.List;
25 import java.util.zip.CRC32;
26 import java.nio.charset.Charset;
27 
28 import com.servingxml.components.flatfile.RecordInput;
29 import com.servingxml.components.flatfile.layout.FlatRecordReceiverAdaptor;
30 import com.servingxml.components.flatfile.options.Delimiter;
31 import com.servingxml.components.flatfile.options.RepeatDelimiter;
32 import com.servingxml.components.flatfile.options.SegmentDelimiter;
33 import com.servingxml.components.flatfile.options.FieldDelimiter;
34 import com.servingxml.components.flatfile.options.NameDelimiter;
35 import com.servingxml.components.flatfile.options.FlatFileOptionsImpl;
36 import com.servingxml.util.record.Record;
37 
38 import junit.framework.TestCase;
39 
40 public class CharRecordInputTest extends TestCase {
41 
CharRecordInputTest(String name)42   public CharRecordInputTest(String name) {
43     super(name);
44   }
45 
setUp()46   public void setUp() throws Exception {
47   }
48 
xtestStudents()49   public void xtestStudents() throws Exception {
50     System.out.println(getClass().getName()+".testStudents");
51     String inputString="JANE^ENGL^C-~MATH^A+|1972^BLUE^CHICAGO^IL~ATLANTA^GA";
52     char[] input = inputString.toCharArray();
53 
54     Delimiter repeatDelimiter = new RepeatDelimiter("^");
55     Delimiter segmentDelimiter = new SegmentDelimiter("|");
56 
57     Delimiter[] repeatDelimiters = new Delimiter[]{repeatDelimiter};
58     Delimiter[] segmentDelimiters = new Delimiter[]{segmentDelimiter};
59 
60     FlatFileOptionsImpl flatFileOptions = new FlatFileOptionsImpl(Charset.defaultCharset(),true,false);
61     flatFileOptions.setCountPositionsInBytes(false);
62     flatFileOptions.setRepeatDelimiters(repeatDelimiters);
63     flatFileOptions.setSegmentDelimiters(segmentDelimiters);
64 
65     RecordInput recordInput = new CharRecordInput(input,0,input.length,Charset.defaultCharset());
66 
67   }
68 
xtestInvoice()69   public void xtestInvoice() throws Exception {
70     String inputString="12|2007-02-02|DocType|} "
71   + "SndId|SndName|SndAddress|SndZip|} "
72   + "RecId|RecName|RecAddress|RecZip|} "
73   + "~ "
74   + "1|Item 1|2|Kg|150|300|} "
75   + "2|Item 2|2|Kg|350|700|} "
76   + "3|Item 3|1|$|50|50|} "
77   + "4|Item 4|10|Unt|30|100|} "
78   + "~ "
79   + "1|Ref 1|Doc 1|Text|} "
80   + "2|Ref 2|Doc 2|Text|} "
81   + "~ "
82   + "1|Disc 1|Item 1|} "
83   + "2|Disc 2|Item 2|} "
84   + "3|Disc 3|Item 3|} "
85   + "~ "
86   + "Code a|Value 1|} "
87   + "Code z|Value 3|} "
88   + "Code x|Value 2|} "
89   + "Code w|Value 2|} "
90   + "Code y|Value 1|}"
91   + "~";
92 
93     char[] input = inputString.toCharArray();
94 
95     Delimiter repeatDelimiter = new RepeatDelimiter("}");
96     Delimiter segmentDelimiter = new SegmentDelimiter("~");
97 
98     Delimiter[] repeatDelimiters = new Delimiter[]{repeatDelimiter};
99     Delimiter[] segmentDelimiters = new Delimiter[]{segmentDelimiter};
100 
101     FlatFileOptionsImpl flatFileOptions = new FlatFileOptionsImpl(Charset.defaultCharset(),true,false);
102     flatFileOptions.setCountPositionsInBytes(false);
103     flatFileOptions.setRepeatDelimiters(repeatDelimiters);
104     flatFileOptions.setSegmentDelimiters(segmentDelimiters);
105     flatFileOptions.setOmitFinalRepeatDelimiter(false);
106 
107     RecordInput recordInput = new CharRecordInput(input,0,input.length,Charset.defaultCharset());
108 
109   }
110 
xtestNested()111   public void xtestNested() throws Exception {
112     System.out.println("testNested");
113 
114     String inputString="{a0 b0{a1 b1{a2 b2} {c2 d2}}}";
115     char[] input = inputString.toCharArray();
116 
117     Delimiter repeatDelimiter = new RepeatDelimiter("{","}");
118 
119     Delimiter[] repeatDelimiters = new Delimiter[]{repeatDelimiter};
120 
121     FlatFileOptionsImpl flatFileOptions = new FlatFileOptionsImpl(Charset.defaultCharset(),true,false);
122     flatFileOptions.setCountPositionsInBytes(false);
123     flatFileOptions.setRepeatDelimiters(repeatDelimiters);
124 
125     RecordInput recordInput = new CharRecordInput(input,0,input.length,Charset.defaultCharset());
126 
127   }
128 
xtestNoSegmentDelimiters()129   public void xtestNoSegmentDelimiters() throws Exception {
130     System.out.println("testNoSegmentDelimiters");
131 
132     String inputString="JANE^ENGL^C-~MATH^A+";
133     char[] input = inputString.toCharArray();
134 
135     Delimiter repeatDelimiter = new RepeatDelimiter("^");
136 
137     Delimiter[] repeatDelimiters = new Delimiter[]{repeatDelimiter};
138 
139     FlatFileOptionsImpl flatFileOptions = new FlatFileOptionsImpl(Charset.defaultCharset(),true,false);
140     flatFileOptions.setCountPositionsInBytes(false);
141     flatFileOptions.setRepeatDelimiters(repeatDelimiters);
142 
143     RecordInput recordInput = new CharRecordInput(input,0,input.length,Charset.defaultCharset());
144 
145   }
146 
xtestRepeatingBracketed()147   public void xtestRepeatingBracketed() throws Exception {
148     String inputString="{a}{b}{c}{d}";
149     char[] input = inputString.toCharArray();
150 
151     Delimiter repeatDelimiter = new RepeatDelimiter("{","}");
152 
153     Delimiter[] repeatDelimiters = new Delimiter[]{repeatDelimiter};
154 
155     FlatFileOptionsImpl flatFileOptions = new FlatFileOptionsImpl(Charset.defaultCharset(),true,false);
156     flatFileOptions.setCountPositionsInBytes(false);
157     flatFileOptions.setRepeatDelimiters(repeatDelimiters);
158 
159     RecordInput recordInput = new CharRecordInput(input,0,input.length,Charset.defaultCharset());
160 
161   }
162 
xtestWrappedRepeatingBracketed()163   public void xtestWrappedRepeatingBracketed() throws Exception {
164     String inputString="{{a}{b}{c}{d}}";
165     char[] input = inputString.toCharArray();
166 
167     Delimiter segmentDelimiter = new SegmentDelimiter("{","}");
168     Delimiter repeatDelimiter = new RepeatDelimiter("{","}");
169 
170     Delimiter[] segmentDelimiters = new Delimiter[]{segmentDelimiter};
171     Delimiter[] repeatDelimiters = new Delimiter[]{repeatDelimiter};
172 
173     FlatFileOptionsImpl flatFileOptions = new FlatFileOptionsImpl(Charset.defaultCharset(),true,false);
174     flatFileOptions.setCountPositionsInBytes(false);
175     flatFileOptions.setRepeatDelimiters(repeatDelimiters);
176     flatFileOptions.setSegmentDelimiters(segmentDelimiters);
177 
178     RecordInput recordInput = new CharRecordInput(input,0,input.length,Charset.defaultCharset());
179 
180   }
181 
xtestSegmentDelimiter()182   public void xtestSegmentDelimiter() throws Exception {
183     String inputString="{{a}{b}{c}{d}}";
184     char[] input = inputString.toCharArray();
185 
186     Delimiter segmentDelimiter = new SegmentDelimiter("{","}");
187 
188     Delimiter[] segmentDelimiters = new Delimiter[]{segmentDelimiter};
189 
190     FlatFileOptionsImpl flatFileOptions = new FlatFileOptionsImpl(Charset.defaultCharset(),true,false);
191     flatFileOptions.setCountPositionsInBytes(false);
192     flatFileOptions.setSegmentDelimiters(segmentDelimiters);
193 
194     RecordInput recordInput = new CharRecordInput(input,0,input.length,Charset.defaultCharset());
195 
196     //assertTrue(recordInput.done());
197 
198   }
199 
testTransaction()200   public void testTransaction() throws Exception {
201     String inputString =
202 "TRAN:trantype=PRIN#origin=Toronto#"
203 + "{TRANREF:reftype=TREF#ref=1234567890123456B#}"
204 + "{TRANREF:reftype=FOTR#ref=1234567890123456#}"
205 + "{DRIVER:drivertype=OPER#drivercode=SELL#}"
206 + "{DRIVER:drivertype=STRM#drivercode=FOP#}"
207 + "{INSTR:instrtype=PINS#instrreftype=INT#instrref=PTEQTY1#qty=1000000#}"
208 + "{INSTR:instrtype=TCCY#instrreftype=ISO#instrref=USD#}"
209 + "{INSTR:instrtype=SINS#instrreftype=ISO#instrref=USD#}"
210 + "{PARTY:partytype=COMP#partyreftype=X3#partyref=CMP1#}"
211 + "{PARTY:partytype=SECP#partyreftype=X3#partyref=PTSECP1#}"
212 + "{DATE:datetype=TDAT#date=01-Jan-2007#}"
213 + "{DATE:datetype=VDAT#date=01-Jan-2007#}"
214 + "{CHARGE:chargetype=COMM#calctype=NONE#chargeamount=50.00#instrreftype=ISO#instrref=USD}"
215 + "{PRICE:ratetype=TPRC#price=4.9#multdiv=X1#pricetype=YP#}"
216 + "";
217     char[] input = inputString.toCharArray();
218 
219     Delimiter[] segmentDelimiters = new Delimiter[]{new SegmentDelimiter("{")};
220     Delimiter[] repeatDelimiters = new Delimiter[]{new RepeatDelimiter("{","}")};
221     Delimiter[] colonFieldDelimiters = new Delimiter[]{new FieldDelimiter(":")};
222     Delimiter[] poundFieldDelimiters = new Delimiter[]{new FieldDelimiter("#")};
223     Delimiter[] nameDelimiters = new Delimiter[]{new NameDelimiter("=")};
224 
225     FlatFileOptionsImpl baseFlatFileOptions = new FlatFileOptionsImpl(Charset.defaultCharset(),true,false);
226     baseFlatFileOptions.setCountPositionsInBytes(false);
227     baseFlatFileOptions.setRepeatDelimiters(repeatDelimiters);
228     baseFlatFileOptions.setNameDelimiters(nameDelimiters);
229 
230     FlatFileOptionsImpl flatFileOptions1 = new FlatFileOptionsImpl(baseFlatFileOptions);
231     flatFileOptions1.setFieldDelimiters(colonFieldDelimiters);
232 
233     FlatFileOptionsImpl flatFileOptions2 = new FlatFileOptionsImpl(baseFlatFileOptions);
234     flatFileOptions2.setFieldDelimiters(colonFieldDelimiters);
235     flatFileOptions2.setSegmentDelimiters(segmentDelimiters);
236 
237     FlatFileOptionsImpl flatFileOptions3 = new FlatFileOptionsImpl(baseFlatFileOptions);
238     flatFileOptions3.setFieldDelimiters(poundFieldDelimiters);
239 
240     RecordInput recordInput = new CharRecordInput(input, 0, input.length,
241                                                            Charset.defaultCharset());
242     String s;
243     RecordInput segmentInput;
244   }
245 }
246 
247 
248 
249 
250