1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.juneau.commons.io;
18
19 import static org.apache.juneau.commons.utils.IoUtils.*;
20 import static org.junit.jupiter.api.Assertions.*;
21
22 import java.io.*;
23 import java.nio.charset.*;
24 import java.nio.file.*;
25 import java.util.*;
26
27 import org.apache.juneau.*;
28 import org.junit.jupiter.api.*;
29
30 class FileReaderBuilder_Test extends TestBase {
31
32 private static final Path PATH = Paths.get("src/test/resources/files/Test3.properties");
33
34
35
36
37 @Test void a01_create() {
38 var builder = FileReaderBuilder.create();
39 assertNotNull(builder);
40 }
41
42 @Test void a02_createWithFile() {
43 var file = PATH.toFile();
44 var builder = FileReaderBuilder.create(file);
45 assertNotNull(builder);
46 }
47
48
49
50
51 @Test void b01_build() throws IOException {
52 var file = PATH.toFile();
53 var reader = FileReaderBuilder.create(file).build();
54 assertNotNull(reader);
55 var p = new Properties();
56 p.load(new StringReader(read(reader, Files.size(PATH))));
57 assertEquals("files/Test3.properties", p.get("file"));
58 reader.close();
59 }
60
61 @Test void b02_build_noFile() {
62 assertThrows(IllegalArgumentException.class, () -> {
63 FileReaderBuilder.create().build();
64 });
65 }
66
67 @Test void b03_build_fileNotFound() {
68 assertThrows(FileNotFoundException.class, () -> {
69 FileReaderBuilder.create(new File("nonexistent.txt")).build();
70 });
71 }
72
73
74
75
76 @Test void c01_allowNoFile_noFile() throws IOException {
77 var reader = FileReaderBuilder.create().allowNoFile().build();
78 assertNotNull(reader);
79 var content = read(reader, 0);
80 assertEquals("", content);
81 reader.close();
82 }
83
84 @Test void c02_allowNoFile_nonexistentFile() throws IOException {
85 var reader = FileReaderBuilder.create()
86 .file("nonexistent.txt")
87 .allowNoFile()
88 .build();
89 assertNotNull(reader);
90 var content = read(reader, 0);
91 assertEquals("", content);
92 reader.close();
93 }
94
95 @Test void c03_allowNoFile_existingFile() throws IOException {
96 var file = PATH.toFile();
97 var reader = FileReaderBuilder.create(file)
98 .allowNoFile()
99 .build();
100 assertNotNull(reader);
101 var p = new Properties();
102 p.load(new StringReader(read(reader, Files.size(PATH))));
103 assertEquals("files/Test3.properties", p.get("file"));
104 reader.close();
105 }
106
107
108
109
110 @Test void d01_charsetCharset() throws IOException {
111 var file = PATH.toFile();
112 var reader = FileReaderBuilder.create(file)
113 .charset(StandardCharsets.UTF_8)
114 .build();
115 assertNotNull(reader);
116 var p = new Properties();
117 p.load(new StringReader(read(reader, Files.size(PATH))));
118 assertEquals("files/Test3.properties", p.get("file"));
119 reader.close();
120 }
121
122 @Test void d02_charsetCharset_null() throws IOException {
123 var file = PATH.toFile();
124 var reader = FileReaderBuilder.create(file)
125 .charset((Charset)null)
126 .build();
127 assertNotNull(reader);
128 var p = new Properties();
129 p.load(new StringReader(read(reader, Files.size(PATH))));
130 assertEquals("files/Test3.properties", p.get("file"));
131 reader.close();
132 }
133
134 @Test void d03_charsetCharset_iso8859_1() throws IOException {
135 var file = PATH.toFile();
136 var reader = FileReaderBuilder.create(file)
137 .charset(StandardCharsets.ISO_8859_1)
138 .build();
139 assertNotNull(reader);
140 var p = new Properties();
141 p.load(new StringReader(read(reader, Files.size(PATH))));
142 assertEquals("files/Test3.properties", p.get("file"));
143 reader.close();
144 }
145
146
147
148
149 @Test void e01_charsetString() throws IOException {
150 var file = PATH.toFile();
151 var reader = FileReaderBuilder.create(file)
152 .charset("UTF-8")
153 .build();
154 assertNotNull(reader);
155 var p = new Properties();
156 p.load(new StringReader(read(reader, Files.size(PATH))));
157 assertEquals("files/Test3.properties", p.get("file"));
158 reader.close();
159 }
160
161 @Test void e02_charsetString_null() {
162 assertThrows(IllegalArgumentException.class, () -> {
163 FileReaderBuilder.create(PATH.toFile())
164 .charset((String)null)
165 .build();
166 });
167 }
168
169 @Test void e03_charsetString_invalid() {
170 assertThrows(UnsupportedCharsetException.class, () -> {
171 FileReaderBuilder.create(PATH.toFile())
172 .charset("INVALID-CHARSET-NAME")
173 .build();
174 });
175 }
176
177
178
179
180 @Test void f01_fileFile() throws IOException {
181 var file = PATH.toFile();
182 var reader = FileReaderBuilder.create()
183 .file(file)
184 .build();
185 assertNotNull(reader);
186 var p = new Properties();
187 p.load(new StringReader(read(reader, Files.size(PATH))));
188 assertEquals("files/Test3.properties", p.get("file"));
189 reader.close();
190 }
191
192 @Test void f02_fileString() throws IOException {
193 var reader = FileReaderBuilder.create()
194 .file(PATH.toString())
195 .build();
196 assertNotNull(reader);
197 var p = new Properties();
198 p.load(new StringReader(read(reader, Files.size(PATH))));
199 assertEquals("files/Test3.properties", p.get("file"));
200 reader.close();
201 }
202
203
204
205
206 @Test void g01_chaining() throws IOException {
207 var reader = FileReaderBuilder.create()
208 .file(PATH.toFile())
209 .charset(StandardCharsets.UTF_8)
210 .allowNoFile()
211 .build();
212 assertNotNull(reader);
213 var p = new Properties();
214 p.load(new StringReader(read(reader, Files.size(PATH))));
215 assertEquals("files/Test3.properties", p.get("file"));
216 reader.close();
217 }
218 }
219