summaryrefslogtreecommitdiff
path: root/libs/samba/src/test
diff options
context:
space:
mode:
Diffstat (limited to 'libs/samba/src/test')
-rw-r--r--libs/samba/src/test/java/org/the_jk/cleversync/samba/SambaTreeTest.kt68
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