mirror of
https://github.com/Frooodle/Stirling-PDF.git
synced 2025-08-11 13:48:37 +02:00
Merge 343e349a99
into 979f302277
This commit is contained in:
commit
352f3de76f
@ -7,14 +7,14 @@ import java.io.Reader;
|
|||||||
|
|
||||||
import org.thymeleaf.templateresource.ITemplateResource;
|
import org.thymeleaf.templateresource.ITemplateResource;
|
||||||
|
|
||||||
public class InputStreamTemplateResource implements ITemplateResource {
|
import lombok.Getter;
|
||||||
private InputStream inputStream;
|
import lombok.RequiredArgsConstructor;
|
||||||
private String characterEncoding;
|
|
||||||
|
|
||||||
public InputStreamTemplateResource(InputStream inputStream, String characterEncoding) {
|
@RequiredArgsConstructor
|
||||||
this.inputStream = inputStream;
|
@Getter
|
||||||
this.characterEncoding = characterEncoding;
|
public class InputStreamTemplateResource implements ITemplateResource {
|
||||||
}
|
private final InputStream inputStream;
|
||||||
|
private final String characterEncoding;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Reader reader() throws IOException {
|
public Reader reader() throws IOException {
|
||||||
|
@ -0,0 +1,111 @@
|
|||||||
|
package stirling.software.common.model;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
import org.junit.jupiter.params.ParameterizedTest;
|
||||||
|
import org.junit.jupiter.params.provider.CsvSource;
|
||||||
|
|
||||||
|
public class FileInfoTest {
|
||||||
|
|
||||||
|
@ParameterizedTest(name = "{index}: fileSize={0}")
|
||||||
|
@CsvSource({
|
||||||
|
"0, '0 Bytes'",
|
||||||
|
"1023, '1023 Bytes'",
|
||||||
|
"1024, '1.00 KB'",
|
||||||
|
"1048575, '1024.00 KB'", // Do we really want this as result?
|
||||||
|
"1048576, '1.00 MB'",
|
||||||
|
"1073741823, '1024.00 MB'", // Do we really want this as result?
|
||||||
|
"1073741824, '1.00 GB'"
|
||||||
|
})
|
||||||
|
void testGetFormattedFileSize(long fileSize, String expectedFormattedSize) {
|
||||||
|
FileInfo fileInfo =
|
||||||
|
new FileInfo(
|
||||||
|
"example.txt",
|
||||||
|
File.separator
|
||||||
|
+ "path"
|
||||||
|
+ File.separator
|
||||||
|
+ "to"
|
||||||
|
+ File.separator
|
||||||
|
+ "example.txt",
|
||||||
|
LocalDateTime.now(),
|
||||||
|
fileSize,
|
||||||
|
LocalDateTime.now().minusDays(1));
|
||||||
|
|
||||||
|
assertEquals(expectedFormattedSize, fileInfo.getFormattedFileSize());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testGetFilePathAsPath() {
|
||||||
|
FileInfo fileInfo =
|
||||||
|
new FileInfo(
|
||||||
|
"test.pdf",
|
||||||
|
File.separator + "tmp" + File.separator + "test.pdf",
|
||||||
|
LocalDateTime.now(),
|
||||||
|
1234,
|
||||||
|
LocalDateTime.now().minusDays(2));
|
||||||
|
assertEquals(
|
||||||
|
File.separator + "tmp" + File.separator + "test.pdf",
|
||||||
|
fileInfo.getFilePathAsPath().toString());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testGetFormattedModificationDate() {
|
||||||
|
LocalDateTime modDate = LocalDateTime.of(2024, 6, 1, 15, 30, 45);
|
||||||
|
FileInfo fileInfo =
|
||||||
|
new FileInfo(
|
||||||
|
"file.txt",
|
||||||
|
File.separator + "file.txt",
|
||||||
|
modDate,
|
||||||
|
100,
|
||||||
|
LocalDateTime.of(2024, 5, 31, 10, 0, 0));
|
||||||
|
assertEquals("2024-06-01 15:30:45", fileInfo.getFormattedModificationDate());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testGetFormattedCreationDate() {
|
||||||
|
LocalDateTime creationDate = LocalDateTime.of(2023, 12, 25, 8, 15, 0);
|
||||||
|
FileInfo fileInfo =
|
||||||
|
new FileInfo(
|
||||||
|
"holiday.txt",
|
||||||
|
File.separator + "holiday.txt",
|
||||||
|
LocalDateTime.of(2024, 1, 1, 0, 0, 0),
|
||||||
|
500,
|
||||||
|
creationDate);
|
||||||
|
assertEquals("2023-12-25 08:15:00", fileInfo.getFormattedCreationDate());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testGettersAndSetters() {
|
||||||
|
LocalDateTime now = LocalDateTime.now();
|
||||||
|
FileInfo fileInfo =
|
||||||
|
new FileInfo(
|
||||||
|
"doc.pdf",
|
||||||
|
File.separator + "docs" + File.separator + "doc.pdf",
|
||||||
|
now,
|
||||||
|
2048,
|
||||||
|
now.minusDays(1));
|
||||||
|
// Test getters
|
||||||
|
assertEquals("doc.pdf", fileInfo.getFileName());
|
||||||
|
assertEquals(File.separator + "docs" + File.separator + "doc.pdf", fileInfo.getFilePath());
|
||||||
|
assertEquals(now, fileInfo.getModificationDate());
|
||||||
|
assertEquals(2048, fileInfo.getFileSize());
|
||||||
|
assertEquals(now.minusDays(1), fileInfo.getCreationDate());
|
||||||
|
|
||||||
|
// Test setters
|
||||||
|
fileInfo.setFileName("new.pdf");
|
||||||
|
fileInfo.setFilePath(File.separator + "new" + File.separator + "new.pdf");
|
||||||
|
fileInfo.setModificationDate(now.plusDays(1));
|
||||||
|
fileInfo.setFileSize(4096);
|
||||||
|
fileInfo.setCreationDate(now.minusDays(2));
|
||||||
|
|
||||||
|
assertEquals("new.pdf", fileInfo.getFileName());
|
||||||
|
assertEquals(File.separator + "new" + File.separator + "new.pdf", fileInfo.getFilePath());
|
||||||
|
assertEquals(now.plusDays(1), fileInfo.getModificationDate());
|
||||||
|
assertEquals(4096, fileInfo.getFileSize());
|
||||||
|
assertEquals(now.minusDays(2), fileInfo.getCreationDate());
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,94 @@
|
|||||||
|
package stirling.software.common.model;
|
||||||
|
|
||||||
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
|
|
||||||
|
import java.io.ByteArrayInputStream;
|
||||||
|
import java.io.InputStream;
|
||||||
|
import java.io.Reader;
|
||||||
|
import java.lang.reflect.Field;
|
||||||
|
import java.lang.reflect.Modifier;
|
||||||
|
import java.util.Arrays;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
public class InputStreamTemplateResourceTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void gettersReturnProvidedFields() {
|
||||||
|
byte[] data = {1, 2, 3};
|
||||||
|
InputStream is = new ByteArrayInputStream(data);
|
||||||
|
String encoding = "UTF-8";
|
||||||
|
InputStreamTemplateResource resource = new InputStreamTemplateResource(is, encoding);
|
||||||
|
|
||||||
|
assertSame(is, resource.getInputStream());
|
||||||
|
assertEquals(encoding, resource.getCharacterEncoding());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void fieldsAreFinal() throws NoSuchFieldException {
|
||||||
|
Field inputStreamField = InputStreamTemplateResource.class.getDeclaredField("inputStream");
|
||||||
|
Field characterEncodingField =
|
||||||
|
InputStreamTemplateResource.class.getDeclaredField("characterEncoding");
|
||||||
|
|
||||||
|
assertTrue(Modifier.isFinal(inputStreamField.getModifiers()));
|
||||||
|
assertTrue(Modifier.isFinal(characterEncodingField.getModifiers()));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void noSetterMethodsPresent() {
|
||||||
|
long setterCount =
|
||||||
|
Arrays.stream(InputStreamTemplateResource.class.getDeclaredMethods())
|
||||||
|
.filter(method -> method.getName().startsWith("set"))
|
||||||
|
.count();
|
||||||
|
|
||||||
|
assertEquals(0, setterCount, "InputStreamTemplateResource should not have setter methods");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void readerReturnsCorrectContent() throws Exception {
|
||||||
|
String content = "Hello, world!";
|
||||||
|
InputStream is = new ByteArrayInputStream(content.getBytes("UTF-8"));
|
||||||
|
InputStreamTemplateResource resource = new InputStreamTemplateResource(is, "UTF-8");
|
||||||
|
|
||||||
|
try (Reader reader = resource.reader()) {
|
||||||
|
char[] buffer = new char[content.length()];
|
||||||
|
int read = reader.read(buffer);
|
||||||
|
assertEquals(content.length(), read);
|
||||||
|
assertEquals(content, new String(buffer));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void relativeThrowsUnsupportedOperationException() {
|
||||||
|
InputStream is = new ByteArrayInputStream(new byte[0]);
|
||||||
|
InputStreamTemplateResource resource = new InputStreamTemplateResource(is, "UTF-8");
|
||||||
|
assertThrows(UnsupportedOperationException.class, () -> resource.relative("other"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getDescriptionReturnsExpectedString() {
|
||||||
|
InputStream is = new ByteArrayInputStream(new byte[0]);
|
||||||
|
InputStreamTemplateResource resource = new InputStreamTemplateResource(is, "UTF-8");
|
||||||
|
assertEquals("InputStream resource [Stream]", resource.getDescription());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void getBaseNameReturnsExpectedString() {
|
||||||
|
InputStream is = new ByteArrayInputStream(new byte[0]);
|
||||||
|
InputStreamTemplateResource resource = new InputStreamTemplateResource(is, "UTF-8");
|
||||||
|
assertEquals("streamResource", resource.getBaseName());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void existsReturnsTrueWhenInputStreamNotNull() {
|
||||||
|
InputStream is = new ByteArrayInputStream(new byte[0]);
|
||||||
|
InputStreamTemplateResource resource = new InputStreamTemplateResource(is, "UTF-8");
|
||||||
|
assertTrue(resource.exists());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void existsReturnsFalseWhenInputStreamIsNull() {
|
||||||
|
InputStreamTemplateResource resource = new InputStreamTemplateResource(null, "UTF-8");
|
||||||
|
assertFalse(resource.exists());
|
||||||
|
}
|
||||||
|
}
|
@ -1,35 +0,0 @@
|
|||||||
package stirling.software.common.util;
|
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
|
||||||
|
|
||||||
import java.time.LocalDateTime;
|
|
||||||
|
|
||||||
import org.junit.jupiter.params.ParameterizedTest;
|
|
||||||
import org.junit.jupiter.params.provider.CsvSource;
|
|
||||||
|
|
||||||
import stirling.software.common.model.FileInfo;
|
|
||||||
|
|
||||||
public class FileInfoTest {
|
|
||||||
|
|
||||||
@ParameterizedTest(name = "{index}: fileSize={0}")
|
|
||||||
@CsvSource({
|
|
||||||
"0, '0 Bytes'",
|
|
||||||
"1023, '1023 Bytes'",
|
|
||||||
"1024, '1.00 KB'",
|
|
||||||
"1048575, '1024.00 KB'", // Do we really want this as result?
|
|
||||||
"1048576, '1.00 MB'",
|
|
||||||
"1073741823, '1024.00 MB'", // Do we really want this as result?
|
|
||||||
"1073741824, '1.00 GB'"
|
|
||||||
})
|
|
||||||
void testGetFormattedFileSize(long fileSize, String expectedFormattedSize) {
|
|
||||||
FileInfo fileInfo =
|
|
||||||
new FileInfo(
|
|
||||||
"example.txt",
|
|
||||||
"/path/to/example.txt",
|
|
||||||
LocalDateTime.now(),
|
|
||||||
fileSize,
|
|
||||||
LocalDateTime.now().minusDays(1));
|
|
||||||
|
|
||||||
assertEquals(expectedFormattedSize, fileInfo.getFormattedFileSize());
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user