1 package net.sf.openrocket.communication;
3 import static org.junit.Assert.*;
5 import java.io.IOException;
6 import java.io.StringReader;
7 import java.util.Random;
11 public class CommunicationTest {
14 public void testIllegalInputUpdateParsing() throws IOException {
18 info = Communication.parseUpdateInput(new StringReader(""));
21 info = Communication.parseUpdateInput(new StringReader("vj\u00e4avdsads"));
24 info = Communication.parseUpdateInput(new StringReader("\u0000\u0001\u0002"));
27 info = Communication.parseUpdateInput(new StringReader("Version: 1.2"));
30 info = Communication.parseUpdateInput(new StringReader("Version: 1.2pre"));
33 info = Communication.parseUpdateInput(new StringReader("Version: 1.2.x"));
36 info = Communication.parseUpdateInput(new StringReader("\u0000\u0001\u0002"));
39 // Feed random bad input
40 Random rnd = new Random();
41 StringBuilder sb = new StringBuilder(10000);
42 for (int i=0; i<100; i++) {
43 int length = rnd.nextInt(10000);
44 sb.delete(0, sb.length());
45 for (int j=0; j<length; j++) {
46 sb.append((char)rnd.nextInt());
48 info = Communication.parseUpdateInput(new StringReader(sb.toString()));
57 public void testValidInputUpdateParsing() throws IOException {
61 info = Communication.parseUpdateInput(new StringReader("Version: 1.2.3"));
63 assertEquals("1.2.3", info.getLatestVersion());
64 assertEquals(0, info.getUpdates().size());
66 info = Communication.parseUpdateInput(new StringReader("Version: 1.2.3pre"));
68 assertEquals("1.2.3pre", info.getLatestVersion());
69 assertEquals(0, info.getUpdates().size());
71 info = Communication.parseUpdateInput(new StringReader("Version: 1.2.3-build-3"));
73 assertEquals("1.2.3-build-3", info.getLatestVersion());
74 assertEquals(0, info.getUpdates().size());
76 info = Communication.parseUpdateInput(new StringReader("Version: 1.2.3x\n\n"));
78 assertEquals("1.2.3x", info.getLatestVersion());
79 assertEquals(0, info.getUpdates().size());
81 info = Communication.parseUpdateInput(new StringReader("Version:1.2.3\nfdsacd\u00e4fdsa"));
83 assertEquals("1.2.3", info.getLatestVersion());
84 assertEquals(0, info.getUpdates().size());
86 info = Communication.parseUpdateInput(new StringReader(
93 assertEquals("1.2.3", info.getLatestVersion());
94 assertEquals(4, info.getUpdates().size());
95 assertEquals(15, info.getUpdates().get(0).getU());
96 assertEquals(3, info.getUpdates().get(1).getU());
97 assertEquals(3, info.getUpdates().get(2).getU());
98 assertEquals(1, info.getUpdates().get(3).getU());
99 assertEquals("Fifteen", info.getUpdates().get(0).getV());
100 assertEquals("Three1", info.getUpdates().get(1).getV());
101 assertEquals("Three2", info.getUpdates().get(2).getV());
102 assertEquals("One", info.getUpdates().get(3).getV());
105 info = Communication.parseUpdateInput(new StringReader(
107 "15: (C) 1234 A&B %23 \\o/ \r\r\n" +
109 "3: Invalid\u0000value\n" +
112 assertEquals("1.2.3", info.getLatestVersion());
113 assertEquals(1, info.getUpdates().size());
114 assertEquals(15, info.getUpdates().get(0).getU());
115 assertEquals("(C) 1234 A&B %23 \\o/", info.getUpdates().get(0).getV());