diff options
| author | Joel Klinghed <the_jk@spawned.biz> | 2024-08-23 00:24:18 +0200 |
|---|---|---|
| committer | Joel Klinghed <the_jk@spawned.biz> | 2024-08-23 00:24:18 +0200 |
| commit | 16d2b1750a78527a5524bfc3171a42f67c323508 (patch) | |
| tree | 1defa7bb7f44a089103582b0777662394ef1ba56 /libs/samba/src/test/java | |
| parent | a95264b5273748330c3126632277fd7a0db8ec91 (diff) | |
samba: Add support for read/write file
Diffstat (limited to 'libs/samba/src/test/java')
| -rw-r--r-- | libs/samba/src/test/java/org/the_jk/cleversync/samba/SambaTreeTest.kt | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/libs/samba/src/test/java/org/the_jk/cleversync/samba/SambaTreeTest.kt b/libs/samba/src/test/java/org/the_jk/cleversync/samba/SambaTreeTest.kt index 1eddb6b..5df61da 100644 --- a/libs/samba/src/test/java/org/the_jk/cleversync/samba/SambaTreeTest.kt +++ b/libs/samba/src/test/java/org/the_jk/cleversync/samba/SambaTreeTest.kt @@ -14,6 +14,7 @@ import org.robolectric.annotation.Config import org.the_jk.cleversync.io.Link import org.the_jk.cleversync.io.samba.SambaCredentials import java.io.File +import java.nio.charset.StandardCharsets import java.nio.file.Files import kotlin.io.path.createSymbolicLinkPointingTo @@ -82,6 +83,73 @@ class SambaTreeTest { } } + @Test + fun readFile() { + File(shareDir, "file").writeText("hello world") + + SambaTreeFactory.tree(uri, credentials).getOrThrow().use { root -> + val file = root.openFile("file") + assertThat(file?.name).isEqualTo("file") + assertThat(file?.size).isEqualTo(11UL) + + file?.read().use { input -> + assertThat(input?.readAllBytes()?.toString(StandardCharsets.UTF_8)).isEqualTo("hello world") + } + + file?.read().use { input -> + assertThat(input?.available()).isEqualTo(11) + assertThat(input?.markSupported()).isTrue() + val buffer = ByteArray(10) + assertThat(input?.read(buffer, 5, 5)).isEqualTo(5) + input?.mark(100) + assertThat(buffer.sliceArray(5..<10).toString(StandardCharsets.UTF_8)).isEqualTo("hello") + assertThat(input?.read(buffer)).isEqualTo(6) + assertThat(buffer.sliceArray(0..<6).toString(StandardCharsets.UTF_8)).isEqualTo(" world") + input?.reset() + assertThat(input?.read(buffer, 3, 5)).isEqualTo(5) + assertThat(buffer.sliceArray(3..<8).toString(StandardCharsets.UTF_8)).isEqualTo(" worl") + } + } + } + + @Test + fun writeFile() { + SambaTreeFactory.modifiableTree(uri, credentials).getOrThrow().use { root -> + val file = root.createFile("file") + assertThat(file.name).isEqualTo("file") + + file.write().writer().use { output -> + output.write("hello world") + } + + assertThat(file.size).isEqualTo(11UL) + } + + assertThat(File(shareDir, "file").readText()).isEqualTo("hello world") + } + + @Test + fun overwriteFile() { + File(shareDir, "file").writeText("hello world") + + SambaTreeFactory.modifiableTree(uri, credentials).getOrThrow().use { root -> + val file = root.modifiableOpenFile("file") + assertThat(file?.name).isEqualTo("file") + assertThat(file?.size).isEqualTo(11UL) + + file?.write().use { output -> + val buffer = "foobar".toByteArray(StandardCharsets.UTF_8) + output?.write(buffer, 0, 1) + output?.write(buffer, 1, 2) + output?.write(buffer, 3, 3) + } + + assertThat(file?.size).isEqualTo(6UL) + } + + assertThat(File(shareDir, "file").readText()).isEqualTo("foobar") + } + companion object { private lateinit var uri: String private lateinit var credentials: SambaCredentials |
