From 78219cc5219b364b17df48bd20e636bcfec39cc4 Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Sat, 9 Nov 2024 18:42:20 +0100 Subject: documents: Add single merge tests local <-> documents Fixed DocumentFile#equals. DelayedDocumentFile was equal DocumentFile but DocumentFile wasn't equal to DelayedDocumentFile. --- libs/documents/build.gradle.kts | 1 + .../the_jk/cleversync/io/documents/DocumentFile.kt | 18 ++++++++-- .../cleversync/documents/DocumentTreeTest.kt | 2 +- .../cleversync/documents/DocumentTreeTestHelper.kt | 5 ++- .../documents/SingleMergeDocumentsLocalTest.kt | 41 ++++++++++++++++++++++ .../documents/SingleMergeLocalDocumentsTest.kt | 40 +++++++++++++++++++++ 6 files changed, 101 insertions(+), 6 deletions(-) create mode 100644 libs/documents/src/test/java/org/the_jk/cleversync/documents/SingleMergeDocumentsLocalTest.kt create mode 100644 libs/documents/src/test/java/org/the_jk/cleversync/documents/SingleMergeLocalDocumentsTest.kt (limited to 'libs') diff --git a/libs/documents/build.gradle.kts b/libs/documents/build.gradle.kts index 9a1d104..5abcf99 100644 --- a/libs/documents/build.gradle.kts +++ b/libs/documents/build.gradle.kts @@ -22,6 +22,7 @@ dependencies { implementation(libs.androidx.core) implementation(libs.androidx.fragment.ktx) implementation(libs.androidx.uiautomator) + testImplementation(project(":libs:local")) testImplementation(project(":libs:test-utils")) androidTestImplementation(project(":libs:test-utils")) } diff --git a/libs/documents/src/main/java/org/the_jk/cleversync/io/documents/DocumentFile.kt b/libs/documents/src/main/java/org/the_jk/cleversync/io/documents/DocumentFile.kt index 768b679..31aeb7f 100644 --- a/libs/documents/src/main/java/org/the_jk/cleversync/io/documents/DocumentFile.kt +++ b/libs/documents/src/main/java/org/the_jk/cleversync/io/documents/DocumentFile.kt @@ -40,8 +40,22 @@ internal class DocumentFile( } } - override fun equals(other: Any?) = other is DocumentFile && - DocumentsContract.getDocumentId(other.documentUri) == DocumentsContract.getDocumentId(documentUri) + override fun equals(other: Any?): Boolean { + return when (other) { + is DocumentFile -> { + DocumentsContract.getDocumentId(other.documentUri) == + DocumentsContract.getDocumentId(documentUri) + } + + is DelayedCreationDocumentFile -> { + other == this + } + + else -> { + false + } + } + } override fun hashCode() = DocumentsContract.getDocumentId(documentUri).hashCode() override fun toString() = DocumentsContract.getDocumentId(documentUri) ?: "null" } diff --git a/libs/documents/src/test/java/org/the_jk/cleversync/documents/DocumentTreeTest.kt b/libs/documents/src/test/java/org/the_jk/cleversync/documents/DocumentTreeTest.kt index ad6abfa..30fc96f 100644 --- a/libs/documents/src/test/java/org/the_jk/cleversync/documents/DocumentTreeTest.kt +++ b/libs/documents/src/test/java/org/the_jk/cleversync/documents/DocumentTreeTest.kt @@ -21,7 +21,7 @@ class DocumentTreeTest : TreeAbstractTest() { @Before fun setUp() { - tree = helper.openTree(folder) + tree = helper.openTree(folder.root) } @After diff --git a/libs/documents/src/test/java/org/the_jk/cleversync/documents/DocumentTreeTestHelper.kt b/libs/documents/src/test/java/org/the_jk/cleversync/documents/DocumentTreeTestHelper.kt index 5358920..6ebb7b6 100644 --- a/libs/documents/src/test/java/org/the_jk/cleversync/documents/DocumentTreeTestHelper.kt +++ b/libs/documents/src/test/java/org/the_jk/cleversync/documents/DocumentTreeTestHelper.kt @@ -13,7 +13,6 @@ import android.provider.DocumentsProvider import android.webkit.MimeTypeMap import androidx.test.core.app.ApplicationProvider import com.google.common.truth.Truth.assertThat -import org.junit.rules.TemporaryFolder import org.robolectric.Robolectric import org.robolectric.android.controller.ContentProviderController import org.the_jk.cleversync.io.ModifiableTree @@ -26,7 +25,7 @@ import java.io.IOException class DocumentTreeTestHelper { private lateinit var controller: ContentProviderController - fun openTree(folder: TemporaryFolder): ModifiableTree { + fun openTree(root: File): ModifiableTree { val context = ApplicationProvider.getApplicationContext() val contentResolver = context.contentResolver val providerInfo = ProviderInfo() @@ -38,7 +37,7 @@ class DocumentTreeTestHelper { controller = Robolectric .buildContentProvider(FakeProvider::class.java) - controller.get().setBaseDir(folder.root) + controller.get().setBaseDir(root) controller.create(providerInfo) val treeUri = DocumentsContract.buildTreeDocumentUri(providerInfo.authority, ROOT) diff --git a/libs/documents/src/test/java/org/the_jk/cleversync/documents/SingleMergeDocumentsLocalTest.kt b/libs/documents/src/test/java/org/the_jk/cleversync/documents/SingleMergeDocumentsLocalTest.kt new file mode 100644 index 0000000..ecde00b --- /dev/null +++ b/libs/documents/src/test/java/org/the_jk/cleversync/documents/SingleMergeDocumentsLocalTest.kt @@ -0,0 +1,41 @@ +package org.the_jk.cleversync.documents + + +import org.junit.After +import org.junit.Rule +import org.junit.rules.TemporaryFolder +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config +import org.the_jk.cleversync.io.BaseSingleMergeTest +import org.the_jk.cleversync.io.ModifiableTree +import org.the_jk.cleversync.local.LocalTreeFactory + +@Config(manifest=Config.NONE) +@RunWith(RobolectricTestRunner::class) +class SingleMergeDocumentsLocalTest : BaseSingleMergeTest() { + @Rule + @JvmField + val temp = TemporaryFolder() + + private val helper = DocumentTreeTestHelper() + private lateinit var documents: ModifiableTree + + @After + fun tearDownTest() { + helper.closeTree(documents) + } + + override fun source(): ModifiableTree { + documents = helper.openTree(temp.newFolder("source")) + return documents + } + + override fun sourceSupportsSymlinks() = false + + override fun target(): ModifiableTree { + return LocalTreeFactory.modifiableTree(temp.newFolder("target").toPath()) + } + + override fun targetSupportsSymlinks() = true +} diff --git a/libs/documents/src/test/java/org/the_jk/cleversync/documents/SingleMergeLocalDocumentsTest.kt b/libs/documents/src/test/java/org/the_jk/cleversync/documents/SingleMergeLocalDocumentsTest.kt new file mode 100644 index 0000000..68a5281 --- /dev/null +++ b/libs/documents/src/test/java/org/the_jk/cleversync/documents/SingleMergeLocalDocumentsTest.kt @@ -0,0 +1,40 @@ +package org.the_jk.cleversync.documents + +import org.junit.After +import org.junit.Rule +import org.junit.rules.TemporaryFolder +import org.junit.runner.RunWith +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config +import org.the_jk.cleversync.io.BaseSingleMergeTest +import org.the_jk.cleversync.io.ModifiableTree +import org.the_jk.cleversync.local.LocalTreeFactory + +@Config(manifest=Config.NONE) +@RunWith(RobolectricTestRunner::class) +class SingleMergeLocalDocumentsTest : BaseSingleMergeTest() { + @Rule + @JvmField + val temp = TemporaryFolder() + + private val helper = DocumentTreeTestHelper() + private lateinit var documents: ModifiableTree + + @After + fun tearDownTest() { + helper.closeTree(documents) + } + + override fun source(): ModifiableTree { + return LocalTreeFactory.modifiableTree(temp.newFolder("source").toPath()) + } + + override fun sourceSupportsSymlinks() = true + + override fun target(): ModifiableTree { + documents = helper.openTree(temp.newFolder("target")) + return documents + } + + override fun targetSupportsSymlinks() = false +} -- cgit v1.2.3-70-g09d2