From 69b9f3e9e053c23ed61fcd39a116e5c5a4c36bab Mon Sep 17 00:00:00 2001 From: altaiezior <6075379+altaiezior@users.noreply.github.com> Date: Mon, 23 Mar 2026 18:29:55 +0530 Subject: [PATCH 1/2] Add binary prefix-based data amount units (e.g., KiB, MiB, GiB, etc.) to CLDR class Signed-off-by: altaiezior <6075379+altaiezior@users.noreply.github.com> --- .../main/java/systems/uom/unicode/CLDR.java | 43 ++++++++++++++++++- 1 file changed, 42 insertions(+), 1 deletion(-) diff --git a/unicode/src/main/java/systems/uom/unicode/CLDR.java b/unicode/src/main/java/systems/uom/unicode/CLDR.java index cb563a3..8f7d3d4 100644 --- a/unicode/src/main/java/systems/uom/unicode/CLDR.java +++ b/unicode/src/main/java/systems/uom/unicode/CLDR.java @@ -29,6 +29,7 @@ */ package systems.uom.unicode; +import static javax.measure.BinaryPrefix.*; import static javax.measure.MetricPrefix.*; import static tech.units.indriya.unit.Units.CUBIC_METRE; import static tech.units.indriya.unit.Units.METRE; @@ -67,7 +68,7 @@ * * @author Werner Keil * @see Unicode CLDR - * @version 2.6, Jul 1, 2025 + * @version 2.7, Mar 18, 2026 */ public final class CLDR extends AbstractSystemOfUnits { @@ -926,6 +927,46 @@ public static CLDR getInstance() { */ public static final Unit BYTE = addUnit(BIT.multiply(8), "Byte", "byte"); + /** + * Constant for unit of data amount: kilobyte
+ * This is a convenience method for KIBI(BYTE). + * + * @stable ICU 54. + */ + public static final Unit KILOBYTE = addUnit(KIBI(BYTE), "Kibibyte", "KiB", true); + + /** + * Constant for unit of data amount: megabyte
+ * This is a convenience method for MEBI(BYTE). + * + * @stable ICU 54. + */ + public static final Unit MEGABYTE = addUnit(MEBI(BYTE), "Mebibyte", "MiB", true); + + /** + * Constant for unit of data amount: gigabyte
+ * This is a convenience method for GIBI(BYTE). + * + * @stable ICU 54. + */ + public static final Unit GIGABYTE = addUnit(GIBI(BYTE), "Gibibyte", "GiB", true); + + /** + * Constant for unit of data amount: terabyte
+ * This is a convenience method for TEBI(BYTE). + * + * @stable ICU 54. + */ + public static final Unit TERABYTE = addUnit(TEBI(BYTE), "Tebibyte", "TiB", true); + + /** + * Constant for unit of data amount: petabyte
+ * This is a convenience method for PEBI(BYTE). + * + * @stable ICU 63. + */ + public static final Unit PETABYTE = addUnit(PEBI(BYTE), "Pebibyte", "PiB", true); + /** * The unit for binary information rate (standard name bit/s). * From 09acecabff365e6231e9b98d1b7a459db36bf033 Mon Sep 17 00:00:00 2001 From: altaiezior <6075379+altaiezior@users.noreply.github.com> Date: Mon, 23 Mar 2026 18:26:55 +0530 Subject: [PATCH 2/2] Add convenience units for byte multiples (e.g., kilobyte, kibibyte) and update related tests Signed-off-by: altaiezior <6075379+altaiezior@users.noreply.github.com> --- .../main/java/systems/uom/unicode/CLDR.java | 60 ++++++++++++++----- .../java/systems/uom/unicode/CLDRTest.java | 12 +++- 2 files changed, 55 insertions(+), 17 deletions(-) diff --git a/unicode/src/main/java/systems/uom/unicode/CLDR.java b/unicode/src/main/java/systems/uom/unicode/CLDR.java index 8f7d3d4..fc7ee8e 100644 --- a/unicode/src/main/java/systems/uom/unicode/CLDR.java +++ b/unicode/src/main/java/systems/uom/unicode/CLDR.java @@ -929,43 +929,73 @@ public static CLDR getInstance() { /** * Constant for unit of data amount: kilobyte
- * This is a convenience method for KIBI(BYTE). + * This is a convenience method for KILO(BYTE). * - * @stable ICU 54. + * @stable ICU 54 */ - public static final Unit KILOBYTE = addUnit(KIBI(BYTE), "Kibibyte", "KiB", true); + public static final Unit KILOBYTE = addUnit(KILO(BYTE), "Kilobyte", "kB", true); + + /** + * Constant for unit of data amount: kibibyte
+ * This is a convenience method for KIBI(BYTE). + */ + public static final Unit KIBIBYTE = addUnit(KIBI(BYTE), "Kibibyte", "KiB", true); /** * Constant for unit of data amount: megabyte
- * This is a convenience method for MEBI(BYTE). + * This is a convenience method for MEGA(BYTE). * - * @stable ICU 54. + * @stable ICU 54 + */ + public static final Unit MEGABYTE = addUnit(MEGA(BYTE), "Megabyte", "MB", true); + + /** + * Constant for unit of data amount: mebibyte
+ * This is a convenience method for MEBI(BYTE). */ - public static final Unit MEGABYTE = addUnit(MEBI(BYTE), "Mebibyte", "MiB", true); + public static final Unit MEBIBYTE = addUnit(MEBI(BYTE), "Mebibyte", "MiB", true); /** * Constant for unit of data amount: gigabyte
- * This is a convenience method for GIBI(BYTE). + * This is a convenience method for GIGA(BYTE). * - * @stable ICU 54. + * @stable ICU 54 */ - public static final Unit GIGABYTE = addUnit(GIBI(BYTE), "Gibibyte", "GiB", true); + public static final Unit GIGABYTE = addUnit(GIGA(BYTE), "Gigabyte", "GB", true); + + /** + * Constant for unit of data amount: gibibyte
+ * This is a convenience method for GIBI(BYTE). + */ + public static final Unit GIBIBYTE = addUnit(GIBI(BYTE), "Gibibyte", "GiB", true); /** * Constant for unit of data amount: terabyte
- * This is a convenience method for TEBI(BYTE). + * This is a convenience method for TERA(BYTE). * - * @stable ICU 54. + * @stable ICU 54 + */ + public static final Unit TERABYTE = addUnit(TERA(BYTE), "Terabyte", "TB", true); + + /** + * Constant for unit of data amount: tebibyte
+ * This is a convenience method for TEBI(BYTE). */ - public static final Unit TERABYTE = addUnit(TEBI(BYTE), "Tebibyte", "TiB", true); + public static final Unit TEBIBYTE = addUnit(TEBI(BYTE), "Tebibyte", "TiB", true); /** * Constant for unit of data amount: petabyte
- * This is a convenience method for PEBI(BYTE). + * This is a convenience method for PETA(BYTE). * - * @stable ICU 63. + * @stable ICU 63 + */ + public static final Unit PETABYTE = addUnit(PETA(BYTE), "Petabyte", "PB", true); + + /** + * Constant for unit of data amount: pebibyte
+ * This is a convenience method for PEBI(BYTE). */ - public static final Unit PETABYTE = addUnit(PEBI(BYTE), "Pebibyte", "PiB", true); + public static final Unit PEBIBYTE = addUnit(PEBI(BYTE), "Pebibyte", "PiB", true); /** * The unit for binary information rate (standard name bit/s). diff --git a/unicode/src/test/java/systems/uom/unicode/CLDRTest.java b/unicode/src/test/java/systems/uom/unicode/CLDRTest.java index 05e946a..09a470e 100644 --- a/unicode/src/test/java/systems/uom/unicode/CLDRTest.java +++ b/unicode/src/test/java/systems/uom/unicode/CLDRTest.java @@ -57,7 +57,11 @@ public void testToString() { assertEquals("in-hg", INCH_HG.toString()); assertEquals("dct", DECI(CARAT).toString()); assertEquals("st", STONE.toString()); - assertEquals("Kist", KIBI(STONE).toString()); + assertEquals("Kist", KIBI(STONE).toString()); + assertEquals("kB", KILOBYTE.toString()); + assertEquals("KiB", KIBIBYTE.toString()); + assertEquals("MB", MEGABYTE.toString()); + assertEquals("MiB", MEBIBYTE.toString()); } @Test @@ -72,6 +76,8 @@ public void testGetSymbol() { public void testGetName() { assertEquals("Kilometer", KILOMETER.getName()); assertEquals("Gram", GRAM.getName()); + assertEquals("Kilobyte", KILOBYTE.getName()); + assertEquals("Kibibyte", KIBIBYTE.getName()); } @Test @@ -85,6 +91,8 @@ public void testConvert() { public void testParse() { assertEquals(KILOGRAM, AbstractUnit.parse("kg")); assertEquals(CARAT, AbstractUnit.parse("ct")); - assertEquals(DECI(METRE), AbstractUnit.parse("dm")); + assertEquals(DECI(METRE), AbstractUnit.parse("dm")); + assertEquals(KILOBYTE, AbstractUnit.parse("kB")); + assertEquals(KIBIBYTE, AbstractUnit.parse("KiB")); } }