diff --git a/app/src/androidTest/java/com/geeksville/mesh/ChannelTest.kt b/app/src/androidTest/java/com/geeksville/mesh/ChannelTest.kt new file mode 100644 index 000000000..02e3cf459 --- /dev/null +++ b/app/src/androidTest/java/com/geeksville/mesh/ChannelTest.kt @@ -0,0 +1,22 @@ +package com.geeksville.mesh + + +import androidx.compose.frames.open +import androidx.test.ext.junit.runners.AndroidJUnit4 +import com.geeksville.mesh.model.Channel +import org.junit.Assert +import org.junit.Test +import org.junit.runner.RunWith + +@RunWith(AndroidJUnit4::class) +class ChannelTest { + @Test + fun channelUrlGood() { + open() // Needed to make Compose think we are inside a Frame + val ch = Channel.emulated + + Assert.assertTrue(ch.getChannelUrl().toString().startsWith(Channel.prefix)) + Assert.assertEquals(Channel(ch.getChannelUrl()), ch) + } + +} \ No newline at end of file diff --git a/app/src/androidTest/java/com/geeksville/mesh/ExampleInstrumentedTest.kt b/app/src/androidTest/java/com/geeksville/mesh/ExampleInstrumentedTest.kt index 2ae926b86..2e96d2f76 100644 --- a/app/src/androidTest/java/com/geeksville/mesh/ExampleInstrumentedTest.kt +++ b/app/src/androidTest/java/com/geeksville/mesh/ExampleInstrumentedTest.kt @@ -1,13 +1,11 @@ package com.geeksville.mesh -import androidx.test.platform.app.InstrumentationRegistry import androidx.test.ext.junit.runners.AndroidJUnit4 - +import androidx.test.platform.app.InstrumentationRegistry +import org.junit.Assert.assertEquals import org.junit.Test import org.junit.runner.RunWith -import org.junit.Assert.* - /** * Instrumented test, which will execute on an Android device. * @@ -19,6 +17,6 @@ class ExampleInstrumentedTest { fun useAppContext() { // Context of the app under test. val appContext = InstrumentationRegistry.getInstrumentation().targetContext - assertEquals("com.geeksville.com.geeksville.mesh", appContext.packageName) + assertEquals("com.geeksville.mesh", appContext.packageName) } } diff --git a/app/src/main/java/com/geeksville/mesh/model/UIState.kt b/app/src/main/java/com/geeksville/mesh/model/UIState.kt index c730cec60..36c6fc195 100644 --- a/app/src/main/java/com/geeksville/mesh/model/UIState.kt +++ b/app/src/main/java/com/geeksville/mesh/model/UIState.kt @@ -24,11 +24,14 @@ import java.net.MalformedURLException data class Channel( var name: String, var modemConfig: ModemConfig, - var settings: MeshProtos.ChannelSettings? = null + var settings: MeshProtos.ChannelSettings? = MeshProtos.ChannelSettings.getDefaultInstance() ) { companion object { // Placeholder when emulating - val emulated = Channel("Default", ModemConfig.Bw125Cr45Sf128) + val emulated = Channel( + MeshProtos.ChannelSettings.newBuilder().setName("Default") + .setModemConfig(ModemConfig.Bw125Cr45Sf128).build() + ) const val prefix = "https://www.meshtastic.org/c/" @@ -53,20 +56,20 @@ data class Channel( var editable = false /// Return an URL that represents the current channel values - fun getChannelUrl(): String { + fun getChannelUrl(): Uri { // If we have a valid radio config use it, othterwise use whatever we have saved in the prefs val channelBytes = settings?.toByteArray() ?: ByteArray(0) // if unset just use empty val enc = Base64.encodeToString(channelBytes, base64Flags) - return "$prefix$enc" + return Uri.parse("$prefix$enc") } fun getChannelQR(): Bitmap { val multiFormatWriter = MultiFormatWriter() val bitMatrix = - multiFormatWriter.encode(getChannelUrl(), BarcodeFormat.QR_CODE, 192, 192); + multiFormatWriter.encode(getChannelUrl().toString(), BarcodeFormat.QR_CODE, 192, 192); val barcodeEncoder = BarcodeEncoder() return barcodeEncoder.createBitmap(bitMatrix) } @@ -128,7 +131,7 @@ object UIState : Logging { radioConfig.value = c getPreferences(context).edit(commit = true) { - this.putString("channel-url", getChannel()!!.getChannelUrl()) + this.putString("channel-url", getChannel()!!.getChannelUrl().toString()) } } diff --git a/app/src/test/java/com/geeksville/mesh/model/ChannelTest.kt b/app/src/test/java/com/geeksville/mesh/model/ChannelTest.kt deleted file mode 100644 index 147086f60..000000000 --- a/app/src/test/java/com/geeksville/mesh/model/ChannelTest.kt +++ /dev/null @@ -1,14 +0,0 @@ -package com.geeksville.mesh.model - -import org.junit.Test - -class ChannelTest { - @Test - fun channelUrlGood() { - val ch = Channel.emulated - - // FIXME, currently not allowed because it is a Compose model - // Assert.assertTrue(ch.getChannelUrl().startsWith(Channel.prefix)) - } - -} \ No newline at end of file