Skip to content
Snippets Groups Projects
Verified Commit dd0380c5 authored by Janne Mareike Koschinski's avatar Janne Mareike Koschinski
Browse files

Add tests for deserialization

parent 9fb4d71c
No related branches found
No related tags found
No related merge requests found
Pipeline #360 failed
Showing
with 82 additions and 7 deletions
...@@ -19,14 +19,18 @@ ...@@ -19,14 +19,18 @@
package de.kuschku.libquassel.protocol.primitive.serializer package de.kuschku.libquassel.protocol.primitive.serializer
import de.kuschku.libquassel.util.deserialize
import de.kuschku.libquassel.util.roundTrip import de.kuschku.libquassel.util.roundTrip
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Test import org.junit.Test
class BoolSerializerTest { class BoolSerializerTest {
@Test @Test
fun testFalse() { fun test() {
assertEquals(true, roundTrip(BoolSerializer, true)) assertEquals(true, roundTrip(BoolSerializer, true))
assertEquals(true, deserialize(BoolSerializer, byteArrayOf(1)))
assertEquals(false, roundTrip(BoolSerializer, false)) assertEquals(false, roundTrip(BoolSerializer, false))
assertEquals(false, deserialize(BoolSerializer, byteArrayOf(0)))
} }
} }
...@@ -21,6 +21,7 @@ package de.kuschku.libquassel.protocol.primitive.serializer ...@@ -21,6 +21,7 @@ package de.kuschku.libquassel.protocol.primitive.serializer
import de.kuschku.libquassel.protocol.Buffer_Type import de.kuschku.libquassel.protocol.Buffer_Type
import de.kuschku.libquassel.quassel.BufferInfo import de.kuschku.libquassel.quassel.BufferInfo
import de.kuschku.libquassel.util.deserialize
import de.kuschku.libquassel.util.roundTrip import de.kuschku.libquassel.util.roundTrip
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Test import org.junit.Test
...@@ -36,6 +37,7 @@ class BufferInfoSerializerTest { ...@@ -36,6 +37,7 @@ class BufferInfoSerializerTest {
"" ""
) )
assertEquals(value, roundTrip(BufferInfoSerializer, value)) assertEquals(value, roundTrip(BufferInfoSerializer, value))
assertEquals(value, deserialize(BufferInfoSerializer, byteArrayOf(-1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0)))
} }
@Test @Test
...@@ -48,5 +50,6 @@ class BufferInfoSerializerTest { ...@@ -48,5 +50,6 @@ class BufferInfoSerializerTest {
"äẞ\u0000\uFFFF" "äẞ\u0000\uFFFF"
) )
assertEquals(value, roundTrip(BufferInfoSerializer, value)) assertEquals(value, roundTrip(BufferInfoSerializer, value))
assertEquals(value, deserialize(BufferInfoSerializer, byteArrayOf(127, -1, -1, -1, 127, -1, -1, -1, 0, 15, 127, -1, -1, -1, 0, 0, 0, 9, -61, -92, -31, -70, -98, 0, -17, -65, -65)))
} }
} }
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
package de.kuschku.libquassel.protocol.primitive.serializer package de.kuschku.libquassel.protocol.primitive.serializer
import de.kuschku.libquassel.util.deserialize
import de.kuschku.libquassel.util.roundTrip import de.kuschku.libquassel.util.roundTrip
import org.junit.Assert.assertArrayEquals import org.junit.Assert.assertArrayEquals
import org.junit.Test import org.junit.Test
...@@ -29,11 +30,13 @@ class ByteArraySerializerTest { ...@@ -29,11 +30,13 @@ class ByteArraySerializerTest {
fun testBaseCase() { fun testBaseCase() {
val value = byteArrayOf() val value = byteArrayOf()
assertArrayEquals(value, roundTrip(ByteArraySerializer, ByteBuffer.wrap(value))?.array()) assertArrayEquals(value, roundTrip(ByteArraySerializer, ByteBuffer.wrap(value))?.array())
assertArrayEquals(value, deserialize(ByteArraySerializer, byteArrayOf(0, 0, 0, 0))?.array())
} }
@Test @Test
fun testNormal() { fun testNormal() {
val value = byteArrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9) val value = byteArrayOf(1, 2, 3, 4, 5, 6, 7, 8, 9)
assertArrayEquals(value, roundTrip(ByteArraySerializer, ByteBuffer.wrap(value))?.array()) assertArrayEquals(value, roundTrip(ByteArraySerializer, ByteBuffer.wrap(value))?.array())
assertArrayEquals(value, deserialize(ByteArraySerializer, byteArrayOf(0, 0, 0, 9, 1, 2, 3, 4, 5, 6, 7, 8, 9))?.array())
} }
} }
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
package de.kuschku.libquassel.protocol.primitive.serializer package de.kuschku.libquassel.protocol.primitive.serializer
import de.kuschku.libquassel.util.deserialize
import de.kuschku.libquassel.util.roundTrip import de.kuschku.libquassel.util.roundTrip
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Test import org.junit.Test
...@@ -28,20 +29,24 @@ class ByteSerializerTest { ...@@ -28,20 +29,24 @@ class ByteSerializerTest {
@Test @Test
fun testZero() { fun testZero() {
assertEquals(0.toByte(), roundTrip(ByteSerializer, 0.toByte())) assertEquals(0.toByte(), roundTrip(ByteSerializer, 0.toByte()))
assertEquals(0.toByte(), deserialize(ByteSerializer, byteArrayOf(0)))
} }
@Test @Test
fun testMinimal() { fun testMinimal() {
assertEquals(Byte.MIN_VALUE, roundTrip(ByteSerializer, Byte.MIN_VALUE)) assertEquals(Byte.MIN_VALUE, roundTrip(ByteSerializer, Byte.MIN_VALUE))
assertEquals(Byte.MIN_VALUE, deserialize(ByteSerializer, byteArrayOf(-128)))
} }
@Test @Test
fun testMaximal() { fun testMaximal() {
assertEquals(Byte.MAX_VALUE, roundTrip(ByteSerializer, Byte.MAX_VALUE)) assertEquals(Byte.MAX_VALUE, roundTrip(ByteSerializer, Byte.MAX_VALUE))
assertEquals(Byte.MAX_VALUE, deserialize(ByteSerializer, byteArrayOf(127)))
} }
@Test @Test
fun testAllOnes() { fun testAllOnes() {
assertEquals((0.toByte().inv()), roundTrip(ByteSerializer, (0.toByte().inv()))) assertEquals((0.toByte().inv()), roundTrip(ByteSerializer, (0.toByte().inv())))
assertEquals((0.toByte().inv()), deserialize(ByteSerializer, byteArrayOf(-1)))
} }
} }
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
package de.kuschku.libquassel.protocol.primitive.serializer package de.kuschku.libquassel.protocol.primitive.serializer
import de.kuschku.libquassel.util.deserialize
import de.kuschku.libquassel.util.roundTrip import de.kuschku.libquassel.util.roundTrip
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Test import org.junit.Test
...@@ -27,9 +28,18 @@ class CharSerializerTest { ...@@ -27,9 +28,18 @@ class CharSerializerTest {
@Test @Test
fun testAll() { fun testAll() {
assertEquals(' ', roundTrip(CharSerializer, ' ')) assertEquals(' ', roundTrip(CharSerializer, ' '))
assertEquals(' ', deserialize(CharSerializer, byteArrayOf(0, 32)))
assertEquals('a', roundTrip(CharSerializer, 'a')) assertEquals('a', roundTrip(CharSerializer, 'a'))
assertEquals('a', deserialize(CharSerializer, byteArrayOf(0, 97)))
assertEquals('ä', roundTrip(CharSerializer, 'ä')) assertEquals('ä', roundTrip(CharSerializer, 'ä'))
assertEquals('ä', deserialize(CharSerializer, byteArrayOf(0, -28)))
assertEquals('\u0000', roundTrip(CharSerializer, '\u0000')) assertEquals('\u0000', roundTrip(CharSerializer, '\u0000'))
assertEquals('\u0000', deserialize(CharSerializer, byteArrayOf(0, 0)))
assertEquals('\uFFFF', roundTrip(CharSerializer, '\uFFFF')) assertEquals('\uFFFF', roundTrip(CharSerializer, '\uFFFF'))
assertEquals('\uFFFF', deserialize(CharSerializer, byteArrayOf(-1, -1)))
} }
} }
...@@ -19,11 +19,13 @@ ...@@ -19,11 +19,13 @@
package de.kuschku.libquassel.protocol.primitive.serializer package de.kuschku.libquassel.protocol.primitive.serializer
import de.kuschku.libquassel.util.deserialize
import de.kuschku.libquassel.util.roundTrip import de.kuschku.libquassel.util.roundTrip
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Test import org.junit.Test
import org.threeten.bp.Instant import org.threeten.bp.Instant
import org.threeten.bp.LocalDateTime import org.threeten.bp.LocalDateTime
import org.threeten.bp.Month
import org.threeten.bp.ZoneOffset import org.threeten.bp.ZoneOffset
class DateTimeSerializerTest { class DateTimeSerializerTest {
...@@ -31,15 +33,14 @@ class DateTimeSerializerTest { ...@@ -31,15 +33,14 @@ class DateTimeSerializerTest {
fun testEpoch() { fun testEpoch() {
val value = roundTrip(DateTimeSerializer, Instant.EPOCH) val value = roundTrip(DateTimeSerializer, Instant.EPOCH)
assertEquals(Instant.EPOCH, value) assertEquals(Instant.EPOCH, value)
assertEquals(Instant.EPOCH, deserialize(DateTimeSerializer, byteArrayOf(0, 37, 61, -116, 0, 0, 0, 0, 2)))
} }
@Test @Test
fun testEpochAtTimezone() { fun testEpochAtTimezone() {
val value = Instant.EPOCH.atOffset(ZoneOffset.ofTotalSeconds(1234)) val value = Instant.EPOCH.atOffset(ZoneOffset.ofTotalSeconds(1234))
assertEquals( assertEquals(value, roundTrip(DateTimeSerializer, value))
value, assertEquals(value, deserialize(DateTimeSerializer, byteArrayOf(0, 37, 61, -116, 0, 18, -44, 80, 3, 0, 0, 4, -46)))
roundTrip(DateTimeSerializer, value)
)
} }
@Test @Test
...@@ -47,11 +48,14 @@ class DateTimeSerializerTest { ...@@ -47,11 +48,14 @@ class DateTimeSerializerTest {
val value = LocalDateTime.of(1970, 1, 1, 0, 0) val value = LocalDateTime.of(1970, 1, 1, 0, 0)
.atZone(ZoneOffset.systemDefault()).toInstant() .atZone(ZoneOffset.systemDefault()).toInstant()
assertEquals(value, roundTrip(DateTimeSerializer, value)) assertEquals(value, roundTrip(DateTimeSerializer, value))
assertEquals(value, deserialize(DateTimeSerializer, byteArrayOf(0, 37, 61, -117, 4, -17, 109, -128, 2)))
} }
@Test @Test
fun testNormalCase() { fun testNormalCase() {
val value = LocalDateTime.now().atZone(ZoneOffset.systemDefault()).toInstant() val value = LocalDateTime.of(2019, Month.JANUARY, 15, 20, 25)
.atZone(ZoneOffset.systemDefault()).toInstant()
assertEquals(value, roundTrip(DateTimeSerializer, value)) assertEquals(value, roundTrip(DateTimeSerializer, value))
assertEquals(value, deserialize(DateTimeSerializer, byteArrayOf(0, 37, -125, -125, 4, 42, -106, -32, 2)))
} }
} }
...@@ -19,28 +19,34 @@ ...@@ -19,28 +19,34 @@
package de.kuschku.libquassel.protocol.primitive.serializer package de.kuschku.libquassel.protocol.primitive.serializer
import de.kuschku.libquassel.util.deserialize
import de.kuschku.libquassel.util.roundTrip import de.kuschku.libquassel.util.roundTrip
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Test import org.junit.Test
import kotlin.experimental.inv
class IntSerializerTest { class IntSerializerTest {
@Test @Test
fun testZero() { fun testZero() {
assertEquals(0, roundTrip(IntSerializer, 0)) assertEquals(0, roundTrip(IntSerializer, 0))
assertEquals(0, deserialize(IntSerializer, byteArrayOf(0, 0, 0, 0)))
} }
@Test @Test
fun testMinimal() { fun testMinimal() {
assertEquals(Int.MIN_VALUE, roundTrip(IntSerializer, Int.MIN_VALUE)) assertEquals(Int.MIN_VALUE, roundTrip(IntSerializer, Int.MIN_VALUE))
assertEquals(Int.MIN_VALUE, deserialize(IntSerializer, byteArrayOf(-128, 0, 0, 0)))
} }
@Test @Test
fun testMaximal() { fun testMaximal() {
assertEquals(Int.MAX_VALUE, roundTrip(IntSerializer, Int.MAX_VALUE)) assertEquals(Int.MAX_VALUE, roundTrip(IntSerializer, Int.MAX_VALUE))
assertEquals(Int.MAX_VALUE, deserialize(IntSerializer, byteArrayOf(127, -1, -1, -1)))
} }
@Test @Test
fun testAllOnes() { fun testAllOnes() {
assertEquals(0.inv(), roundTrip(IntSerializer, 0.inv())) assertEquals(0.inv(), roundTrip(IntSerializer, 0.inv()))
assertEquals(0.inv(), deserialize(IntSerializer, byteArrayOf(-1, -1, -1, -1)))
} }
} }
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
package de.kuschku.libquassel.protocol.primitive.serializer package de.kuschku.libquassel.protocol.primitive.serializer
import de.kuschku.libquassel.util.deserialize
import de.kuschku.libquassel.util.roundTrip import de.kuschku.libquassel.util.roundTrip
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Test import org.junit.Test
...@@ -27,20 +28,24 @@ class LongSerializerTest { ...@@ -27,20 +28,24 @@ class LongSerializerTest {
@Test @Test
fun testZero() { fun testZero() {
assertEquals(0L, roundTrip(LongSerializer, 0L)) assertEquals(0L, roundTrip(LongSerializer, 0L))
assertEquals(0L, deserialize(LongSerializer, byteArrayOf(0, 0, 0, 0, 0, 0, 0, 0)))
} }
@Test @Test
fun testMinimal() { fun testMinimal() {
assertEquals(Long.MIN_VALUE, roundTrip(LongSerializer, Long.MIN_VALUE)) assertEquals(Long.MIN_VALUE, roundTrip(LongSerializer, Long.MIN_VALUE))
assertEquals(Long.MIN_VALUE, deserialize(LongSerializer, byteArrayOf(-128, 0, 0, 0, 0, 0, 0, 0)))
} }
@Test @Test
fun testMaximal() { fun testMaximal() {
assertEquals(Long.MAX_VALUE, roundTrip(LongSerializer, Long.MAX_VALUE)) assertEquals(Long.MAX_VALUE, roundTrip(LongSerializer, Long.MAX_VALUE))
assertEquals(Long.MAX_VALUE, deserialize(LongSerializer, byteArrayOf(127, -1, -1, -1, -1, -1, -1, -1)))
} }
@Test @Test
fun testAllOnes() { fun testAllOnes() {
assertEquals(0L.inv(), roundTrip(LongSerializer, 0L.inv())) assertEquals(0L.inv(), roundTrip(LongSerializer, 0L.inv()))
assertEquals(0L.inv(), deserialize(LongSerializer, byteArrayOf(-1, -1, -1, -1, -1, -1, -1, -1)))
} }
} }
...@@ -22,6 +22,7 @@ package de.kuschku.libquassel.protocol.primitive.serializer ...@@ -22,6 +22,7 @@ package de.kuschku.libquassel.protocol.primitive.serializer
import de.kuschku.libquassel.protocol.* import de.kuschku.libquassel.protocol.*
import de.kuschku.libquassel.quassel.BufferInfo import de.kuschku.libquassel.quassel.BufferInfo
import de.kuschku.libquassel.quassel.QuasselFeatures import de.kuschku.libquassel.quassel.QuasselFeatures
import de.kuschku.libquassel.util.deserialize
import de.kuschku.libquassel.util.roundTrip import de.kuschku.libquassel.util.roundTrip
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Test import org.junit.Test
...@@ -50,6 +51,7 @@ class MessageSerializerTest { ...@@ -50,6 +51,7 @@ class MessageSerializerTest {
) )
val other = roundTrip(MessageSerializer, value, features = QuasselFeatures.empty()) val other = roundTrip(MessageSerializer, value, features = QuasselFeatures.empty())
assertEquals(value, other) assertEquals(value, other)
assertEquals(value, deserialize(MessageSerializer, byteArrayOf(-1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), features = QuasselFeatures.empty()))
} }
@Test @Test
...@@ -74,6 +76,7 @@ class MessageSerializerTest { ...@@ -74,6 +76,7 @@ class MessageSerializerTest {
) )
val other = roundTrip(MessageSerializer, value, features = QuasselFeatures.empty()) val other = roundTrip(MessageSerializer, value, features = QuasselFeatures.empty())
assertEquals(value, other) assertEquals(value, other)
assertEquals(value, deserialize(MessageSerializer, byteArrayOf(127, -1, -1, -1, 90, -33, -109, -106, 0, 7, -1, -1, -113, 127, -1, -1, -1, 127, -1, -1, -1, 0, 15, 127, -1, -1, -1, 0, 0, 0, 9, -61, -92, -31, -70, -98, 0, -17, -65, -65, 0, 0, 0, 9, -61, -92, -31, -70, -98, 0, -17, -65, -65, 0, 0, 0, 9, -61, -92, -31, -70, -98, 0, -17, -65, -65), features = QuasselFeatures.empty()))
} }
@Test @Test
...@@ -98,6 +101,7 @@ class MessageSerializerTest { ...@@ -98,6 +101,7 @@ class MessageSerializerTest {
) )
val other = roundTrip(MessageSerializer, value, features = QuasselFeatures.all()) val other = roundTrip(MessageSerializer, value, features = QuasselFeatures.all())
assertEquals(value, other) assertEquals(value, other)
assertEquals(value, deserialize(MessageSerializer, byteArrayOf(-1, -1, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, -1, -1, -1, -1, -1, -1, 0, 0, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), features = QuasselFeatures.all()))
} }
@Test @Test
...@@ -122,6 +126,7 @@ class MessageSerializerTest { ...@@ -122,6 +126,7 @@ class MessageSerializerTest {
) )
val other = roundTrip(MessageSerializer, value, features = QuasselFeatures.all()) val other = roundTrip(MessageSerializer, value, features = QuasselFeatures.all())
assertEquals(value, other) assertEquals(value, other)
assertEquals(value, deserialize(MessageSerializer, byteArrayOf(127, -1, -1, -1, -1, -1, -1, -1, 0, 0, 1, 98, -7, 88, -127, -16, 0, 7, -1, -1, -113, 127, -1, -1, -1, 127, -1, -1, -1, 0, 15, 127, -1, -1, -1, 0, 0, 0, 9, -61, -92, -31, -70, -98, 0, -17, -65, -65, 0, 0, 0, 9, -61, -92, -31, -70, -98, 0, -17, -65, -65, 0, 0, 0, 9, -61, -92, -31, -70, -98, 0, -17, -65, -65, 0, 0, 0, 9, -61, -92, -31, -70, -98, 0, -17, -65, -65, 0, 0, 0, 9, -61, -92, -31, -70, -98, 0, -17, -65, -65, 0, 0, 0, 9, -61, -92, -31, -70, -98, 0, -17, -65, -65), features = QuasselFeatures.all()))
} }
@Test @Test
...@@ -146,5 +151,6 @@ class MessageSerializerTest { ...@@ -146,5 +151,6 @@ class MessageSerializerTest {
) )
val other = roundTrip(MessageSerializer, value, features = QuasselFeatures.all()) val other = roundTrip(MessageSerializer, value, features = QuasselFeatures.all())
assertEquals(value, other) assertEquals(value, other)
assertEquals(value, deserialize(MessageSerializer, byteArrayOf(127, -1, -1, -1, -1, -1, -1, -1, 0, 0, 19, -121, -1, -1, -40, -16, 0, 7, -1, -1, -113, 127, -1, -1, -1, 127, -1, -1, -1, 0, 15, 127, -1, -1, -1, 0, 0, 0, 9, -61, -92, -31, -70, -98, 0, -17, -65, -65, 0, 0, 0, 9, -61, -92, -31, -70, -98, 0, -17, -65, -65, 0, 0, 0, 9, -61, -92, -31, -70, -98, 0, -17, -65, -65, 0, 0, 0, 9, -61, -92, -31, -70, -98, 0, -17, -65, -65, 0, 0, 0, 9, -61, -92, -31, -70, -98, 0, -17, -65, -65, 0, 0, 0, 9, -61, -92, -31, -70, -98, 0, -17, -65, -65), features = QuasselFeatures.all()))
} }
} }
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
package de.kuschku.libquassel.protocol.primitive.serializer package de.kuschku.libquassel.protocol.primitive.serializer
import de.kuschku.libquassel.util.deserialize
import de.kuschku.libquassel.util.roundTrip import de.kuschku.libquassel.util.roundTrip
import org.junit.Assert.assertEquals import org.junit.Assert.assertEquals
import org.junit.Test import org.junit.Test
...@@ -28,20 +29,24 @@ class ShortSerializerTest { ...@@ -28,20 +29,24 @@ class ShortSerializerTest {
@Test @Test
fun testZero() { fun testZero() {
assertEquals(0.toShort(), roundTrip(ShortSerializer, 0.toShort())) assertEquals(0.toShort(), roundTrip(ShortSerializer, 0.toShort()))
assertEquals(0.toShort(), deserialize(ShortSerializer, byteArrayOf(0, 0)))
} }
@Test @Test
fun testMinimal() { fun testMinimal() {
assertEquals(Short.MIN_VALUE, roundTrip(ShortSerializer, Short.MIN_VALUE)) assertEquals(Short.MIN_VALUE, roundTrip(ShortSerializer, Short.MIN_VALUE))
assertEquals(Short.MIN_VALUE, deserialize(ShortSerializer, byteArrayOf(-128, 0)))
} }
@Test @Test
fun testMaximal() { fun testMaximal() {
assertEquals(Short.MAX_VALUE, roundTrip(ShortSerializer, Short.MAX_VALUE)) assertEquals(Short.MAX_VALUE, roundTrip(ShortSerializer, Short.MAX_VALUE))
assertEquals(Short.MAX_VALUE, deserialize(ShortSerializer, byteArrayOf(127, -1)))
} }
@Test @Test
fun testAllOnes() { fun testAllOnes() {
assertEquals((0.toShort().inv()), roundTrip(ShortSerializer, (0.toShort().inv()))) assertEquals((0.toShort().inv()), roundTrip(ShortSerializer, (0.toShort().inv())))
assertEquals((0.toShort().inv()), deserialize(ShortSerializer, byteArrayOf(-1, -1)))
} }
} }
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
package de.kuschku.libquassel.protocol.primitive.serializer package de.kuschku.libquassel.protocol.primitive.serializer
import de.kuschku.libquassel.util.deserialize
import de.kuschku.libquassel.util.roundTrip import de.kuschku.libquassel.util.roundTrip
import org.hamcrest.BaseMatcher import org.hamcrest.BaseMatcher
import org.hamcrest.Description import org.hamcrest.Description
...@@ -28,7 +29,7 @@ import org.junit.Test ...@@ -28,7 +29,7 @@ import org.junit.Test
class StringSerializerTest { class StringSerializerTest {
@Test @Test
fun testVigListOfNaughtyStrings() { fun testBigListOfNaughtyStrings() {
this::class.java.getResourceAsStream("/blns.txt").bufferedReader(Charsets.UTF_8).forEachLine { this::class.java.getResourceAsStream("/blns.txt").bufferedReader(Charsets.UTF_8).forEachLine {
// Ignore comments // Ignore comments
if (!it.startsWith('#')) { if (!it.startsWith('#')) {
...@@ -38,6 +39,23 @@ class StringSerializerTest { ...@@ -38,6 +39,23 @@ class StringSerializerTest {
} }
} }
@Test
fun testSample() {
val value = """
: ACHTUNG!
ALLES TURISTEN UND NONTEKNISCHEN LOOKENPEEPERS!
DAS KOMPUTERMASCHINE IST NICHT FÜR DER GEFINGERPOKEN UND MITTENGRABEN! ODERWISE IST EASY TO SCHNAPPEN DER SPRINGENWERK, BLOWENFUSEN UND POPPENCORKEN MIT SPITZENSPARKEN.
IST NICHT FÜR GEWERKEN BEI DUMMKOPFEN. DER RUBBERNECKEN SIGHTSEEREN KEEPEN DAS COTTONPICKEN HÄNDER IN DAS POCKETS MUSS.
ZO RELAXEN UND WATSCHEN DER BLINKENLICHTEN.
""".trimIndent()
assertEquals(value, roundTrip(StringSerializer.UTF8, value))
assertEquals(value, deserialize(StringSerializer.UTF8, byteArrayOf(0, 0, 1, -118, 58, 32, 65, 67, 72, 84, 85, 78, 71, 33, 10, 65, 76, 76, 69, 83, 32, 84, 85, 82, 73, 83, 84, 69, 78, 32, 85, 78, 68, 32, 78, 79, 78, 84, 69, 75, 78, 73, 83, 67, 72, 69, 78, 32, 76, 79, 79, 75, 69, 78, 80, 69, 69, 80, 69, 82, 83, 33, 10, 68, 65, 83, 32, 75, 79, 77, 80, 85, 84, 69, 82, 77, 65, 83, 67, 72, 73, 78, 69, 32, 73, 83, 84, 32, 78, 73, 67, 72, 84, 32, 70, -61, -100, 82, 32, 68, 69, 82, 32, 71, 69, 70, 73, 78, 71, 69, 82, 80, 79, 75, 69, 78, 32, 85, 78, 68, 32, 77, 73, 84, 84, 69, 78, 71, 82, 65, 66, 69, 78, 33, 32, 79, 68, 69, 82, 87, 73, 83, 69, 32, 73, 83, 84, 32, 69, 65, 83, 89, 32, 84, 79, 32, 83, 67, 72, 78, 65, 80, 80, 69, 78, 32, 68, 69, 82, 32, 83, 80, 82, 73, 78, 71, 69, 78, 87, 69, 82, 75, 44, 32, 66, 76, 79, 87, 69, 78, 70, 85, 83, 69, 78, 32, 85, 78, 68, 32, 80, 79, 80, 80, 69, 78, 67, 79, 82, 75, 69, 78, 32, 77, 73, 84, 32, 83, 80, 73, 84, 90, 69, 78, 83, 80, 65, 82, 75, 69, 78, 46, 10, 73, 83, 84, 32, 78, 73, 67, 72, 84, 32, 70, -61, -100, 82, 32, 71, 69, 87, 69, 82, 75, 69, 78, 32, 66, 69, 73, 32, 68, 85, 77, 77, 75, 79, 80, 70, 69, 78, 46, 32, 68, 69, 82, 32, 82, 85, 66, 66, 69, 82, 78, 69, 67, 75, 69, 78, 32, 83, 73, 71, 72, 84, 83, 69, 69, 82, 69, 78, 32, 75, 69, 69, 80, 69, 78, 32, 68, 65, 83, 32, 67, 79, 84, 84, 79, 78, 80, 73, 67, 75, 69, 78, 32, 72, -61, -124, 78, 68, 69, 82, 32, 73, 78, 32, 68, 65, 83, 32, 80, 79, 67, 75, 69, 84, 83, 32, 77, 85, 83, 83, 46, 10, 90, 79, 32, 82, 69, 76, 65, 88, 69, 78, 32, 85, 78, 68, 32, 87, 65, 84, 83, 67, 72, 69, 78, 32, 68, 69, 82, 32, 66, 76, 73, 78, 75, 69, 78, 76, 73, 67, 72, 84, 69, 78, 46)))
assertEquals(value, roundTrip(StringSerializer.UTF16, value))
assertEquals(value, deserialize(StringSerializer.UTF16, byteArrayOf(0, 0, 3, 14, 0, 58, 0, 32, 0, 65, 0, 67, 0, 72, 0, 84, 0, 85, 0, 78, 0, 71, 0, 33, 0, 10, 0, 65, 0, 76, 0, 76, 0, 69, 0, 83, 0, 32, 0, 84, 0, 85, 0, 82, 0, 73, 0, 83, 0, 84, 0, 69, 0, 78, 0, 32, 0, 85, 0, 78, 0, 68, 0, 32, 0, 78, 0, 79, 0, 78, 0, 84, 0, 69, 0, 75, 0, 78, 0, 73, 0, 83, 0, 67, 0, 72, 0, 69, 0, 78, 0, 32, 0, 76, 0, 79, 0, 79, 0, 75, 0, 69, 0, 78, 0, 80, 0, 69, 0, 69, 0, 80, 0, 69, 0, 82, 0, 83, 0, 33, 0, 10, 0, 68, 0, 65, 0, 83, 0, 32, 0, 75, 0, 79, 0, 77, 0, 80, 0, 85, 0, 84, 0, 69, 0, 82, 0, 77, 0, 65, 0, 83, 0, 67, 0, 72, 0, 73, 0, 78, 0, 69, 0, 32, 0, 73, 0, 83, 0, 84, 0, 32, 0, 78, 0, 73, 0, 67, 0, 72, 0, 84, 0, 32, 0, 70, 0, -36, 0, 82, 0, 32, 0, 68, 0, 69, 0, 82, 0, 32, 0, 71, 0, 69, 0, 70, 0, 73, 0, 78, 0, 71, 0, 69, 0, 82, 0, 80, 0, 79, 0, 75, 0, 69, 0, 78, 0, 32, 0, 85, 0, 78, 0, 68, 0, 32, 0, 77, 0, 73, 0, 84, 0, 84, 0, 69, 0, 78, 0, 71, 0, 82, 0, 65, 0, 66, 0, 69, 0, 78, 0, 33, 0, 32, 0, 79, 0, 68, 0, 69, 0, 82, 0, 87, 0, 73, 0, 83, 0, 69, 0, 32, 0, 73, 0, 83, 0, 84, 0, 32, 0, 69, 0, 65, 0, 83, 0, 89, 0, 32, 0, 84, 0, 79, 0, 32, 0, 83, 0, 67, 0, 72, 0, 78, 0, 65, 0, 80, 0, 80, 0, 69, 0, 78, 0, 32, 0, 68, 0, 69, 0, 82, 0, 32, 0, 83, 0, 80, 0, 82, 0, 73, 0, 78, 0, 71, 0, 69, 0, 78, 0, 87, 0, 69, 0, 82, 0, 75, 0, 44, 0, 32, 0, 66, 0, 76, 0, 79, 0, 87, 0, 69, 0, 78, 0, 70, 0, 85, 0, 83, 0, 69, 0, 78, 0, 32, 0, 85, 0, 78, 0, 68, 0, 32, 0, 80, 0, 79, 0, 80, 0, 80, 0, 69, 0, 78, 0, 67, 0, 79, 0, 82, 0, 75, 0, 69, 0, 78, 0, 32, 0, 77, 0, 73, 0, 84, 0, 32, 0, 83, 0, 80, 0, 73, 0, 84, 0, 90, 0, 69, 0, 78, 0, 83, 0, 80, 0, 65, 0, 82, 0, 75, 0, 69, 0, 78, 0, 46, 0, 10, 0, 73, 0, 83, 0, 84, 0, 32, 0, 78, 0, 73, 0, 67, 0, 72, 0, 84, 0, 32, 0, 70, 0, -36, 0, 82, 0, 32, 0, 71, 0, 69, 0, 87, 0, 69, 0, 82, 0, 75, 0, 69, 0, 78, 0, 32, 0, 66, 0, 69, 0, 73, 0, 32, 0, 68, 0, 85, 0, 77, 0, 77, 0, 75, 0, 79, 0, 80, 0, 70, 0, 69, 0, 78, 0, 46, 0, 32, 0, 68, 0, 69, 0, 82, 0, 32, 0, 82, 0, 85, 0, 66, 0, 66, 0, 69, 0, 82, 0, 78, 0, 69, 0, 67, 0, 75, 0, 69, 0, 78, 0, 32, 0, 83, 0, 73, 0, 71, 0, 72, 0, 84, 0, 83, 0, 69, 0, 69, 0, 82, 0, 69, 0, 78, 0, 32, 0, 75, 0, 69, 0, 69, 0, 80, 0, 69, 0, 78, 0, 32, 0, 68, 0, 65, 0, 83, 0, 32, 0, 67, 0, 79, 0, 84, 0, 84, 0, 79, 0, 78, 0, 80, 0, 73, 0, 67, 0, 75, 0, 69, 0, 78, 0, 32, 0, 72, 0, -60, 0, 78, 0, 68, 0, 69, 0, 82, 0, 32, 0, 73, 0, 78, 0, 32, 0, 68, 0, 65, 0, 83, 0, 32, 0, 80, 0, 79, 0, 67, 0, 75, 0, 69, 0, 84, 0, 83, 0, 32, 0, 77, 0, 85, 0, 83, 0, 83, 0, 46, 0, 10, 0, 90, 0, 79, 0, 32, 0, 82, 0, 69, 0, 76, 0, 65, 0, 88, 0, 69, 0, 78, 0, 32, 0, 85, 0, 78, 0, 68, 0, 32, 0, 87, 0, 65, 0, 84, 0, 83, 0, 67, 0, 72, 0, 69, 0, 78, 0, 32, 0, 68, 0, 69, 0, 82, 0, 32, 0, 66, 0, 76, 0, 73, 0, 78, 0, 75, 0, 69, 0, 78, 0, 76, 0, 73, 0, 67, 0, 72, 0, 84, 0, 69, 0, 78, 0, 46)))
}
@Test @Test
fun testAscii() { fun testAscii() {
// The simple solution: Just test all // The simple solution: Just test all
......
...@@ -22,6 +22,7 @@ package de.kuschku.libquassel.util ...@@ -22,6 +22,7 @@ package de.kuschku.libquassel.util
import de.kuschku.libquassel.protocol.primitive.serializer.Serializer import de.kuschku.libquassel.protocol.primitive.serializer.Serializer
import de.kuschku.libquassel.quassel.QuasselFeatures import de.kuschku.libquassel.quassel.QuasselFeatures
import de.kuschku.libquassel.util.nio.ChainedByteBuffer import de.kuschku.libquassel.util.nio.ChainedByteBuffer
import java.nio.ByteBuffer
fun <T> roundTrip(serializer: Serializer<T>, value: T, fun <T> roundTrip(serializer: Serializer<T>, value: T,
features: QuasselFeatures = QuasselFeatures.all()): T { features: QuasselFeatures = QuasselFeatures.all()): T {
...@@ -32,3 +33,8 @@ fun <T> roundTrip(serializer: Serializer<T>, value: T, ...@@ -32,3 +33,8 @@ fun <T> roundTrip(serializer: Serializer<T>, value: T,
val buffer = chainedBuffer.toBuffer() val buffer = chainedBuffer.toBuffer()
return serializer.deserialize(buffer, features) return serializer.deserialize(buffer, features)
} }
fun <T> deserialize(serializer: Serializer<T>, values: ByteArray,
features: QuasselFeatures = QuasselFeatures.all()): T {
return serializer.deserialize(ByteBuffer.wrap(byteArrayOf(*values)), features)
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment