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"));
}
}