blob: 87a94ca51fb93e3d45e24b84a100c9edfe690ed4 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
package com.example.android_kotlin_unit_tests
import io.flutter.plugin.common.BinaryMessenger
import io.mockk.every
import io.mockk.mockk
import junit.framework.TestCase
import org.junit.Test
import java.nio.ByteBuffer
import java.util.ArrayList
internal class AllDatatypesTest: TestCase() {
@Test
fun testNullValues() {
val everything = Everything()
val binaryMessenger = mockk<BinaryMessenger>()
val api = FlutterEverything(binaryMessenger)
every { binaryMessenger.send(any(), any(), any()) } answers {
val codec = FlutterEverything.codec
val message = arg<ByteBuffer>(1)
val reply = arg<BinaryMessenger.BinaryReply>(2)
message.position(0)
val args = codec.decodeMessage(message) as ArrayList<*>
val replyData = codec.encodeMessage(args[0])
replyData?.position(0)
reply.reply(replyData)
}
var didCall = false
api.echo(everything) {
didCall = true
assertNull(it.aBool)
assertNull(it.anInt)
assertNull(it.aDouble)
assertNull(it.aString)
assertNull(it.aByteArray)
assertNull(it.a4ByteArray)
assertNull(it.a8ByteArray)
assertNull(it.aFloatArray)
assertNull(it.aList)
assertNull(it.aMap)
assertNull(it.mapWithObject)
}
assertTrue(didCall)
}
@Test
fun testHasValues() {
val everything = Everything(
aBool = false,
anInt = 1234L,
aDouble = 2.0,
aString = "hello",
aByteArray = byteArrayOf(1, 2, 3, 4),
a4ByteArray = intArrayOf(1, 2, 3, 4),
a8ByteArray = longArrayOf(1, 2, 3, 4),
aFloatArray = doubleArrayOf(0.5, 0.25, 1.5, 1.25),
aList = listOf(1, 2, 3),
aMap = mapOf("hello" to 1234),
mapWithObject = mapOf("hello" to 1234)
)
val binaryMessenger = mockk<BinaryMessenger>()
val api = FlutterEverything(binaryMessenger)
every { binaryMessenger.send(any(), any(), any()) } answers {
val codec = FlutterEverything.codec
val message = arg<ByteBuffer>(1)
val reply = arg<BinaryMessenger.BinaryReply>(2)
message.position(0)
val args = codec.decodeMessage(message) as ArrayList<*>
val replyData = codec.encodeMessage(args[0])
replyData?.position(0)
reply.reply(replyData)
}
var didCall = false
api.echo(everything) {
didCall = true
assertEquals(everything.aBool, it.aBool)
assertEquals(everything.anInt, it.anInt)
assertEquals(everything.aDouble, it.aDouble)
assertEquals(everything.aString, it.aString)
assertTrue(everything.aByteArray.contentEquals(it.aByteArray))
assertTrue(everything.a4ByteArray.contentEquals(it.a4ByteArray))
assertTrue(everything.a8ByteArray.contentEquals(it.a8ByteArray))
assertTrue(everything.aFloatArray.contentEquals(it.aFloatArray))
assertEquals(everything.aList, it.aList)
assertEquals(everything.aMap, it.aMap)
assertEquals(everything.mapWithObject, it.mapWithObject)
}
assertTrue(didCall)
}
@Test
fun testIntegerToLong() {
val everything = Everything(anInt = 123L)
val map = everything.toMap()
assertTrue(map.containsKey("anInt"))
val map2 = hashMapOf("anInt" to 123)
val everything2 = Everything.fromMap(map2)
assertEquals(everything.anInt, everything2.anInt)
}
}