Mercurial > hg > Members > sugi > MessagePack-java
comparison src/test/java/org/msgpack/unpacker/TestMalformedEncoding.java @ 0:cb825acd883a
first commit
author | sugi |
---|---|
date | Sat, 18 Oct 2014 15:06:15 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:cb825acd883a |
---|---|
1 package org.msgpack.unpacker; | |
2 | |
3 import static org.junit.Assert.assertArrayEquals; | |
4 import static org.junit.Assert.assertEquals; | |
5 import static org.junit.Assert.fail; | |
6 | |
7 import java.io.ByteArrayInputStream; | |
8 import java.io.ByteArrayOutputStream; | |
9 import java.nio.charset.CharacterCodingException; | |
10 | |
11 import org.junit.Test; | |
12 import org.msgpack.MessagePack; | |
13 import org.msgpack.MessageTypeException; | |
14 import org.msgpack.packer.Packer; | |
15 import org.msgpack.packer.BufferPacker; | |
16 import org.msgpack.unpacker.Unpacker; | |
17 import org.msgpack.unpacker.Converter; | |
18 import org.msgpack.type.RawValue; | |
19 import org.msgpack.type.ValueFactory; | |
20 import org.msgpack.util.json.JSON; | |
21 | |
22 public class TestMalformedEncoding { | |
23 private byte[][] malforms = new byte[][] { { (byte) 0xc0, (byte) 0xaf }, // '/' | |
24 // in | |
25 // 2 | |
26 // bytes | |
27 { (byte) 0xe0, (byte) 0x80, (byte) 0xaf } // '/' in 3 bytes | |
28 }; | |
29 | |
30 @Test | |
31 public void testRawValueGetString() throws Exception { | |
32 for (byte[] malform : malforms) { | |
33 RawValue r = ValueFactory.createRawValue(malform); | |
34 try { | |
35 r.getString(); | |
36 fail("no exception"); | |
37 } catch (MessageTypeException expected) { | |
38 } | |
39 byte[] a = r.getByteArray(); | |
40 assertArrayEquals(malform, a); | |
41 } | |
42 } | |
43 | |
44 @Test | |
45 public void testBufferUnpackerUnpackString() throws Exception { | |
46 for (byte[] malform : malforms) { | |
47 MessagePack msgpack = new MessagePack(); | |
48 BufferPacker pk = msgpack.createBufferPacker(); | |
49 pk.write(malform); | |
50 byte[] b = pk.toByteArray(); | |
51 Unpacker u = msgpack.createBufferUnpacker(b); | |
52 try { | |
53 u.readString(); | |
54 fail("no exception"); | |
55 } catch (MessageTypeException expected) { | |
56 } | |
57 byte[] a = u.readByteArray(); | |
58 assertArrayEquals(malform, a); | |
59 } | |
60 } | |
61 | |
62 @Test | |
63 public void testUnpackerUnpackString() throws Exception { | |
64 for (byte[] malform : malforms) { | |
65 MessagePack msgpack = new MessagePack(); | |
66 BufferPacker pk = msgpack.createBufferPacker(); | |
67 pk.write(malform); | |
68 byte[] b = pk.toByteArray(); | |
69 Unpacker u = msgpack.createUnpacker(new ByteArrayInputStream(b)); | |
70 try { | |
71 u.readString(); | |
72 fail("no exception"); | |
73 } catch (MessageTypeException expected) { | |
74 } | |
75 byte[] a = u.readByteArray(); | |
76 assertArrayEquals(malform, a); | |
77 } | |
78 } | |
79 | |
80 @Test | |
81 public void testConverterUnpackString() throws Exception { | |
82 for (byte[] malform : malforms) { | |
83 MessagePack msgpack = new MessagePack(); | |
84 RawValue r = ValueFactory.createRawValue(malform); | |
85 Converter u = new Converter(msgpack, r); | |
86 try { | |
87 u.readString(); | |
88 fail("no exception"); | |
89 } catch (MessageTypeException expected) { | |
90 } | |
91 byte[] a = u.readByteArray(); | |
92 assertArrayEquals(malform, a); | |
93 } | |
94 } | |
95 | |
96 @Test | |
97 public void testJSONPackerWriteString() throws Exception { | |
98 for (byte[] malform : malforms) { | |
99 JSON json = new JSON(); | |
100 Packer pk = json.createPacker(new ByteArrayOutputStream()); | |
101 try { | |
102 pk.write(malform); | |
103 fail("no exception"); | |
104 } catch (CharacterCodingException expected) { | |
105 } | |
106 } | |
107 } | |
108 | |
109 @Test | |
110 public void testJSONBufferPackerWriteString() throws Exception { | |
111 for (byte[] malform : malforms) { | |
112 JSON json = new JSON(); | |
113 Packer pk = json.createBufferPacker(); | |
114 try { | |
115 pk.write(malform); | |
116 fail("no exception"); | |
117 } catch (CharacterCodingException expected) { | |
118 } | |
119 } | |
120 } | |
121 | |
122 @Test | |
123 public void testValueToString() throws Exception { | |
124 for (byte[] malform : malforms) { | |
125 RawValue r = ValueFactory.createRawValue(malform); | |
126 String str = r.toString(); | |
127 // malformed bytes will be ignored | |
128 assertEquals("\"\"", str); | |
129 } | |
130 } | |
131 } |