import org.junit.jupiter.api.Test import yenon.squadcompanion.logreader.LogReaderTail import java.nio.file.Files import java.nio.file.Paths import kotlin.test.assertEquals class WatchTest { @Test fun testWatch() { val target = Paths.get("testWatch") val writer = Files.newBufferedWriter(target) val reader = Files.newBufferedReader(target) writer.write("This is some text.\n") writer.flush() assertEquals("This is some text.", reader.readLine()) assertEquals(null, reader.readLine()) writer.write("Test\n") writer.flush() assertEquals("Test", reader.readLine()) assertEquals(null, reader.readLine()) writer.close() reader.close() Files.delete(target) } @Test fun testReplaceRead() { val target = Paths.get("testReplace") val targetBackup = Paths.get("testReplace.bak") var index = 0 val reader = LogReaderTail(target) { println(it) when (index) { 0 -> { if (it == "Testing") { index++ } } 1 -> { if (it == "123") { index++ } } 2 -> { if (it == "456") { index++ } } } } Thread.sleep(100) var writer = Files.newBufferedWriter(target) writer.write("Testing\n") writer.flush() writer.close() Thread.sleep(100) Files.move(target, targetBackup) writer = Files.newBufferedWriter(target) writer.write("123\n") writer.flush() writer.write("456\n") writer.flush() writer.close() Thread.sleep(100) reader.close() Files.delete(target) Files.delete(targetBackup) assertEquals(index, 3) } }