OSDN Git Service

remove MIN_INBUFSZ check because Inf-loop auto test
authorOlyutorskii <olyutorskii@users.osdn.me>
Thu, 1 Jun 2017 03:53:34 +0000 (12:53 +0900)
committerOlyutorskii <olyutorskii@users.osdn.me>
Thu, 1 Jun 2017 03:53:34 +0000 (12:53 +0900)
src/main/java/jp/sourceforge/jindolf/parser/SjisDecoder.java
src/test/java/jp/sourceforge/jindolf/parser/SjisDecoderTest.java

index 6a29a26..eb19be5 100644 (file)
@@ -26,13 +26,6 @@ import java.nio.charset.CoderResult;
  */
 public class SjisDecoder extends StreamDecoder{
 
-    /** 入力バッファに必要な最小サイズ(={@value})。 */
-    public static final int MIN_INBUFSZ = ShiftJis.MAX_BYTES_PER_CHAR * 2 + 1;
-
-    static{
-        assert MIN_INBUFSZ <= BYTEBUF_DEFSZ;
-    }
-
     /**
      * コンストラクタ。
      */
@@ -51,9 +44,6 @@ public class SjisDecoder extends StreamDecoder{
     public SjisDecoder(int inbufSz, int outbufSz)
             throws IllegalArgumentException{
         super(ShiftJis.CHARSET.newDecoder(), inbufSz, outbufSz);
-        if(inbufSz < MIN_INBUFSZ){
-            throw new IllegalArgumentException();
-        }
         return;
     }
 
index f3b9f2c..3074561 100644 (file)
@@ -114,6 +114,38 @@ public class SjisDecoderTest {
         sjd.decode(is);
         assertEquals("[ST][CH]ABC[EN]", handler.toString());
 
+        sjd = new SjisDecoder(10, 2);
+        sjd.setDecodeHandler(handler);
+        is = byteIs("414243");
+        handler.clear();
+        sjd.decode(is);
+        assertEquals("[ST][CH]AB[CH]C[EN]", handler.toString());
+
+        sjd = new SjisDecoder(2, 10);
+        sjd.setDecodeHandler(handler);
+        is = byteIs("82a0:82a1");
+        handler.clear();
+        sjd.decode(is);
+        assertEquals("[ST][CH]あぃ[EN]", handler.toString());
+
+        sjd = new SjisDecoder(2, 10);
+        sjd.setDecodeHandler(handler);
+        is = byteIs("41:82a0:82a1");
+        handler.clear();
+        sjd.decode(is);
+        assertEquals("[ST][CH]Aあぃ[EN]", handler.toString());
+
+        sjd = new SjisDecoder(1, 10);
+        sjd.setDecodeHandler(handler);
+        is = byteIs("82a0:82a1");
+        handler.clear();
+        try{
+            sjd.decode(is);
+            fail();
+        }catch(DecodeException e){
+            // GOOD
+        }
+
         return;
     }