All Downloads are FREE. Search and download functionalities are using the official Maven repository.

commonTest.com.ctrip.flight.mmkv.MMKVKMMTest.kt Maven / Gradle / Ivy

/*
 * Copyright (C) 2022 Ctrip.com.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.ctrip.flight.mmkv

import kotlin.test.assertContentEquals
import kotlin.test.assertEquals

/**
 * MMKV_Kotlin core unit test
 * @author yaqiao
 */

class MMKVKotlinTest {

    companion object {
        const val KEY_NOT_EXIST = "Key_Not_Exist"
    }

    lateinit var mmkv: MMKV_KMP
        private set

    fun setUp() {
        mmkv = mmkvWithID("unitTest", cryptKey = "UnitTestCryptKey")
    }

    fun testDown() {
        mmkv.clearAll()
    }

    fun testBoolean() {
        val result = mmkv.set("Boolean", true)
        assertEquals(result, true)
        val value0 = mmkv.takeBoolean("Boolean")
        assertEquals(value0, true)
        val value1 = mmkv.takeBoolean(KEY_NOT_EXIST)
        assertEquals(value1, false)
        val value2 = mmkv.takeBoolean(KEY_NOT_EXIST, true)
        assertEquals(value2, true)
    }

    fun testInt() {
        val result = mmkv.set("Int", Int.MAX_VALUE)
        assertEquals(result, true)
        val value0 = mmkv.takeInt("Int")
        assertEquals(value0, Int.MAX_VALUE)
        val value1 = mmkv.takeInt(KEY_NOT_EXIST)
        assertEquals(value1, 0)
        val value2 = mmkv.takeInt(KEY_NOT_EXIST, -1)
        assertEquals(value2, -1)
    }

    fun testLong() {
        val result = mmkv.set("Long", Long.MAX_VALUE)
        assertEquals(result, true)
        val value0 = mmkv.takeLong("Long")
        assertEquals(value0, Long.MAX_VALUE)
        val value1 = mmkv.takeLong(KEY_NOT_EXIST)
        assertEquals(value1, 0)
        val value2 = mmkv.takeLong(KEY_NOT_EXIST, -1)
        assertEquals(value2, -1)
    }

    fun testFloat() {
        val result = mmkv.set("Float", Float.MAX_VALUE)
        assertEquals(result, true)
        val value0 = mmkv.takeFloat("Float")
        assertEquals(value0, Float.MAX_VALUE)
        val value1 = mmkv.takeFloat(KEY_NOT_EXIST)
        assertEquals(value1, 0f)
        val value2 = mmkv.takeFloat(KEY_NOT_EXIST, -1f)
        assertEquals(value2, -1f)
    }

    fun testDouble() {
        val result = mmkv.set("Double", Double.MAX_VALUE)
        assertEquals(result, true)
        val value0 = mmkv.takeDouble("Double")
        assertEquals(value0, Double.MAX_VALUE)
        val value1 = mmkv.takeDouble(KEY_NOT_EXIST)
        assertEquals(value1, 0.0)
        val value2 = mmkv.takeDouble(KEY_NOT_EXIST, -1.0)
        assertEquals(value2, -1.0)
    }

    fun testString() {
        val str = "Hello MMKV with Kotlin"
        val result = mmkv.set("String", str)
        assertEquals(result, true)
        val value0 = mmkv.takeString("String")
        assertEquals(value0, str)
        val value1 = mmkv.takeString(KEY_NOT_EXIST)
        assertEquals(value1, "")
        val emptyStr = "Empty"
        val value2 = mmkv.takeString(KEY_NOT_EXIST, emptyStr)
        assertEquals(value2, emptyStr)
    }

    fun testByteArray() {
        val byteArray = byteArrayOf(1, 0, 0, 8, 6)
        val result = mmkv.set("ByteArray", byteArray)
        assertEquals(result, true)
        val value0 = mmkv.takeByteArray("ByteArray")
        assertContentEquals(value0, byteArray)
        val value1 = mmkv.takeByteArray(KEY_NOT_EXIST)
        assertContentEquals(value1, null)
    }

    fun testUInt() {
        val result = mmkv.set("UInt", UInt.MAX_VALUE)
        assertEquals(result, true)
        val value0 = mmkv.takeUInt("UInt")
        assertEquals(value0, UInt.MAX_VALUE)
        val value1 = mmkv.takeUInt(KEY_NOT_EXIST)
        assertEquals(value1, 0U)
        val value2 = mmkv.takeUInt(KEY_NOT_EXIST, 99U)
        assertEquals(value2, 99U)
    }

    fun testULong() {
        val result = mmkv.set("ULong", ULong.MAX_VALUE)
        assertEquals(result, true)
        val value0 = mmkv.takeULong("ULong")
        assertEquals(value0, ULong.MAX_VALUE)
        val value1 = mmkv.takeULong(KEY_NOT_EXIST)
        assertEquals(value1, 0UL)
        val value2 = mmkv.takeULong(KEY_NOT_EXIST, 999UL)
        assertEquals(value2, 999UL)
    }

    fun testRemove() {
        val byteArray = byteArrayOf(2, 0, 0 ,8, 8, 8)
        with(mmkv) {
            var result = set("Boolean_1", true)
            result = result && set("Int_1", Int.MAX_VALUE)
            result = result && set("Long_1", Long.MAX_VALUE)
            result = result && set("Float_1", Float.MAX_VALUE)
            result = result && set("Double_1", Double.MAX_VALUE)
            result = result && set("String_1", "hello")
            result = result && set("UInt_1", UInt.MAX_VALUE)
            result = result && set("ULong_1", ULong.MAX_VALUE)
            result = result && set("ByteArray_1", byteArray)
            assertEquals(result, true)
        }

        val oldCount = mmkv.count
        mmkv.removeValueForKey("Boolean_1")
        mmkv.removeValuesForKeys(listOf("Int_1", "Long_1"))
        assertEquals(oldCount, mmkv.count + 3)

        val resultB = mmkv.takeBoolean("Boolean_1", false)
        assertEquals(resultB, false)

        val resultI = mmkv.takeInt("Int_1")
        assertEquals(resultI, 0)

        val resultL = mmkv.takeLong("Long_1")
        assertEquals(resultL, 0L)

        val resultF = mmkv.takeFloat("Float_1")
        assertEquals(resultF, Float.MAX_VALUE)

        val resultD = mmkv.takeDouble("Double_1")
        assertEquals(resultD, Double.MAX_VALUE)

        val resultS = mmkv.takeString("String_1")
        assertEquals(resultS, "hello")

        val resultUI = mmkv.takeUInt("UInt_1")
        assertEquals(resultUI, UInt.MAX_VALUE)

        val resultUL = mmkv.takeULong("ULong_1")
        assertEquals(resultUL, ULong.MAX_VALUE)

        val resultBA = mmkv.takeByteArray("ByteArray_1")
        assertContentEquals(resultBA, byteArray)
    }

    fun testStringSet() {
        val strSet0 = setOf("t", "r", "i", "p")
        val result = mmkv.set("StringSet", strSet0)
        assertEquals(result, true)

        val value0 = mmkv.takeStringSet("StringSet")
        assertEquals(value0, strSet0)

        val value1 = mmkv.takeStringSet(KEY_NOT_EXIST)
        assertEquals(value1, null)

        val value2 = mmkv.takeStringSet(KEY_NOT_EXIST)
        assertEquals(value2, null)
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy