From eff4df64429e70793881904f2d45022e78ea8203 Mon Sep 17 00:00:00 2001 From: Janne Koschinski <janne@kuschku.de> Date: Mon, 21 Jan 2019 16:54:41 +0100 Subject: [PATCH] =?UTF-8?q?Fixed=20issue=20with=20flags=20and=20added=20te?= =?UTF-8?q?st=20to=20ensure=20they=20won=E2=80=99t=20happen=20again?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../de/kuschku/libquassel/util/flag/Flag.kt | 2 +- .../kuschku/libquassel/util/flag/LongFlag.kt | 2 +- .../kuschku/libquassel/util/flag/ShortFlag.kt | 2 +- .../libquassel/quassel/BufferTypeTest.kt | 70 +++++++++++++++++++ 4 files changed, 73 insertions(+), 3 deletions(-) create mode 100644 lib/src/test/java/de/kuschku/libquassel/quassel/BufferTypeTest.kt diff --git a/lib/src/main/java/de/kuschku/libquassel/util/flag/Flag.kt b/lib/src/main/java/de/kuschku/libquassel/util/flag/Flag.kt index a73c80f57..ab5ce92ea 100644 --- a/lib/src/main/java/de/kuschku/libquassel/util/flag/Flag.kt +++ b/lib/src/main/java/de/kuschku/libquassel/util/flag/Flag.kt @@ -104,7 +104,7 @@ data class Flags<E>( infix fun <T> Flags<T>.hasFlag(which: T): Boolean where T : Enum<T>, T : Flag<T> { // an Undefined flag is a special case. - if (value == 0u) return false + if (which.bit == 0u) return false return value and which.bit == which.bit } diff --git a/lib/src/main/java/de/kuschku/libquassel/util/flag/LongFlag.kt b/lib/src/main/java/de/kuschku/libquassel/util/flag/LongFlag.kt index 61dec8af0..5aa32e182 100644 --- a/lib/src/main/java/de/kuschku/libquassel/util/flag/LongFlag.kt +++ b/lib/src/main/java/de/kuschku/libquassel/util/flag/LongFlag.kt @@ -104,7 +104,7 @@ data class LongFlags<E>( infix fun <T> LongFlags<T>.hasFlag(which: T): Boolean where T : Enum<T>, T : LongFlag<T> { // an Undefined flag is a special case. - if (value == 0uL) return false + if (which.bit == 0uL) return false return value and which.bit == which.bit } diff --git a/lib/src/main/java/de/kuschku/libquassel/util/flag/ShortFlag.kt b/lib/src/main/java/de/kuschku/libquassel/util/flag/ShortFlag.kt index 273d8cce6..0eacf94f3 100644 --- a/lib/src/main/java/de/kuschku/libquassel/util/flag/ShortFlag.kt +++ b/lib/src/main/java/de/kuschku/libquassel/util/flag/ShortFlag.kt @@ -104,7 +104,7 @@ data class ShortFlags<E>( infix fun <T> ShortFlags<T>.hasFlag(which: T): Boolean where T : Enum<T>, T : ShortFlag<T> { // an Undefined flag is a special case. - if (value == 0u.toUShort()) return false + if (which.bit == 0u.toUShort()) return false return value and which.bit == which.bit } diff --git a/lib/src/test/java/de/kuschku/libquassel/quassel/BufferTypeTest.kt b/lib/src/test/java/de/kuschku/libquassel/quassel/BufferTypeTest.kt new file mode 100644 index 000000000..e8e4389d4 --- /dev/null +++ b/lib/src/test/java/de/kuschku/libquassel/quassel/BufferTypeTest.kt @@ -0,0 +1,70 @@ +package de.kuschku.libquassel.quassel + +import de.kuschku.libquassel.protocol.Buffer_Type +import de.kuschku.libquassel.util.flag.hasFlag +import org.junit.Assert +import org.junit.Test + +class BufferTypeTest { + @Test + fun testHasFlag() { + Assert.assertTrue(Buffer_Type.of(Buffer_Type.StatusBuffer).hasFlag(Buffer_Type.StatusBuffer)) + Assert.assertFalse(Buffer_Type.of(Buffer_Type.StatusBuffer).hasFlag(Buffer_Type.QueryBuffer)) + Assert.assertFalse(Buffer_Type.of(Buffer_Type.StatusBuffer).hasFlag(Buffer_Type.ChannelBuffer)) + Assert.assertFalse(Buffer_Type.of(Buffer_Type.StatusBuffer).hasFlag(Buffer_Type.GroupBuffer)) + + Assert.assertFalse(Buffer_Type.of(Buffer_Type.QueryBuffer).hasFlag(Buffer_Type.StatusBuffer)) + Assert.assertTrue(Buffer_Type.of(Buffer_Type.QueryBuffer).hasFlag(Buffer_Type.QueryBuffer)) + Assert.assertFalse(Buffer_Type.of(Buffer_Type.QueryBuffer).hasFlag(Buffer_Type.ChannelBuffer)) + Assert.assertFalse(Buffer_Type.of(Buffer_Type.QueryBuffer).hasFlag(Buffer_Type.GroupBuffer)) + + Assert.assertFalse(Buffer_Type.of(Buffer_Type.ChannelBuffer).hasFlag(Buffer_Type.StatusBuffer)) + Assert.assertFalse(Buffer_Type.of(Buffer_Type.ChannelBuffer).hasFlag(Buffer_Type.QueryBuffer)) + Assert.assertTrue(Buffer_Type.of(Buffer_Type.ChannelBuffer).hasFlag(Buffer_Type.ChannelBuffer)) + Assert.assertFalse(Buffer_Type.of(Buffer_Type.ChannelBuffer).hasFlag(Buffer_Type.GroupBuffer)) + + Assert.assertFalse(Buffer_Type.of(Buffer_Type.GroupBuffer).hasFlag(Buffer_Type.StatusBuffer)) + Assert.assertFalse(Buffer_Type.of(Buffer_Type.GroupBuffer).hasFlag(Buffer_Type.QueryBuffer)) + Assert.assertFalse(Buffer_Type.of(Buffer_Type.GroupBuffer).hasFlag(Buffer_Type.ChannelBuffer)) + Assert.assertTrue(Buffer_Type.of(Buffer_Type.GroupBuffer).hasFlag(Buffer_Type.GroupBuffer)) + } + + @Test + fun testEnabledValues() { + Assert.assertEquals( + Buffer_Type.StatusBuffer, + Buffer_Type.of(Buffer_Type.StatusBuffer).enabledValues().firstOrNull() + ) + Assert.assertEquals( + setOf(Buffer_Type.StatusBuffer), + Buffer_Type.of(Buffer_Type.StatusBuffer).enabledValues() + ) + + Assert.assertEquals( + Buffer_Type.QueryBuffer, + Buffer_Type.of(Buffer_Type.QueryBuffer).enabledValues().firstOrNull() + ) + Assert.assertEquals( + setOf(Buffer_Type.QueryBuffer), + Buffer_Type.of(Buffer_Type.QueryBuffer).enabledValues() + ) + + Assert.assertEquals( + Buffer_Type.ChannelBuffer, + Buffer_Type.of(Buffer_Type.ChannelBuffer).enabledValues().firstOrNull() + ) + Assert.assertEquals( + setOf(Buffer_Type.ChannelBuffer), + Buffer_Type.of(Buffer_Type.ChannelBuffer).enabledValues() + ) + + Assert.assertEquals( + Buffer_Type.GroupBuffer, + Buffer_Type.of(Buffer_Type.GroupBuffer).enabledValues().firstOrNull() + ) + Assert.assertEquals( + setOf(Buffer_Type.GroupBuffer), + Buffer_Type.of(Buffer_Type.GroupBuffer).enabledValues() + ) + } +} -- GitLab