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