diff --git a/src/main/java/stirling/software/SPDF/utils/FileInfo.java b/src/main/java/stirling/software/SPDF/utils/FileInfo.java index 64e21f8c1..c817b8768 100644 --- a/src/main/java/stirling/software/SPDF/utils/FileInfo.java +++ b/src/main/java/stirling/software/SPDF/utils/FileInfo.java @@ -4,6 +4,7 @@ import java.nio.file.Path; import java.nio.file.Paths; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; +import java.util.Locale; import lombok.AllArgsConstructor; import lombok.Data; @@ -27,11 +28,11 @@ public class FileInfo { // Formats the file size into a human-readable string. public String getFormattedFileSize() { if (fileSize >= 1024 * 1024 * 1024) { - return String.format("%.2f GB", fileSize / (1024.0 * 1024 * 1024)); + return String.format(Locale.US, "%.2f GB", fileSize / (1024.0 * 1024 * 1024)); } else if (fileSize >= 1024 * 1024) { - return String.format("%.2f MB", fileSize / (1024.0 * 1024)); + return String.format(Locale.US, "%.2f MB", fileSize / (1024.0 * 1024)); } else if (fileSize >= 1024) { - return String.format("%.2f KB", fileSize / 1024.0); + return String.format(Locale.US, "%.2f KB", fileSize / 1024.0); } else { return String.format("%d Bytes", fileSize); } diff --git a/src/test/java/stirling/software/SPDF/utils/FileInfoTest.java b/src/test/java/stirling/software/SPDF/utils/FileInfoTest.java new file mode 100644 index 000000000..e83a062f8 --- /dev/null +++ b/src/test/java/stirling/software/SPDF/utils/FileInfoTest.java @@ -0,0 +1,32 @@ +package stirling.software.SPDF.utils; + +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; + +import java.time.LocalDateTime; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +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()); + } +}