From 45b3a14da497d3760ba7772ea7198f282936ed7c Mon Sep 17 00:00:00 2001 From: Valerio Cislaghi Date: Mon, 10 Mar 2025 21:35:04 +0100 Subject: [PATCH] Add unit test for FileInfo.getFormattedFileSize (#3132) # Description of Changes Add Unit Test for FileInfo.getFormattedFileSize Closes #3089 --- ## Checklist ### General - [x] I have read the [Contribution Guidelines](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/CONTRIBUTING.md) - [x] I have read the [Stirling-PDF Developer Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md) (if applicable) - [x] I have read the [How to add new languages to Stirling-PDF](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md) (if applicable) - [x] I have performed a self-review of my own code - [x] My changes generate no new warnings ### Documentation - [ ] I have updated relevant docs on [Stirling-PDF's doc repo](https://github.com/Stirling-Tools/Stirling-Tools.github.io/blob/main/docs/) (if functionality has heavily changed) - [ ] I have read the section [Add New Translation Tags](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/HowToAddNewLanguage.md#add-new-translation-tags) (for new translation tags only) ### UI Changes (if applicable) - [ ] Screenshots or videos demonstrating the UI changes are attached (e.g., as comments or direct attachments in the PR) ### Testing (if applicable) - [x] I have tested my changes locally. Refer to the [Testing Guide](https://github.com/Stirling-Tools/Stirling-PDF/blob/main/DeveloperGuide.md#6-testing) for more details. --- .../software/SPDF/utils/FileInfo.java | 7 ++-- .../software/SPDF/utils/FileInfoTest.java | 32 +++++++++++++++++++ 2 files changed, 36 insertions(+), 3 deletions(-) create mode 100644 src/test/java/stirling/software/SPDF/utils/FileInfoTest.java 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()); + } +}