4 package jp.osdn.jindolf.parser.content;
6 import io.bitbucket.olyutorskii.jiocema.DecodeNotifier;
7 import java.io.InputStream;
8 import org.junit.After;
9 import org.junit.AfterClass;
10 import org.junit.Before;
11 import org.junit.BeforeClass;
12 import org.junit.Test;
14 import static org.junit.Assert.*;
19 public class SjisNotifierTest {
23 public SjisNotifierTest() {
27 public static void setUpClass() {
31 public static void tearDownClass() {
39 public void tearDown() {
43 public void testConstructor() throws Exception{
44 DecodeNotifier decoder;
46 decoder = new SjisNotifier();
47 assert decoder == decoder;
49 decoder = new SjisNotifier(2, 2);
50 assert decoder == decoder;
53 decoder = new SjisNotifier(1, 2);
55 }catch(IllegalArgumentException e){
56 assertEquals("input buffer length must be 2 or more for Shift_JIS", e.getMessage());
60 decoder = new SjisNotifier(2, 1);
62 }catch(IllegalArgumentException e){
63 assertEquals("output buffer length must be 2 or more for surrogate pair", e.getMessage());
66 assert decoder == decoder;
72 public void testJisX0201() throws Exception{
73 DecodeNotifier decoder;
77 decoder = new SjisNotifier();
79 lst = new TestListenerRW();
80 decoder.setCharDecodeListener(lst);
82 // test JISX0201 ASCII decoding
85 is = Bseq.byteStream(0x00, 0x1f, 0x20, 0x21, 0x7f);
87 assertEquals("[ST][RW]001f20217f[CH]\u0000\u001f\u0020\u0021\u007f[EN]", lst.toString());
89 // test JISX0201 Hankaku-Katakana decoding
92 is = Bseq.byteStream(0xa1, 0xb1, 0xdf);
94 assertEquals("[ST][RW]a1b1df[CH]\uff61\uff71\uff9f[EN]", lst.toString());
100 public void testJisX0208() throws Exception{
101 DecodeNotifier decoder;
105 decoder = new SjisNotifier();
107 lst = new TestListenerRW();
108 decoder.setCharDecodeListener(lst);
110 // test JISX0208 ASCII decoding
113 is = Bseq.byteStream(0x88, 0x9f, 0xea, 0xa4);
115 assertEquals("[ST][RW]889feaa4[CH]\u4e9c\u7199[EN]", lst.toString());
121 public void testInvalid1st() throws Exception{
122 DecodeNotifier decoder;
126 decoder = new SjisNotifier();
128 lst = new TestListenerRW();
129 decoder.setCharDecodeListener(lst);
131 // test invalid 1st character decoding
132 // 0x80, 0xa0, 0xf0 - 0xff
135 is = Bseq.byteStream(0x80);
137 assertEquals("[ST][ME]80[EN]", lst.toString());
140 is = Bseq.byteStream(0x80, 0x41);
142 assertEquals("[ST][ME]80[RW]41[CH]A[EN]", lst.toString());
146 is = Bseq.byteStream(0x80, 0x82, 0xa0);
148 assertEquals("[ST][ME]80[RW]82a0[CH]\u3042[EN]", lst.toString());
151 is = Bseq.byteStream(0x80, 0x80);
153 assertEquals("[ST][ME]80[ME]80[EN]", lst.toString());
156 is = Bseq.byteStream(0xa0);
158 assertEquals("[ST][ME]a0[EN]", lst.toString());
161 is = Bseq.byteStream(0xf0);
163 assertEquals("[ST][ME]f0[EN]", lst.toString());
166 is = Bseq.byteStream(0xff);
168 assertEquals("[ST][ME]ff[EN]", lst.toString());
171 is = Bseq.byteStream(0xfd, 0xfe, 0xff);
173 assertEquals("[ST][ME]fd[ME]fe[ME]ff[EN]", lst.toString());
176 is = Bseq.byteStream(0xff, 0x32);
178 assertEquals("[ST][ME]ff[RW]32[CH]2[EN]", lst.toString());
181 is = Bseq.byteStream(0x41, 0x42, 0x43, 0xff, 0x32);
183 assertEquals("[ST][RW]414243[CH]ABC[ME]ff[RW]32[CH]2[EN]", lst.toString());
189 public void testInvalid2nd() throws Exception{
190 DecodeNotifier decoder;
194 decoder = new SjisNotifier();
196 lst = new TestListenerRW();
197 decoder.setCharDecodeListener(lst);
199 // test invalid 2nd character decoding
200 // 0x00 - 0x3f, 0x7f, 0xfd - 0xff
203 is = Bseq.byteStream(0x81, 0x00);
205 assertEquals("[ST][ME]81[RW]00[CH]\u0000[EN]", lst.toString());
208 is = Bseq.byteStream(0x81, 0x3f);
210 assertEquals("[ST][ME]81[RW]3f[CH]\u003f[EN]", lst.toString());
213 is = Bseq.byteStream(0x81, 0x7f);
215 // assertEquals("[ST][RW]817f[CH]\u00f7[EN]", lst.toString()); // 1.7
216 // assertEquals("[ST][ME]81[RW]7f[CH]\u007f[EN]", lst.toString()); // 1.8
219 is = Bseq.byteStream(0x81, 0xfd);
221 assertEquals("[ST][ME]81[ME]fd[EN]", lst.toString());
224 is = Bseq.byteStream(0x81, 0xfe);
226 assertEquals("[ST][ME]81[ME]fe[EN]", lst.toString());
229 is = Bseq.byteStream(0x81, 0xff);
231 assertEquals("[ST][ME]81[ME]ff[EN]", lst.toString());
237 public void testUnmap() throws Exception{
238 DecodeNotifier decoder;
242 decoder = new SjisNotifier(4, 4);
244 lst = new TestListenerRW();
245 decoder.setCharDecodeListener(lst);
250 is = Bseq.byteStream(0x85, 0x40);
252 assertEquals("[ST][UE]8540[EN]", lst.toString());
255 is = Bseq.byteStream(0x41, 0x42, 0x43, 0x85, 0x40);
257 assertEquals("[ST][RW]414243[CH]ABC[UE]8540[EN]", lst.toString());
263 public void testSomeMethod() throws Exception{
264 DecodeNotifier decoder;
270 decoder = new SjisNotifier();
272 lst = new TestListenerRW();
273 decoder.setCharDecodeListener(lst);
276 is = Bseq.byteStream();
278 assertEquals("[ST][EN]", lst.toString());
281 is = Bseq.byteStream(0x41);
283 assertEquals("[ST][RW]41[CH]A[EN]", lst.toString());