Selaa lähdekoodia

Add IntentExtensionTest

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 1 vuosi sitten
vanhempi
commit
7f8be9130e

+ 3 - 31
app/src/androidTest/java/com/nextcloud/extensions/BundleExtensionsTests.kt

@@ -22,17 +22,16 @@
 package com.nextcloud.extensions
 
 import android.os.Bundle
-import android.os.Parcel
-import android.os.Parcelable
 import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.nextcloud.test.model.OtherTestData
+import com.nextcloud.test.model.TestData
+import com.nextcloud.test.model.TestDataParcelable
 import com.nextcloud.utils.extensions.getParcelableArgument
 import com.nextcloud.utils.extensions.getSerializableArgument
-import kotlinx.parcelize.Parcelize
 import org.junit.Assert.assertEquals
 import org.junit.Assert.assertNull
 import org.junit.Test
 import org.junit.runner.RunWith
-import java.io.Serializable
 
 @RunWith(AndroidJUnit4::class)
 class BundleExtensionTest {
@@ -86,31 +85,4 @@ class BundleExtensionTest {
         val retrievedObject = (null as Bundle?).getParcelableArgument(key, TestDataParcelable::class.java)
         assertNull(retrievedObject)
     }
-
-    @Parcelize
-    class OtherTestData : Parcelable
-
-    data class TestData(val message: String) : Serializable
-
-    data class TestDataParcelable(val message: String) : Parcelable {
-        constructor(parcel: Parcel) : this(parcel.readString() ?: "")
-
-        override fun writeToParcel(parcel: Parcel, flags: Int) {
-            parcel.writeString(message)
-        }
-
-        override fun describeContents(): Int {
-            return 0
-        }
-
-        companion object CREATOR : Parcelable.Creator<TestDataParcelable> {
-            override fun createFromParcel(parcel: Parcel): TestDataParcelable {
-                return TestDataParcelable(parcel)
-            }
-
-            override fun newArray(size: Int): Array<TestDataParcelable?> {
-                return arrayOfNulls(size)
-            }
-        }
-    }
 }

+ 88 - 0
app/src/androidTest/java/com/nextcloud/extensions/IntentExtensionsTests.kt

@@ -0,0 +1,88 @@
+/*
+ * Nextcloud Android client application
+ *   
+ * @author Alper Ozturk
+ * Copyright (C) 2024 Alper Ozturk
+ * Copyright (C) 2024 Nextcloud GmbH
+ *   
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *   
+ * 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 Affero General Public License for more details.
+ *   
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package com.nextcloud.extensions
+
+import android.content.Intent
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import com.nextcloud.test.model.OtherTestData
+import com.nextcloud.test.model.TestData
+import com.nextcloud.test.model.TestDataParcelable
+import com.nextcloud.utils.extensions.getParcelableArgument
+import com.nextcloud.utils.extensions.getSerializableArgument
+import org.junit.Assert.assertEquals
+import org.junit.Assert.assertNull
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@RunWith(AndroidJUnit4::class)
+class IntentExtensionTest {
+
+    private val key = "testDataKey"
+
+    @Test
+    fun test_GetSerializableArgument_WhenGivenValidIntent_ShouldReturnExpectedData() {
+        val intent = Intent()
+        val testObject = TestData("Hello")
+        intent.putExtra(key, testObject)
+        val retrievedObject = intent.getSerializableArgument(key, TestData::class.java)
+        assertEquals(testObject, retrievedObject)
+    }
+
+    @Test
+    fun test_GetSerializableArgument_WhenGivenValidIntentAndWrongClassType_ShouldReturnNull() {
+        val intent = Intent()
+        val testObject = TestData("Hello")
+        intent.putExtra(key, testObject)
+        val retrievedObject = intent.getSerializableArgument(key, Array<String>::class.java)
+        assertNull(retrievedObject)
+    }
+
+    @Test
+    fun test_GetParcelableArgument_WhenGivenValidIntentAndWrongClassType_ShouldReturnNull() {
+        val intent = Intent()
+        val testObject = TestData("Hello")
+        intent.putExtra(key, testObject)
+        val retrievedObject = intent.getParcelableArgument(key, OtherTestData::class.java)
+        assertNull(retrievedObject)
+    }
+
+    @Test
+    fun test_GetParcelableArgument_WhenGivenValidIntent_ShouldReturnExpectedData() {
+        val intent = Intent()
+        val testObject = TestDataParcelable("Hello")
+        intent.putExtra(key, testObject)
+        val retrievedObject = intent.getParcelableArgument(key, TestDataParcelable::class.java)
+        assertEquals(testObject, retrievedObject)
+    }
+
+    @Test
+    fun test_GetSerializableArgument_WhenGivenNullIntent_ShouldReturnNull() {
+        val retrievedObject = (null as Intent?).getSerializableArgument(key, TestData::class.java)
+        assertNull(retrievedObject)
+    }
+
+    @Test
+    fun test_GetParcelableArgument_WhenGivenNullIntent_ShouldReturnNull() {
+        val retrievedObject = (null as Intent?).getParcelableArgument(key, TestDataParcelable::class.java)
+        assertNull(retrievedObject)
+    }
+}

+ 54 - 0
app/src/androidTest/java/com/nextcloud/test/model/TestModels.kt

@@ -0,0 +1,54 @@
+/*
+ * Nextcloud Android client application
+ *
+ * @author Alper Ozturk
+ * Copyright (C) 2024 Alper Ozturk
+ * Copyright (C) 2024 Nextcloud GmbH
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * 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 Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package com.nextcloud.test.model
+
+import android.os.Parcel
+import android.os.Parcelable
+import kotlinx.parcelize.Parcelize
+import java.io.Serializable
+
+@Parcelize
+class OtherTestData : Parcelable
+
+data class TestData(val message: String) : Serializable
+
+data class TestDataParcelable(val message: String) : Parcelable {
+    constructor(parcel: Parcel) : this(parcel.readString() ?: "")
+
+    override fun writeToParcel(parcel: Parcel, flags: Int) {
+        parcel.writeString(message)
+    }
+
+    override fun describeContents(): Int {
+        return 0
+    }
+
+    companion object CREATOR : Parcelable.Creator<TestDataParcelable> {
+        override fun createFromParcel(parcel: Parcel): TestDataParcelable {
+            return TestDataParcelable(parcel)
+        }
+
+        override fun newArray(size: Int): Array<TestDataParcelable?> {
+            return arrayOfNulls(size)
+        }
+    }
+}

+ 0 - 1
app/src/main/java/com/nextcloud/utils/extensions/BundleExtensions.kt

@@ -25,7 +25,6 @@ import android.os.Build
 import android.os.Bundle
 import android.os.Parcelable
 import com.owncloud.android.lib.common.utils.Log_OC
-import org.apache.commons.logging.Log
 import java.io.Serializable
 
 private const val tag = "BundleExtension"