diff --git a/app/src/test/java/de/kuschku/quasseldroid/ExampleUnitTest.kt b/app/src/test/java/de/kuschku/quasseldroid/ExampleUnitTest.kt index 6a9c5578cea3d55572cc32743ceff96868b921a6..990e5521979bb227f8f611b31699d6a4768ca349 100644 --- a/app/src/test/java/de/kuschku/quasseldroid/ExampleUnitTest.kt +++ b/app/src/test/java/de/kuschku/quasseldroid/ExampleUnitTest.kt @@ -69,7 +69,6 @@ class ExampleUnitTest { channel.write(sizeBuffer) sizeBuffer.clear() } - println(sendBuffer.toBuffer().contentToString()) channel.write(sendBuffer) channel.flush() sendBuffer.clear() diff --git a/bitflags/src/main/kotlin/de/kuschku/bitflags/Flags.kt b/bitflags/src/main/kotlin/de/kuschku/bitflags/Flags.kt index cc6a8daa3bd7f9e9e584d8e863668cfe3fda28b0..716d905a59171de3bcff2a8da260b4f2aa57fa96 100644 --- a/bitflags/src/main/kotlin/de/kuschku/bitflags/Flags.kt +++ b/bitflags/src/main/kotlin/de/kuschku/bitflags/Flags.kt @@ -20,6 +20,5 @@ package de.kuschku.bitflags interface Flags<T, U> where U : Flag<T>, U : Enum<U> { - operator fun get(value: T): U? val all: Set<U> } diff --git a/coverage-annotations/src/main/kotlin/de/kuschku/codecoverage/Generated.kt b/coverage-annotations/src/main/kotlin/de/kuschku/codecoverage/Generated.kt index 7b3674fb8e11d169b3b571247e289f7161e67f40..a0492bb5b35ea6fab62855bbcc1287d163d634b6 100644 --- a/coverage-annotations/src/main/kotlin/de/kuschku/codecoverage/Generated.kt +++ b/coverage-annotations/src/main/kotlin/de/kuschku/codecoverage/Generated.kt @@ -22,5 +22,5 @@ package de.kuschku.codecoverage /** * Used to mark inline functions as generated for jacoco */ -@Retention(AnnotationRetention.SOURCE) +@Retention(AnnotationRetention.RUNTIME) annotation class Generated diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/features/LegacyFeature.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/features/LegacyFeature.kt index f069ccc4717e994949c122d042627d4b3d09d897..fece096395bde848a5ec4259323c067dde19a49e 100644 --- a/protocol/src/main/java/de/kuschku/libquassel/protocol/features/LegacyFeature.kt +++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/features/LegacyFeature.kt @@ -78,7 +78,6 @@ enum class LegacyFeature( fun get(feature: QuasselFeature) = features[feature] private val values = values().associateBy(LegacyFeature::value) - override fun get(value: UInt) = values[value] override val all: LegacyFeatures = values.values.toEnumSet() } } diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/features/QuasselFeature.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/features/QuasselFeature.kt index 3466e053d834b1cffb41d48c7a26fdab2b456809..09ee52b712e7d459b5d23b0eb159563f30bc54dc 100644 --- a/protocol/src/main/java/de/kuschku/libquassel/protocol/features/QuasselFeature.kt +++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/features/QuasselFeature.kt @@ -19,6 +19,9 @@ package de.kuschku.libquassel.protocol.features +import de.kuschku.codecoverage.Generated + +@Generated inline class QuasselFeatureName( val name: String, ) diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/io/ByteBufferUtil.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/io/ByteBufferUtil.kt index d4f7e07970991bb161295e2daa4baef35846c08a..15bf1c7820e43c514de0f2eac90fb9eeecdeaea4 100644 --- a/protocol/src/main/java/de/kuschku/libquassel/protocol/io/ByteBufferUtil.kt +++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/io/ByteBufferUtil.kt @@ -21,12 +21,10 @@ package de.kuschku.libquassel.protocol.io import java.nio.ByteBuffer -fun copyData(from: ByteBuffer, to: ByteBuffer, desiredAmount: Int = -1) { +fun copyData(from: ByteBuffer, to: ByteBuffer, desiredAmount: Int) { val limit = from.limit() val availableAmount = minOf(from.remaining(), to.remaining()) - val amount = - if (desiredAmount < 0) availableAmount - else minOf(availableAmount, desiredAmount) + val amount = minOf(availableAmount, desiredAmount) from.limit(from.position() + amount) to.put(from) from.limit(limit) diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/io/ChainedByteBuffer.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/io/ChainedByteBuffer.kt index ba8aeade66b8daa8bf8de45a1e5594c717a13420..20c977eada078fe4f4311ab3b34c0abef8946afc 100644 --- a/protocol/src/main/java/de/kuschku/libquassel/protocol/io/ChainedByteBuffer.kt +++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/io/ChainedByteBuffer.kt @@ -90,8 +90,11 @@ class ChainedByteBuffer( val requested = minOf(value.remaining(), chunkSize) if (bufferList.lastOrNull()?.hasRemaining() != true) { ensureSpace(requested) + } else { + ensureSpace(minOf(bufferList.last().remaining(), requested)) } - copyData(value, bufferList.last()) + + copyData(value, bufferList.last(), requested) } } diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/io/StringEncoder.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/io/StringEncoder.kt index 08ebb2a33885cc681f83917b77d8643759dc0d08..782c8946d308b0321a783ce828f2fb100c054d18 100644 --- a/protocol/src/main/java/de/kuschku/libquassel/protocol/io/StringEncoder.kt +++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/io/StringEncoder.kt @@ -52,13 +52,21 @@ class StringEncoder(charset: Charset) { return encodeInternal(charBuffer) } - fun encodeChar(data: Char?): ByteBuffer { - if (!encoder.canEncode(data ?: '\u0000')) { - return ByteBuffer.allocateDirect(2) + private fun replacementChar(data: Char?): Char { + return if (data == null || !encoder.canEncode(data)) { + if (encoder.canEncode('\uFFFD')) { + '\uFFFD' + } else { + '\u0000' + } + } else { + data } + } - val charBuffer = charBuffer(2) - charBuffer.put(data ?: '\u0000') + fun encodeChar(data: Char?): ByteBuffer { + val charBuffer = charBuffer(1) + charBuffer.put(replacementChar(data)) charBuffer.flip() return encodeInternal(charBuffer) } diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/BoolSerializer.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/BoolSerializer.kt index 0e0b73a6a2733210c97398126268faed1c44d858..1e51bd5373906099e6e967165d80110f4959398e 100644 --- a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/BoolSerializer.kt +++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/BoolSerializer.kt @@ -26,7 +26,7 @@ import java.nio.ByteBuffer object BoolSerializer : QtSerializer<Boolean> { override val qtType: QtType = QtType.Bool - override val javaType: Class<Boolean> = Boolean::class.java + override val javaType: Class<Boolean> = Boolean::class.javaObjectType override fun serialize(buffer: ChainedByteBuffer, data: Boolean, featureSet: FeatureSet) { buffer.put( diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/ByteSerializer.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/ByteSerializer.kt index e996faf6e43370032f993b83a47e117c85a87915..2d3d7083c8af6d899dbf4244740f3c7efa09e7b4 100644 --- a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/ByteSerializer.kt +++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/ByteSerializer.kt @@ -26,7 +26,7 @@ import java.nio.ByteBuffer object ByteSerializer : QtSerializer<Byte> { override val qtType: QtType = QtType.Char - override val javaType: Class<Byte> = Byte::class.java + override val javaType: Class<Byte> = Byte::class.javaObjectType override fun serialize(buffer: ChainedByteBuffer, data: Byte, featureSet: FeatureSet) { buffer.put(data) diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/DoubleSerializer.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/DoubleSerializer.kt index 6217ea633f9de7f58ba1349a7d4766a41ec452a5..1e81a519d2b2ca664188715bf6be580d243a6edd 100644 --- a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/DoubleSerializer.kt +++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/DoubleSerializer.kt @@ -26,7 +26,7 @@ import java.nio.ByteBuffer object DoubleSerializer : QtSerializer<Double> { override val qtType: QtType = QtType.Double - override val javaType: Class<Double> = Double::class.java + override val javaType: Class<Double> = Double::class.javaObjectType override fun serialize(buffer: ChainedByteBuffer, data: Double, featureSet: FeatureSet) { buffer.putDouble(data) diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/FloatSerializer.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/FloatSerializer.kt index 9cfaf16be64ad844982da5b41827769b8c063939..636262b56edd0c918ecc44688e735e7236985af0 100644 --- a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/FloatSerializer.kt +++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/FloatSerializer.kt @@ -26,7 +26,7 @@ import java.nio.ByteBuffer object FloatSerializer : QtSerializer<Float> { override val qtType: QtType = QtType.Float - override val javaType: Class<Float> = Float::class.java + override val javaType: Class<Float> = Float::class.javaObjectType override fun serialize(buffer: ChainedByteBuffer, data: Float, featureSet: FeatureSet) { buffer.putFloat(data) diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/IntSerializer.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/IntSerializer.kt index 98a38bea7cf7b03af192980564a909e43c914cea..54db403556c156642baae1ada9141a6d2ca1b2fa 100644 --- a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/IntSerializer.kt +++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/IntSerializer.kt @@ -26,7 +26,7 @@ import java.nio.ByteBuffer object IntSerializer : QtSerializer<Int> { override val qtType: QtType = QtType.Int - override val javaType: Class<Int> = Int::class.java + override val javaType: Class<Int> = Int::class.javaObjectType override fun serialize(buffer: ChainedByteBuffer, data: Int, featureSet: FeatureSet) { buffer.putInt(data) diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/LongSerializer.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/LongSerializer.kt index 82bfdcff41d6b1d1efcaf08c27fd59bb880aeb3b..d592f55efc82e4e2f3fb30a0a9bd033c85678ff3 100644 --- a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/LongSerializer.kt +++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/LongSerializer.kt @@ -26,7 +26,7 @@ import java.nio.ByteBuffer object LongSerializer : QtSerializer<Long> { override val qtType: QtType = QtType.Long - override val javaType: Class<Long> = Long::class.java + override val javaType: Class<Long> = Long::class.javaObjectType override fun serialize(buffer: ChainedByteBuffer, data: Long, featureSet: FeatureSet) { buffer.putLong(data) diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/QCharSerializer.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/QCharSerializer.kt index bf78fc8c5049db200d0c60658726834ba7b46746..77045149b60b1f377b1d4d5af3820c4957e599b7 100644 --- a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/QCharSerializer.kt +++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/QCharSerializer.kt @@ -28,7 +28,7 @@ import kotlin.concurrent.getOrSet object QCharSerializer : QtSerializer<Char> { override val qtType: QtType = QtType.QChar - override val javaType: Class<out Char> = Char::class.java + override val javaType: Class<out Char> = Char::class.javaObjectType private val encoderLocal = ThreadLocal<StringEncoder>() private fun encoder() = encoderLocal.getOrSet { StringEncoder(Charsets.UTF_16BE) } diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/ShortSerializer.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/ShortSerializer.kt index 409beba5f5d83466cedae5ce845f678e286a5ef7..d3ea4dd89834dd29c3acd78642037ced60a65505 100644 --- a/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/ShortSerializer.kt +++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/serializers/primitive/ShortSerializer.kt @@ -26,7 +26,7 @@ import java.nio.ByteBuffer object ShortSerializer : QtSerializer<Short> { override val qtType: QtType = QtType.Short - override val javaType: Class<Short> = Short::class.java + override val javaType: Class<Short> = Short::class.javaObjectType override fun serialize(buffer: ChainedByteBuffer, data: Short, featureSet: FeatureSet) { buffer.putShort(data) diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/types/BufferActivity.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/types/BufferActivity.kt index 557155d5629c9584caba3545d620a117c99b86de..5aa12c8ae94baa72219e4ce7ca505f897aa852a6 100644 --- a/protocol/src/main/java/de/kuschku/libquassel/protocol/types/BufferActivity.kt +++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/types/BufferActivity.kt @@ -33,7 +33,6 @@ enum class BufferActivity( companion object : Flags<UInt, BufferActivity> { private val values = values().associateBy(BufferActivity::value) - override fun get(value: UInt) = values[value] override val all: BufferActivities = values.values.toEnumSet() } } diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/types/BufferType.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/types/BufferType.kt index 356d0bbf196e189e273adef04a9cd8ecabd62a36..cc71f3465a744d2c800f236e5ab54f690aa61e32 100644 --- a/protocol/src/main/java/de/kuschku/libquassel/protocol/types/BufferType.kt +++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/types/BufferType.kt @@ -34,7 +34,6 @@ enum class BufferType( companion object : Flags<UShort, BufferType> { private val values = values().associateBy(BufferType::value) - override fun get(value: UShort) = values[value] override val all: BufferTypes = values.values.toEnumSet() } } diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/types/MessageFlag.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/types/MessageFlag.kt index 8d45bfed5b7166d1f0f96233bf45cbd6024504f0..86008c5a4522ac4825eff36c493b0d6d1c95575f 100644 --- a/protocol/src/main/java/de/kuschku/libquassel/protocol/types/MessageFlag.kt +++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/types/MessageFlag.kt @@ -34,7 +34,6 @@ enum class MessageFlag( companion object : Flags<UInt, MessageFlag> { private val values = values().associateBy(MessageFlag::value) - override fun get(value: UInt) = values[value] override val all: MessageFlags = values.values.toEnumSet() } } diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/types/MessageType.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/types/MessageType.kt index e0882d5957e13039dcbdc2c8490692b229605827..4badbe176d3a33288ce995a9752de7d79a4c44a0 100644 --- a/protocol/src/main/java/de/kuschku/libquassel/protocol/types/MessageType.kt +++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/types/MessageType.kt @@ -48,7 +48,6 @@ enum class MessageType( companion object : Flags<UInt, MessageType> { private val values = values().associateBy(MessageType::value) - override fun get(value: UInt) = values[value] override val all: MessageTypes = values.values.toEnumSet() } } diff --git a/protocol/src/main/java/de/kuschku/libquassel/protocol/variant/QVariant.kt b/protocol/src/main/java/de/kuschku/libquassel/protocol/variant/QVariant.kt index a006ff4c7d8fe133157e9cb771ec2784c6bb64ae..ae6ac6ab171abaf409842133bab6c58dff8ee448 100644 --- a/protocol/src/main/java/de/kuschku/libquassel/protocol/variant/QVariant.kt +++ b/protocol/src/main/java/de/kuschku/libquassel/protocol/variant/QVariant.kt @@ -27,22 +27,29 @@ import de.kuschku.libquassel.protocol.serializers.QuasselSerializers import de.kuschku.libquassel.protocol.serializers.primitive.QtSerializer import de.kuschku.libquassel.protocol.serializers.primitive.QuasselSerializer import java.nio.ByteBuffer -import java.util.* typealias QVariant_ = QVariant<*> typealias QVariantList = List<QVariant_> typealias QVariantMap = Map<String, QVariant_> typealias QStringList = List<String?> -sealed class QVariant<T> constructor( - private val data: T, - open val serializer: QtSerializer<T>, -) { - class Typed<T> internal constructor(data: T, serializer: QtSerializer<T>) : - QVariant<T>(data, serializer) +sealed class QVariant<T> { + abstract val data: T + abstract val serializer: QtSerializer<T> - class Custom<T> internal constructor(data: T, override val serializer: QuasselSerializer<T>) : - QVariant<T>(data, serializer) + data class Typed<T> internal constructor( + override val data: T, + override val serializer: QtSerializer<T> + ) : QVariant<T>() { + override fun toString() = super.toString() + } + + data class Custom<T> internal constructor( + override val data: T, + override val serializer: QuasselSerializer<T> + ) : QVariant<T>() { + override fun toString() = super.toString() + } fun value(): T = data @@ -51,11 +58,13 @@ sealed class QVariant<T> constructor( serializer.serialize(buffer, data, featureSet) } - override fun toString() = when (data) { - is ByteBuffer -> - "QVariant(${serializer::class.java.simpleName}, ${data.contentToString()})" - else -> - "QVariant(${serializer::class.java.simpleName}, $data)" + override fun toString() = data.let { + when (it) { + is ByteBuffer -> + "QVariant(${serializer::class.java.simpleName}, ${it.contentToString()})" + else -> + "QVariant(${serializer::class.java.simpleName}, $it)" + } } @Suppress("UNCHECKED_CAST") @@ -63,25 +72,6 @@ sealed class QVariant<T> constructor( if (serializer.javaType == T::class.java && this.value() is T) this as QVariant<T> else null - override fun equals(other: Any?): Boolean { - if (this === other) return true - if (javaClass != other?.javaClass) return false - - other as QVariant<*> - - if (data != other.data) return false - if (serializer != other.serializer) return false - - return true - } - - override fun hashCode(): Int { - var result = data?.hashCode() ?: 0 - result = 31 * result + serializer.hashCode() - return result - } - - companion object { fun <T> of(data: T, serializer: QtSerializer<T>) = Typed(data, serializer) fun <T> of(data: T, serializer: QuasselSerializer<T>) = Custom(data, serializer) diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/io/StringEncoderTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/io/StringEncoderTest.kt index 2b356d8bd8677bc3ebeaea1e651fa10ce8bba9f4..cb1db12abdb08920535ad112e3aeca8c0bd6892f 100644 --- a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/io/StringEncoderTest.kt +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/io/StringEncoderTest.kt @@ -47,6 +47,18 @@ class StringEncoderTest { ) } + @Test + fun testUnencodableString() { + assertEquals( + 0, + ascii.encode("\uFFFF").remaining() + ) + assertThat( + ascii.encode("\uFFFF"), + ByteBufferMatcher(byteBufferOf()) + ) + } + @Test fun testNullChar() { assertEquals( @@ -58,13 +70,9 @@ class StringEncoderTest { ByteBufferMatcher(byteBufferOf(0)) ) - assertEquals( - 1, - utf8.encodeChar(null).remaining() - ) assertThat( utf8.encodeChar(null), - ByteBufferMatcher(byteBufferOf(0)) + ByteBufferMatcher(byteBufferOf(0xEFu, 0xBFu, 0xBDu)) ) assertEquals( @@ -73,19 +81,19 @@ class StringEncoderTest { ) assertThat( utf16.encodeChar(null), - ByteBufferMatcher(byteBufferOf(0, 0)), + ByteBufferMatcher(byteBufferOf(0xFFu, 0xFDu)), ) } @Test fun testUnencodableChar() { assertEquals( - 2, + 1, ascii.encodeChar('\uFFFF').remaining() ) assertThat( ascii.encodeChar('\uFFFF'), - ByteBufferMatcher(byteBufferOf(0, 0)) + ByteBufferMatcher(byteBufferOf(0)) ) } } diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/handshake/ClientInitSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/handshake/ClientInitSerializerTest.kt index fca778612b04823adefb953971b46d76d7992b22..a48194552e6f933678835e7c5ed1b5818b6ffcb8 100644 --- a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/handshake/ClientInitSerializerTest.kt +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/handshake/ClientInitSerializerTest.kt @@ -22,11 +22,25 @@ import de.kuschku.bitflags.none import de.kuschku.libquassel.protocol.features.FeatureSet import de.kuschku.libquassel.protocol.features.LegacyFeature import de.kuschku.libquassel.protocol.messages.handshake.ClientInit +import de.kuschku.libquassel.protocol.serializers.HandshakeSerializers +import de.kuschku.libquassel.protocol.serializers.QtSerializers +import de.kuschku.libquassel.protocol.serializers.primitive.BoolSerializer import de.kuschku.libquassel.protocol.testutil.byteBufferOf import de.kuschku.libquassel.protocol.testutil.handshakeSerializerTest +import de.kuschku.libquassel.protocol.variant.QtType +import org.junit.jupiter.api.Assertions import org.junit.jupiter.api.Test +import org.junit.jupiter.api.Assertions.assertEquals as assertEquals class ClientInitSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + ClientInitSerializer, + HandshakeSerializers.find<ClientInit>("ClientInit"), + ) + } + @Test fun testSimple() = handshakeSerializerTest( ClientInitSerializer, diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/BoolSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/BoolSerializerTest.kt index c6dfa9a3cabeefbbb630b45542ab0034ff995a0f..4e38c0ba9fa5587172ac3645e71138308751b0ca 100644 --- a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/BoolSerializerTest.kt +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/BoolSerializerTest.kt @@ -18,11 +18,23 @@ */ package de.kuschku.libquassel.protocol.serializers.primitive +import de.kuschku.libquassel.protocol.serializers.QtSerializers import de.kuschku.libquassel.protocol.testutil.byteBufferOf import de.kuschku.libquassel.protocol.testutil.qtSerializerTest +import de.kuschku.libquassel.protocol.variant.QtType +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test class BoolSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + BoolSerializer, + QtSerializers.find<Boolean>(QtType.Bool), + ) + } + @Test fun testTrue() = qtSerializerTest( BoolSerializer, diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/BufferIdSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/BufferIdSerializerTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..21f9d2cbd431cc64a2432e1215dc7b4450fa73de --- /dev/null +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/BufferIdSerializerTest.kt @@ -0,0 +1,66 @@ +/* + * Quasseldroid - Quassel client for Android + * + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3 as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ +package de.kuschku.libquassel.protocol.serializers.primitive + +import de.kuschku.libquassel.protocol.serializers.QuasselSerializers +import de.kuschku.libquassel.protocol.testutil.byteBufferOf +import de.kuschku.libquassel.protocol.testutil.qtSerializerTest +import de.kuschku.libquassel.protocol.testutil.quasselSerializerTest +import de.kuschku.libquassel.protocol.types.BufferId +import de.kuschku.libquassel.protocol.variant.QuasselType +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test + +class BufferIdSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + BufferIdSerializer, + QuasselSerializers.find<BufferId>(QuasselType.BufferId), + ) + } + + @Test + fun testZero() = quasselSerializerTest( + BufferIdSerializer, + BufferId(0), + byteBufferOf(0, 0, 0, 0) + ) + + @Test + fun testMinimal() = quasselSerializerTest( + BufferIdSerializer, + BufferId.MIN_VALUE, + byteBufferOf(-128, 0, 0, 0) + ) + + @Test + fun testMaximal() = quasselSerializerTest( + BufferIdSerializer, + BufferId.MAX_VALUE, + byteBufferOf(127, -1, -1, -1) + ) + + @Test + fun testAllOnes() = quasselSerializerTest( + BufferIdSerializer, + BufferId(0.inv()), + byteBufferOf(-1, -1, -1, -1) + ) +} diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/BufferInfoSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/BufferInfoSerializerTest.kt index f32ae8ae16b6cc5ca103be719b988c66234bed59..934aef98c95703981b070db872d7fe1ec511190a 100644 --- a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/BufferInfoSerializerTest.kt +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/BufferInfoSerializerTest.kt @@ -20,15 +20,29 @@ package de.kuschku.libquassel.protocol.serializers.primitive import de.kuschku.bitflags.none import de.kuschku.bitflags.validValues +import de.kuschku.libquassel.protocol.serializers.QtSerializers +import de.kuschku.libquassel.protocol.serializers.QuasselSerializers import de.kuschku.libquassel.protocol.testutil.byteBufferOf import de.kuschku.libquassel.protocol.testutil.quasselSerializerTest import de.kuschku.libquassel.protocol.types.BufferId import de.kuschku.libquassel.protocol.types.BufferInfo import de.kuschku.libquassel.protocol.types.BufferType import de.kuschku.libquassel.protocol.types.NetworkId +import de.kuschku.libquassel.protocol.variant.QtType +import de.kuschku.libquassel.protocol.variant.QuasselType +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test class BufferInfoSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + BufferInfoSerializer, + QuasselSerializers.find<BufferInfo>(QuasselType.BufferInfo), + ) + } + @Test fun testBaseCase() = quasselSerializerTest( BufferInfoSerializer, diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/ByteBufferSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/ByteBufferSerializerTest.kt index dfaa87f44cc60349392a51038b4b6ac361ce66d5..b0671da59481f056ce6582803fe8494fa956eb6a 100644 --- a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/ByteBufferSerializerTest.kt +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/ByteBufferSerializerTest.kt @@ -18,13 +18,25 @@ */ package de.kuschku.libquassel.protocol.serializers.primitive +import de.kuschku.libquassel.protocol.serializers.QtSerializers import de.kuschku.libquassel.protocol.testutil.byteBufferOf import de.kuschku.libquassel.protocol.testutil.matchers.ByteBufferMatcher import de.kuschku.libquassel.protocol.testutil.qtSerializerTest +import de.kuschku.libquassel.protocol.variant.QtType +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test import java.nio.ByteBuffer class ByteBufferSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + ByteBufferSerializer, + QtSerializers.find<ByteBuffer>(QtType.QByteArray), + ) + } + @Test fun testBaseCase() = qtSerializerTest( ByteBufferSerializer, diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/ByteSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/ByteSerializerTest.kt index acb9c99600fb482d198067428508aa68ac8dcec3..0a8557f30326992394677a9ceac4ec667a30b093 100644 --- a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/ByteSerializerTest.kt +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/ByteSerializerTest.kt @@ -18,12 +18,25 @@ */ package de.kuschku.libquassel.protocol.serializers.primitive +import de.kuschku.libquassel.protocol.serializers.QtSerializers import de.kuschku.libquassel.protocol.testutil.byteBufferOf import de.kuschku.libquassel.protocol.testutil.qtSerializerTest +import de.kuschku.libquassel.protocol.variant.QtType +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test +import java.nio.ByteBuffer import kotlin.experimental.inv class ByteSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + ByteSerializer, + QtSerializers.find<Byte>(QtType.Char), + ) + } + @Test fun testZero() = qtSerializerTest( ByteSerializer, diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/DateTimeSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/DateTimeSerializerTest.kt index f2291dbf5013fed9ec70c0e3ef3aec91004a67d1..a93efda966d052672f1e4ed2e5521dddaa89e68b 100644 --- a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/DateTimeSerializerTest.kt +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/DateTimeSerializerTest.kt @@ -18,16 +18,27 @@ */ package de.kuschku.libquassel.protocol.serializers.primitive +import de.kuschku.libquassel.protocol.serializers.QtSerializers import de.kuschku.libquassel.protocol.testutil.byteBufferOf import de.kuschku.libquassel.protocol.testutil.matchers.TemporalMatcher import de.kuschku.libquassel.protocol.testutil.qtSerializerTest +import de.kuschku.libquassel.protocol.variant.QtType +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertThrows import org.threeten.bp.* import org.threeten.bp.chrono.JapaneseDate +import org.threeten.bp.temporal.Temporal class DateTimeSerializerTest { - private val serializer = DateTimeSerializer + @Test + fun testIsRegistered() { + assertEquals( + DateTimeSerializer, + QtSerializers.find<Temporal>(QtType.QDateTime), + ) + } @Test fun testEpoch() = qtSerializerTest( diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/DoubleSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/DoubleSerializerTest.kt index 5b6c41938cca43669cda034af09884b69ad1a25f..0242bcb3578b6f82da370014b0a81a374a88df3a 100644 --- a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/DoubleSerializerTest.kt +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/DoubleSerializerTest.kt @@ -18,11 +18,24 @@ */ package de.kuschku.libquassel.protocol.serializers.primitive +import de.kuschku.libquassel.protocol.serializers.QtSerializers import de.kuschku.libquassel.protocol.testutil.byteBufferOf import de.kuschku.libquassel.protocol.testutil.qtSerializerTest +import de.kuschku.libquassel.protocol.variant.QtType +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test +import org.threeten.bp.temporal.Temporal class DoubleSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + DoubleSerializer, + QtSerializers.find<Double>(QtType.Double), + ) + } + @Test fun testZero() = qtSerializerTest( DoubleSerializer, diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/FloatSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/FloatSerializerTest.kt index ea12027a0640f92713fc34db20e026063c384fdf..b491e312cb0910f66eb32339a7a46951643b5371 100644 --- a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/FloatSerializerTest.kt +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/FloatSerializerTest.kt @@ -18,11 +18,23 @@ */ package de.kuschku.libquassel.protocol.serializers.primitive +import de.kuschku.libquassel.protocol.serializers.QtSerializers import de.kuschku.libquassel.protocol.testutil.byteBufferOf import de.kuschku.libquassel.protocol.testutil.qtSerializerTest +import de.kuschku.libquassel.protocol.variant.QtType +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test class FloatSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + FloatSerializer, + QtSerializers.find<Float>(QtType.Float), + ) + } + @Test fun testZero() = qtSerializerTest( FloatSerializer, diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/IdentityIdSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/IdentityIdSerializerTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..34e0fc5b5d3b33f1a40e8e1fd3ee0e519cb07c8b --- /dev/null +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/IdentityIdSerializerTest.kt @@ -0,0 +1,66 @@ +/* + * Quasseldroid - Quassel client for Android + * + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3 as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ +package de.kuschku.libquassel.protocol.serializers.primitive + +import de.kuschku.libquassel.protocol.serializers.QuasselSerializers +import de.kuschku.libquassel.protocol.testutil.byteBufferOf +import de.kuschku.libquassel.protocol.testutil.qtSerializerTest +import de.kuschku.libquassel.protocol.testutil.quasselSerializerTest +import de.kuschku.libquassel.protocol.types.IdentityId +import de.kuschku.libquassel.protocol.variant.QuasselType +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test + +class IdentityIdSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + IdentityIdSerializer, + QuasselSerializers.find<IdentityId>(QuasselType.IdentityId), + ) + } + + @Test + fun testZero() = quasselSerializerTest( + IdentityIdSerializer, + IdentityId(0), + byteBufferOf(0, 0, 0, 0) + ) + + @Test + fun testMinimal() = quasselSerializerTest( + IdentityIdSerializer, + IdentityId.MIN_VALUE, + byteBufferOf(-128, 0, 0, 0) + ) + + @Test + fun testMaximal() = quasselSerializerTest( + IdentityIdSerializer, + IdentityId.MAX_VALUE, + byteBufferOf(127, -1, -1, -1) + ) + + @Test + fun testAllOnes() = quasselSerializerTest( + IdentityIdSerializer, + IdentityId(0.inv()), + byteBufferOf(-1, -1, -1, -1) + ) +} diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/IntSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/IntSerializerTest.kt index 019f3245ec3ea247997abd6aa5c5e36843e60411..21bd1bb8d4afe820227abb399c6c17b94aeb211d 100644 --- a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/IntSerializerTest.kt +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/IntSerializerTest.kt @@ -18,11 +18,23 @@ */ package de.kuschku.libquassel.protocol.serializers.primitive +import de.kuschku.libquassel.protocol.serializers.QtSerializers import de.kuschku.libquassel.protocol.testutil.byteBufferOf import de.kuschku.libquassel.protocol.testutil.qtSerializerTest +import de.kuschku.libquassel.protocol.variant.QtType +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test class IntSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + IntSerializer, + QtSerializers.find<Int>(QtType.Int), + ) + } + @Test fun testZero() = qtSerializerTest( IntSerializer, diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/LongSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/LongSerializerTest.kt index f6cc0729cd4dcda3587342c99725fcd718e4077d..0c9fec88cd80008ddd8a2a4d13c7f137615e1e85 100644 --- a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/LongSerializerTest.kt +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/LongSerializerTest.kt @@ -18,11 +18,23 @@ */ package de.kuschku.libquassel.protocol.serializers.primitive +import de.kuschku.libquassel.protocol.serializers.QtSerializers import de.kuschku.libquassel.protocol.testutil.byteBufferOf import de.kuschku.libquassel.protocol.testutil.qtSerializerTest +import de.kuschku.libquassel.protocol.variant.QtType +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test class LongSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + LongSerializer, + QtSerializers.find<Long>(QtType.Long), + ) + } + @Test fun testZero() = qtSerializerTest( LongSerializer, diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/MessageSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/MessageSerializerTest.kt index 0c532867041c590405db3aa5e6f28acc6f3e7d1c..e07503e168fe06ba5910cf7c1843b454137e22d0 100644 --- a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/MessageSerializerTest.kt +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/MessageSerializerTest.kt @@ -22,13 +22,28 @@ package de.kuschku.libquassel.protocol.serializers.primitive import de.kuschku.bitflags.none import de.kuschku.bitflags.validValues import de.kuschku.libquassel.protocol.features.FeatureSet +import de.kuschku.libquassel.protocol.serializers.QtSerializers +import de.kuschku.libquassel.protocol.serializers.QuasselSerializers import de.kuschku.libquassel.protocol.testutil.byteBufferOf import de.kuschku.libquassel.protocol.testutil.quasselSerializerTest import de.kuschku.libquassel.protocol.types.* +import de.kuschku.libquassel.protocol.variant.QtType +import de.kuschku.libquassel.protocol.variant.QuasselType +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test import org.threeten.bp.Instant +import java.nio.ByteBuffer class MessageSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + MessageSerializer, + QuasselSerializers.find<Message>(QuasselType.Message), + ) + } + @Test fun testEmpty() = quasselSerializerTest( MessageSerializer, diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/MsgIdSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/MsgIdSerializerTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..ce2107d82a1b1ee99abab783903bb076170a4dd2 --- /dev/null +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/MsgIdSerializerTest.kt @@ -0,0 +1,70 @@ +/* + * Quasseldroid - Quassel client for Android + * + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3 as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ +package de.kuschku.libquassel.protocol.serializers.primitive + +import de.kuschku.libquassel.protocol.features.FeatureSet +import de.kuschku.libquassel.protocol.serializers.QuasselSerializers +import de.kuschku.libquassel.protocol.testutil.byteBufferOf +import de.kuschku.libquassel.protocol.testutil.quasselSerializerTest +import de.kuschku.libquassel.protocol.types.MsgId +import de.kuschku.libquassel.protocol.variant.QuasselType +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test + +class MsgIdSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + MsgIdSerializer, + QuasselSerializers.find<MsgId>(QuasselType.MsgId), + ) + } + + @Test + fun testZero() = quasselSerializerTest( + MsgIdSerializer, + MsgId(0), + byteBufferOf(0, 0, 0, 0, 0, 0, 0, 0), + featureSets = listOf(FeatureSet.all()) + ) + + @Test + fun testMinimal() = quasselSerializerTest( + MsgIdSerializer, + MsgId.MIN_VALUE, + byteBufferOf(-128, 0, 0, 0, 0, 0, 0, 0), + featureSets = listOf(FeatureSet.all()) + ) + + @Test + fun testMaximal() = quasselSerializerTest( + MsgIdSerializer, + MsgId.MAX_VALUE, + byteBufferOf(127, -1, -1, -1, -1, -1, -1, -1), + featureSets = listOf(FeatureSet.all()) + ) + + @Test + fun testAllOnes() = quasselSerializerTest( + MsgIdSerializer, + MsgId(0.inv()), + byteBufferOf(-1, -1, -1, -1, -1, -1, -1, -1), + featureSets = listOf(FeatureSet.all()) + ) +} diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/NetworkIdSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/NetworkIdSerializerTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..996bc8975fcffcced785c307517e9739f553cbe6 --- /dev/null +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/NetworkIdSerializerTest.kt @@ -0,0 +1,66 @@ +/* + * Quasseldroid - Quassel client for Android + * + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3 as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ +package de.kuschku.libquassel.protocol.serializers.primitive + +import de.kuschku.libquassel.protocol.serializers.QuasselSerializers +import de.kuschku.libquassel.protocol.testutil.byteBufferOf +import de.kuschku.libquassel.protocol.testutil.qtSerializerTest +import de.kuschku.libquassel.protocol.testutil.quasselSerializerTest +import de.kuschku.libquassel.protocol.types.NetworkId +import de.kuschku.libquassel.protocol.variant.QuasselType +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test + +class NetworkIdSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + NetworkIdSerializer, + QuasselSerializers.find<NetworkId>(QuasselType.NetworkId), + ) + } + + @Test + fun testZero() = quasselSerializerTest( + NetworkIdSerializer, + NetworkId(0), + byteBufferOf(0, 0, 0, 0) + ) + + @Test + fun testMinimal() = quasselSerializerTest( + NetworkIdSerializer, + NetworkId.MIN_VALUE, + byteBufferOf(-128, 0, 0, 0) + ) + + @Test + fun testMaximal() = quasselSerializerTest( + NetworkIdSerializer, + NetworkId.MAX_VALUE, + byteBufferOf(127, -1, -1, -1) + ) + + @Test + fun testAllOnes() = quasselSerializerTest( + NetworkIdSerializer, + NetworkId(0.inv()), + byteBufferOf(-1, -1, -1, -1) + ) +} diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/PeerPtrSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/PeerPtrSerializerTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..0018e5a642e01dd52a893f433a9a7380540555b1 --- /dev/null +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/PeerPtrSerializerTest.kt @@ -0,0 +1,70 @@ +/* + * Quasseldroid - Quassel client for Android + * + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3 as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ +package de.kuschku.libquassel.protocol.serializers.primitive + +import de.kuschku.libquassel.protocol.features.FeatureSet +import de.kuschku.libquassel.protocol.serializers.QuasselSerializers +import de.kuschku.libquassel.protocol.testutil.byteBufferOf +import de.kuschku.libquassel.protocol.testutil.quasselSerializerTest +import de.kuschku.libquassel.protocol.types.MsgId +import de.kuschku.libquassel.protocol.variant.QuasselType +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test + +class PeerPtrSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + PeerPtrSerializer, + QuasselSerializers.find<ULong>(QuasselType.PeerPtr), + ) + } + + @Test + fun testZero() = quasselSerializerTest( + PeerPtrSerializer, + 0uL, + byteBufferOf(0, 0, 0, 0, 0, 0, 0, 0), + featureSets = listOf(FeatureSet.all()) + ) + + @Test + fun testMinimal() = quasselSerializerTest( + PeerPtrSerializer, + ULong.MIN_VALUE, + byteBufferOf(0, 0, 0, 0, 0, 0, 0, 0), + featureSets = listOf(FeatureSet.all()) + ) + + @Test + fun testMaximal() = quasselSerializerTest( + PeerPtrSerializer, + ULong.MAX_VALUE, + byteBufferOf(-1, -1, -1, -1, -1, -1, -1, -1), + featureSets = listOf(FeatureSet.all()) + ) + + @Test + fun testAllOnes() = quasselSerializerTest( + PeerPtrSerializer, + 0uL.inv(), + byteBufferOf(-1, -1, -1, -1, -1, -1, -1, -1), + featureSets = listOf(FeatureSet.all()) + ) +} diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/QCharSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/QCharSerializerTest.kt index 411635ccf83061acd6447f7125add8fb0eabe05f..b152f1f408084bd928b4175496dcb7afcf5a770c 100644 --- a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/QCharSerializerTest.kt +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/QCharSerializerTest.kt @@ -18,12 +18,24 @@ */ package de.kuschku.libquassel.protocol.serializers.primitive +import de.kuschku.libquassel.protocol.serializers.QtSerializers import de.kuschku.libquassel.protocol.testutil.byteBufferOf import de.kuschku.libquassel.protocol.testutil.matchers.BomMatcherChar import de.kuschku.libquassel.protocol.testutil.qtSerializerTest +import de.kuschku.libquassel.protocol.variant.QtType +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test class QCharSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + QCharSerializer, + QtSerializers.find<Char>(QtType.QChar), + ) + } + @Test fun testNull() = qtSerializerTest( QCharSerializer, diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/QVariantListSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/QVariantListSerializerTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..4bbff85229e2034ab7a42803f44081387af3ac3f --- /dev/null +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/QVariantListSerializerTest.kt @@ -0,0 +1,59 @@ +/* + * Quasseldroid - Quassel client for Android + * + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3 as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ +package de.kuschku.libquassel.protocol.serializers.primitive + +import de.kuschku.libquassel.protocol.serializers.QtSerializers +import de.kuschku.libquassel.protocol.testutil.byteBufferOf +import de.kuschku.libquassel.protocol.testutil.matchers.MapMatcher +import de.kuschku.libquassel.protocol.testutil.qtSerializerTest +import de.kuschku.libquassel.protocol.variant.QVariantList +import de.kuschku.libquassel.protocol.variant.QVariantMap +import de.kuschku.libquassel.protocol.variant.QtType +import de.kuschku.libquassel.protocol.variant.qVariant +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test + +class QVariantListSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + QVariantListSerializer, + QtSerializers.find<QVariantList>(QtType.QVariantList), + ) + } + + @Test + fun testEmpty() = qtSerializerTest( + QVariantListSerializer, + listOf(), + byteBufferOf(0, 0, 0, 0) + ) + + @Test + fun testNormal() = qtSerializerTest( + QVariantListSerializer, + listOf( + qVariant("AzureDiamond", QtType.QString), + qVariant("hunter2", QtType.QString) + ), + byteBufferOf( 0x00u, 0x00u, 0x00u, 0x02u, 0x00u, 0x00u, 0x00u, 0x0Au, 0x00u, 0x00u, 0x00u, 0x00u, 0x18u, 0x00u, 0x41u, 0x00u, 0x7Au, 0x00u, 0x75u, 0x00u, 0x72u, 0x00u, 0x65u, 0x00u, 0x44u, 0x00u, 0x69u, 0x00u, 0x61u, 0x00u, 0x6Du, 0x00u, 0x6Fu, 0x00u, 0x6Eu, 0x00u, 0x64u, 0x00u, 0x00u, 0x00u, 0x0Au, 0x00u, 0x00u, 0x00u, 0x00u, 0x0Eu, 0x00u, 0x68u, 0x00u, 0x75u, 0x00u, 0x6Eu, 0x00u, 0x74u, 0x00u, 0x65u, 0x00u, 0x72u, 0x00u, 0x32u) + ) +} + diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/QVariantMapSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/QVariantMapSerializerTest.kt index bc38705c621977b3da39e44dfed42249db16fe96..04d60612ce7d65639caa3694052438db111dcfe9 100644 --- a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/QVariantMapSerializerTest.kt +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/QVariantMapSerializerTest.kt @@ -18,14 +18,26 @@ */ package de.kuschku.libquassel.protocol.serializers.primitive +import de.kuschku.libquassel.protocol.serializers.QtSerializers import de.kuschku.libquassel.protocol.testutil.byteBufferOf import de.kuschku.libquassel.protocol.testutil.matchers.MapMatcher import de.kuschku.libquassel.protocol.testutil.qtSerializerTest +import de.kuschku.libquassel.protocol.variant.QVariantMap import de.kuschku.libquassel.protocol.variant.QtType import de.kuschku.libquassel.protocol.variant.qVariant +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test class QVariantMapSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + QVariantMapSerializer, + QtSerializers.find<QVariantMap>(QtType.QVariantMap), + ) + } + @Test fun testEmpty() = qtSerializerTest( QVariantMapSerializer, @@ -50,8 +62,20 @@ class QVariantMapSerializerTest { mapOf( "" to qVariant<String?>(null, QtType.QString) ), - byteBufferOf(0x00u, 0x00u, 0x00u, 0x01u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x00u, 0x0Au, 0x00u, 0xFFu, 0xFFu, 0xFFu, 0xFFu), - ::MapMatcher + byteBufferOf( + // length + 0x00u, 0x00u, 0x00u, 0x01u, + // length of key + 0xFFu, 0xFFu, 0xFFu, 0xFFu, + // type of value + 0x00u, 0x00u, 0x00u, 0x0Au, + // isNull of value + 0x00u, + // length of value + 0xFFu, 0xFFu, 0xFFu, 0xFFu + ), + ::MapMatcher, + serializeFeatureSet = null ) } diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/QVariantSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/QVariantSerializerTest.kt index 06e4907bbf994062414802bf8c321c25d6b04606..483a8782eb2d135c481957a9de349c899e8faa61 100644 --- a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/QVariantSerializerTest.kt +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/QVariantSerializerTest.kt @@ -19,12 +19,24 @@ package de.kuschku.libquassel.protocol.serializers.primitive import de.kuschku.libquassel.protocol.serializers.NoSerializerForTypeException +import de.kuschku.libquassel.protocol.serializers.QtSerializers import de.kuschku.libquassel.protocol.testutil.byteBufferOf import de.kuschku.libquassel.protocol.testutil.deserialize +import de.kuschku.libquassel.protocol.variant.QVariant_ +import de.kuschku.libquassel.protocol.variant.QtType +import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test import org.junit.jupiter.api.assertThrows class QVariantSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + QVariantSerializer, + QtSerializers.find<QVariant_>(QtType.QVariant), + ) + } + @Test fun testUnregisteredQtType() { assertThrows<NoSerializerForTypeException> { diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/ShortSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/ShortSerializerTest.kt index 644a03b47310fb208b03a2c74bc1d9a00089c0b0..cd08320030b58b49c6a73ac29d155c731bdfbf7c 100644 --- a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/ShortSerializerTest.kt +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/ShortSerializerTest.kt @@ -18,12 +18,24 @@ */ package de.kuschku.libquassel.protocol.serializers.primitive +import de.kuschku.libquassel.protocol.serializers.QtSerializers import de.kuschku.libquassel.protocol.testutil.byteBufferOf import de.kuschku.libquassel.protocol.testutil.qtSerializerTest +import de.kuschku.libquassel.protocol.variant.QtType +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test import kotlin.experimental.inv class ShortSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + ShortSerializer, + QtSerializers.find<Short>(QtType.Short), + ) + } + @Test fun testZero() = qtSerializerTest( ShortSerializer, diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/StringSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/StringSerializerTest.kt index 01c8ace78b8858bc6b572ca42f58ae70cc865e83..98484c46409b1b216c5c3b050fbafe5cbf2104b8 100644 --- a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/StringSerializerTest.kt +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/StringSerializerTest.kt @@ -18,17 +18,27 @@ */ package de.kuschku.libquassel.protocol.serializers.primitive +import de.kuschku.libquassel.protocol.serializers.QtSerializers import de.kuschku.libquassel.protocol.testutil.byteBufferOf import de.kuschku.libquassel.protocol.testutil.deserialize import de.kuschku.libquassel.protocol.testutil.matchers.BomMatcherString import de.kuschku.libquassel.protocol.testutil.matchers.ByteBufferMatcher import de.kuschku.libquassel.protocol.testutil.testQtSerializerDirect import de.kuschku.libquassel.protocol.testutil.testQtSerializerVariant +import de.kuschku.libquassel.protocol.variant.QtType import org.hamcrest.MatcherAssert.assertThat import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test class StringSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + StringSerializerUtf16, + QtSerializers.find<String>(QtType.QString), + ) + } + @Test fun testBigListOfNaughtyStrings() { this::class.java.getResourceAsStream("/blns.txt")!!.bufferedReader(Charsets.UTF_8).forEachLine { diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/UByteSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/UByteSerializerTest.kt index 79766902bf9964ce148f887c0074cf45828aa19a..df63eeca93f79f2f015ec7a39eae1d1ae6015005 100644 --- a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/UByteSerializerTest.kt +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/UByteSerializerTest.kt @@ -18,11 +18,23 @@ */ package de.kuschku.libquassel.protocol.serializers.primitive +import de.kuschku.libquassel.protocol.serializers.QtSerializers import de.kuschku.libquassel.protocol.testutil.byteBufferOf import de.kuschku.libquassel.protocol.testutil.qtSerializerTest +import de.kuschku.libquassel.protocol.variant.QtType +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test class UByteSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + UByteSerializer, + QtSerializers.find<UByte>(QtType.UChar), + ) + } + @Test fun testZero() = qtSerializerTest( UByteSerializer, diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/UIntSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/UIntSerializerTest.kt index 8b4d498581591e8aef78eaec5af0e9006e01accc..5cdd0b78e09759ede9e875153ec3e7a019d3bebf 100644 --- a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/UIntSerializerTest.kt +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/UIntSerializerTest.kt @@ -18,11 +18,23 @@ */ package de.kuschku.libquassel.protocol.serializers.primitive +import de.kuschku.libquassel.protocol.serializers.QtSerializers import de.kuschku.libquassel.protocol.testutil.byteBufferOf import de.kuschku.libquassel.protocol.testutil.qtSerializerTest +import de.kuschku.libquassel.protocol.variant.QtType +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test class UIntSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + UIntSerializer, + QtSerializers.find<UInt>(QtType.UInt), + ) + } + @Test fun testZero() = qtSerializerTest( UIntSerializer, diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/ULongSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/ULongSerializerTest.kt index 3a68c7c63b74cbf90a0821f6486d49e3a14297cc..53db1a21d0cd159c751fe2605fe218b22566bde0 100644 --- a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/ULongSerializerTest.kt +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/ULongSerializerTest.kt @@ -18,11 +18,23 @@ */ package de.kuschku.libquassel.protocol.serializers.primitive +import de.kuschku.libquassel.protocol.serializers.QtSerializers import de.kuschku.libquassel.protocol.testutil.byteBufferOf import de.kuschku.libquassel.protocol.testutil.qtSerializerTest +import de.kuschku.libquassel.protocol.variant.QtType +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test class ULongSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + ULongSerializer, + QtSerializers.find<ULong>(QtType.ULong), + ) + } + @Test fun testZero() = qtSerializerTest( ULongSerializer, diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/UShortSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/UShortSerializerTest.kt index 57192fb645b903663be3585aa7914ab5a9ee2425..9d7cfeb2794b9d2b9c734991650c090e29ffdadb 100644 --- a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/UShortSerializerTest.kt +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/UShortSerializerTest.kt @@ -18,11 +18,23 @@ */ package de.kuschku.libquassel.protocol.serializers.primitive +import de.kuschku.libquassel.protocol.serializers.QtSerializers import de.kuschku.libquassel.protocol.testutil.byteBufferOf import de.kuschku.libquassel.protocol.testutil.qtSerializerTest +import de.kuschku.libquassel.protocol.variant.QtType +import org.junit.jupiter.api.Assertions +import org.junit.jupiter.api.Assertions.assertEquals import org.junit.jupiter.api.Test class UShortSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + UShortSerializer, + QtSerializers.find<UShort>(QtType.UShort), + ) + } + @Test fun testZero() = qtSerializerTest( UShortSerializer, diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/VoidSerializerTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/VoidSerializerTest.kt new file mode 100644 index 0000000000000000000000000000000000000000..76db87989adba72d2f2ca9c628dabe2941ec1d5a --- /dev/null +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/serializers/primitive/VoidSerializerTest.kt @@ -0,0 +1,43 @@ +/* + * Quasseldroid - Quassel client for Android + * + * Copyright (c) 2020 Janne Mareike Koschinski + * Copyright (c) 2020 The Quassel Project + * + * This program is free software: you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 3 as published + * by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ +package de.kuschku.libquassel.protocol.serializers.primitive + +import de.kuschku.libquassel.protocol.serializers.QtSerializers +import de.kuschku.libquassel.protocol.testutil.byteBufferOf +import de.kuschku.libquassel.protocol.testutil.qtSerializerTest +import de.kuschku.libquassel.protocol.variant.QtType +import org.junit.jupiter.api.Assertions.assertEquals +import org.junit.jupiter.api.Test + +class VoidSerializerTest { + @Test + fun testIsRegistered() { + assertEquals( + VoidSerializer, + QtSerializers.find<Unit>(QtType.Void), + ) + } + + @Test + fun test() = qtSerializerTest( + VoidSerializer, + Unit, + byteBufferOf() + ) +} diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/testutil/byteBufferOf.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/testutil/byteBufferOf.kt index 65f2eb75cefd3b7d9faabdc0ea11587fd737343e..61e196dd7740ac223392755d892b1c6e14493777 100644 --- a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/testutil/byteBufferOf.kt +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/testutil/byteBufferOf.kt @@ -20,5 +20,16 @@ package de.kuschku.libquassel.protocol.testutil import java.nio.ByteBuffer -inline fun byteBufferOf(vararg elements: Byte) = ByteBuffer.wrap(byteArrayOf(*elements)) -inline fun byteBufferOf(vararg elements: UByte) = ByteBuffer.wrap(ubyteArrayOf(*elements).toByteArray()) +@Suppress("NOTHING_TO_INLINE") +inline fun byteBufferOf( + vararg elements: Byte +): ByteBuffer = ByteBuffer.wrap(byteArrayOf(*elements)) + +@Suppress("NOTHING_TO_INLINE") +inline fun byteBufferOf( + vararg elements: UByte +): ByteBuffer = ByteBuffer.wrap(ubyteArrayOf(*elements).toByteArray()) + +@Suppress("NOTHING_TO_INLINE") +inline fun byteBufferOf(): ByteBuffer = + ByteBuffer.allocateDirect(0) diff --git a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/variant/QVariantTest.kt b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/variant/QVariantTest.kt index df0d34f826e364171fa0e76c06ecf378e9322b57..b55e43f4b4b677e0ea09188e604628d552595f34 100644 --- a/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/variant/QVariantTest.kt +++ b/protocol/src/test/kotlin/de/kuschku/libquassel/protocol/variant/QVariantTest.kt @@ -20,6 +20,7 @@ package de.kuschku.libquassel.protocol.variant import de.kuschku.libquassel.protocol.testutil.byteBufferOf +import de.kuschku.libquassel.protocol.types.BufferId import de.kuschku.libquassel.protocol.variant.QtType import de.kuschku.libquassel.protocol.variant.qVariant import org.junit.jupiter.api.Assertions.* @@ -42,5 +43,12 @@ class QVariantTest { QtType.QString ).toString() ) + assertEquals( + "QVariant(BufferIdSerializer, BufferId(-1))", + qVariant( + BufferId(-1), + QuasselType.BufferId + ).toString() + ) } }