1
2
3
4
5
6
7
8
9
10
11 package psiprobe.tools;
12
13 import java.io.File;
14 import java.io.IOException;
15 import java.nio.charset.StandardCharsets;
16 import java.nio.file.Files;
17
18 import org.junit.jupiter.api.Assertions;
19 import org.junit.jupiter.api.Test;
20
21
22
23
24 class BackwardsLineReaderTest {
25
26
27
28
29
30
31 @Test
32 void readLinesBackwardsTest() throws IOException {
33 File file = Files.createTempFile("backwards-reader-", ".log").toFile();
34 Files.writeString(file.toPath(), "line1\nline2\nline3", StandardCharsets.UTF_8);
35
36 try (BackwardsFileStream stream = new BackwardsFileStream(file)) {
37 BackwardsLineReader reader = new BackwardsLineReader(stream);
38 Assertions.assertEquals("line3", reader.readLine());
39 Assertions.assertEquals("line2", reader.readLine());
40 Assertions.assertEquals("line1", reader.readLine());
41 Assertions.assertNull(reader.readLine());
42 reader.close();
43 } finally {
44 Files.deleteIfExists(file.toPath());
45 }
46 }
47
48
49
50
51
52
53 @Test
54 void readLinesBackwardsCrLfTest() throws IOException {
55 File file = Files.createTempFile("backwards-reader-crlf-", ".log").toFile();
56 Files.writeString(file.toPath(), "left\r\nright", StandardCharsets.UTF_8);
57
58 try (BackwardsFileStream stream = new BackwardsFileStream(file)) {
59 BackwardsLineReader reader = new BackwardsLineReader(stream, StandardCharsets.UTF_8.name());
60 Assertions.assertEquals("right", reader.readLine());
61 Assertions.assertEquals("left", reader.readLine());
62 Assertions.assertNull(reader.readLine());
63 reader.close();
64 } finally {
65 Files.deleteIfExists(file.toPath());
66 }
67 }
68
69
70
71
72
73
74 @Test
75 void backwardsFileStreamFromPositionTest() throws IOException {
76 File file = Files.createTempFile("backwards-stream-pos-", ".txt").toFile();
77 Files.writeString(file.toPath(), "abcde", StandardCharsets.UTF_8);
78
79 try (BackwardsFileStream stream = new BackwardsFileStream(file, 3)) {
80 Assertions.assertEquals('c', stream.read());
81 Assertions.assertEquals('b', stream.read());
82 Assertions.assertEquals('a', stream.read());
83 Assertions.assertEquals(-1, stream.read());
84 } finally {
85 Files.deleteIfExists(file.toPath());
86 }
87 }
88 }