@Test(expected = BadBencodingException.class) public void parsingWrongBencodeShouldThrowException() throws IOException, BadBencodingException { byte[] buffer; buffer = "sdfsd:".getBytes(); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(buffer); BencodeParser parser = new BencodeParser(byteArrayInputStream); parser.parse(); }
@Test(expected = BadBencodingException.class) public void parsingTooLongDecimalAsStringLengthShouldThrowException() throws IOException, BadBencodingException { byte[] buffer; buffer = "457839457893458349573489573495734859357:234234".getBytes(); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(buffer); BencodeParser parser = new BencodeParser(byteArrayInputStream); parser.parse(); }
@Test(expected = BadBencodingException.class) public void parsingDictionaryWithWrongKeyClassShouldThrowException() throws IOException, BadBencodingException { byte[] buffer; buffer = "di5e5:valuee".getBytes(); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(buffer); BencodeParser parser = new BencodeParser(byteArrayInputStream); parser.parse(); }
@Test public void parsingEmptyStringShouldBeCorrect() throws IOException, BadBencodingException { byte[] buffer; buffer = "0:".getBytes(); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(buffer); BencodeParser parser = new BencodeParser(byteArrayInputStream); BencodeString str = (BencodeString) parser.parse(); Assert.assertEquals("", str.getString()); }
@Test public void parsingIntShouldBeCorrect() throws IOException, BadBencodingException { byte[] buffer; buffer = "i-2525e".getBytes(); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(buffer); BencodeParser parser = new BencodeParser(byteArrayInputStream); BencodeInteger integer = (BencodeInteger) parser.parse(); Assert.assertEquals(-2525, integer.getInteger()); }
@Test public void parsingDictionaryShouldBeCorrect() throws IOException, BadBencodingException { byte[] buffer; buffer = "d4:key15:Hello4:key2i5ee".getBytes(); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(buffer); BencodeParser parser = new BencodeParser(byteArrayInputStream); BencodeDictionary dictionary = (BencodeDictionary) parser.parse(); Map<String, BencodeItem> map = dictionary.getMap(); Assert.assertNotNull(map.get("key1")); Assert.assertNotNull(map.get("key2")); Assert.assertEquals("Hello", ((BencodeString) map.get("key1")).getString()); Assert.assertEquals(5, ((BencodeInteger) map.get("key2")).getInteger()); }
@Test public void parsingListShouldBeCorrect() throws IOException, BadBencodingException { byte[] buffer; buffer = "li5e3:123e".getBytes(); ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(buffer); BencodeParser parser = new BencodeParser(byteArrayInputStream); BencodeList list = (BencodeList) parser.parse(); for (BencodeItem item : list) { if (item instanceof BencodeInteger) { Assert.assertEquals(5, ((BencodeInteger) item).getInteger()); return; } if (item instanceof BencodeString) { Assert.assertEquals("123", ((BencodeString) item).getString()); return; } } }