secant-android-wallet/spackle-lib/src/jvmTest/kotlin/co/electriccoin/zcash/spackle/io/WriteAtomicallyTest.kt

63 lines
1.6 KiB
Kotlin

package co.electriccoin.zcash.spackle.io
import kotlinx.coroutines.ExperimentalCoroutinesApi
import kotlinx.coroutines.test.runTest
import org.junit.Test
import java.io.File
import java.util.UUID
import kotlin.test.assertFalse
import kotlin.test.assertNotEquals
import kotlin.test.assertNotNull
import kotlin.test.assertTrue
@OptIn(ExperimentalCoroutinesApi::class)
class WriteAtomicallyTest {
// Putting in the build directory so that it doesn't show up as dirty in git
private fun newFile() = File(File("build"), "atomic_file_test-${UUID.randomUUID()}")
@Test
fun `file has temp name`() = runTest {
val testFile = newFile()
try {
testFile.writeAtomically {
it.writeText("test text")
assertNotEquals(testFile.name, it.name)
}
} finally {
testFile.delete()
}
}
@Test
fun `temp file deleted`() = runTest {
val testFile = newFile()
try {
var tempFile: File? = null
testFile.writeAtomically {
tempFile = it
it.writeText("test text")
}
assertNotNull(tempFile)
assertFalse(tempFile!!.exists())
} finally {
testFile.delete()
}
}
@Test
fun `file is renamed`() = runTest {
val testFile = newFile()
try {
testFile.writeAtomically {
it.writeText("test text")
}
assertTrue(testFile.exists())
} finally {
testFile.delete()
}
}
}