From c8befa2a82a43095f20969cd08bda47b33a6e652 Mon Sep 17 00:00:00 2001 From: "Aicia [bot]" Date: Mon, 13 Apr 2026 22:34:48 +0000 Subject: [PATCH 1/4] Add robi and quebi binary prefixes per IEC 80000-13:2025 --- src/Codebelt.Unitify/BinaryPrefix.cs | 14 +++++++++--- src/Codebelt.Unitify/PrefixTableExtensions.cs | 22 ++++++++++++++++++- test/Codebelt.Unitify/BinaryPrefixTest.cs | 2 ++ 3 files changed, 34 insertions(+), 4 deletions(-) diff --git a/src/Codebelt.Unitify/BinaryPrefix.cs b/src/Codebelt.Unitify/BinaryPrefix.cs index 337e31a..81ee8a2 100644 --- a/src/Codebelt.Unitify/BinaryPrefix.cs +++ b/src/Codebelt.Unitify/BinaryPrefix.cs @@ -54,7 +54,9 @@ public static double ConvertBytesToBits(double bytes) Kibi, Mebi, Pebi, + Robi, Tebi, + Quebi, Yobi, Zebi }; @@ -104,10 +106,16 @@ public static double ConvertBytesToBits(double bytes) public static BinaryPrefix Zebi => new("zebi", "Zi", 70); /// - /// Gets the binary-multiple prefix yobi (symbol 'Yi'), 2^80 = 1208925819614629174706176. + /// Gets the binary-multiple prefix robi (symbol 'Ri'), 2^90 = 1237940039285380274899124224. /// - /// The binary-multiple prefix yobi (symbol 'Yi'). - public static BinaryPrefix Yobi => new("yobi", "Yi", 80); + /// The binary-multiple prefix robi (symbol 'Ri'). + public static BinaryPrefix Robi => new("robi", "Ri", 90); + + /// + /// Gets the binary-multiple prefix quebi (symbol 'Qi'), 2^100 = 1267650600228229401496703205376. + /// + /// The binary-multiple prefix quebi (symbol 'Qi'). + public static BinaryPrefix Quebi => new("quebi", "Qi", 100); /// /// Gets the complete sequence of multiples binary prefixes as specified by Institute of Electrical and Electronics Engineers (IEEE). diff --git a/src/Codebelt.Unitify/PrefixTableExtensions.cs b/src/Codebelt.Unitify/PrefixTableExtensions.cs index c18a771..370b2e1 100644 --- a/src/Codebelt.Unitify/PrefixTableExtensions.cs +++ b/src/Codebelt.Unitify/PrefixTableExtensions.cs @@ -317,7 +317,7 @@ public static IPrefixUnit ZebiOrDefault(this PrefixTable prefixes) return prefixes.SingleOrDefault(p => p.Prefix.Symbol == BinaryPrefix.Zebi.Symbol); } - /// + > /// /// Returns the unit with the Yobi prefix or the default value if not found. /// /// The table of multiple units. @@ -326,5 +326,25 @@ public static IPrefixUnit YobiOrDefault(this PrefixTable prefixes) { return prefixes.SingleOrDefault(p => p.Prefix.Symbol == BinaryPrefix.Yobi.Symbol); } + + /// + /// Returns the unit with the Robi prefix or the default value if not found. + /// + /// The table of multiple units. + /// The unit with the Robi prefix or the default value. + public static IPrefixUnit RobiOrDefault(this PrefixTable prefixes) + { + return prefixes.SingleOrDefault(p => p.Prefix.Symbol == BinaryPrefix.Robi.Symbol); + } + + /// + /// Returns the unit with the Quebi prefix or the default value if not found. + /// + /// The table of multiple units. + /// The unit with the Quebi prefix or the default value. + public static IPrefixUnit QuebiOrDefault(this PrefixTable prefixes) + { + return prefixes.SingleOrDefault(p => p.Prefix.Symbol == BinaryPrefix.Quebi.Symbol); + } } } diff --git a/test/Codebelt.Unitify/BinaryPrefixTest.cs b/test/Codebelt.Unitify/BinaryPrefixTest.cs index 8b2034e..fd817e1 100644 --- a/test/Codebelt.Unitify/BinaryPrefixTest.cs +++ b/test/Codebelt.Unitify/BinaryPrefixTest.cs @@ -21,6 +21,8 @@ public void BinaryPrefix_ShouldVerifyMultiplePrefixConstants() Assert.Equal(BinaryPrefix.Exbi.Multiplier, Math.Pow(2, 60)); Assert.Equal(BinaryPrefix.Zebi.Multiplier, Math.Pow(2, 70)); Assert.Equal(BinaryPrefix.Yobi.Multiplier, Math.Pow(2, 80)); + Assert.Equal(BinaryPrefix.Robi.Multiplier, Math.Pow(2, 90)); + Assert.Equal(BinaryPrefix.Quebi.Multiplier, Math.Pow(2, 100)); } } } From 3e0cbbd1fe8eaa370bbdec817865d1ac431cf000 Mon Sep 17 00:00:00 2001 From: "Aicia [bot]" Date: Mon, 13 Apr 2026 23:44:51 +0000 Subject: [PATCH 2/4] Fix bugs in binary prefix implementation: correct LazyPrefixes order, fix syntax error in extensions. --- src/Codebelt.Unitify/BinaryPrefix.cs | 12 ++++++------ src/Codebelt.Unitify/PrefixTableExtensions.cs | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/Codebelt.Unitify/BinaryPrefix.cs b/src/Codebelt.Unitify/BinaryPrefix.cs index 81ee8a2..121fb65 100644 --- a/src/Codebelt.Unitify/BinaryPrefix.cs +++ b/src/Codebelt.Unitify/BinaryPrefix.cs @@ -49,16 +49,16 @@ public static double ConvertBytesToBits(double bytes) { var list = new List() { - Exbi, - Gibi, Kibi, Mebi, - Pebi, - Robi, + Gibi, Tebi, - Quebi, + Pebi, + Exbi, + Zebi, Yobi, - Zebi + Robi, + Quebi }; return list; }); diff --git a/src/Codebelt.Unitify/PrefixTableExtensions.cs b/src/Codebelt.Unitify/PrefixTableExtensions.cs index 370b2e1..54ce77a 100644 --- a/src/Codebelt.Unitify/PrefixTableExtensions.cs +++ b/src/Codebelt.Unitify/PrefixTableExtensions.cs @@ -317,7 +317,7 @@ public static IPrefixUnit ZebiOrDefault(this PrefixTable prefixes) return prefixes.SingleOrDefault(p => p.Prefix.Symbol == BinaryPrefix.Zebi.Symbol); } - > /// +> /// /// Returns the unit with the Yobi prefix or the default value if not found. /// /// The table of multiple units. From 7144ff19707117faf616cb84b47e0bf573dce2e5 Mon Sep 17 00:00:00 2001 From: "Aicia [bot]" Date: Tue, 14 Apr 2026 00:00:59 +0000 Subject: [PATCH 3/4] Restore Yobi (2^80), fix docs to reference IEC 80000-13:2025, expand test coverage for prefix enumeration --- src/Codebelt.Unitify/BinaryPrefix.cs | 10 ++++++++-- test/Codebelt.Unitify/BinaryPrefixTest.cs | 18 ++++++++++++++++++ 2 files changed, 26 insertions(+), 2 deletions(-) diff --git a/src/Codebelt.Unitify/BinaryPrefix.cs b/src/Codebelt.Unitify/BinaryPrefix.cs index 121fb65..18ad6b8 100644 --- a/src/Codebelt.Unitify/BinaryPrefix.cs +++ b/src/Codebelt.Unitify/BinaryPrefix.cs @@ -105,6 +105,12 @@ public static double ConvertBytesToBits(double bytes) /// The binary-multiple prefix zebi (symbol 'Zi'). public static BinaryPrefix Zebi => new("zebi", "Zi", 70); + /// + /// Gets the binary-multiple prefix yobi (symbol 'Yi'), 2^80 = 1208925819614629174706176. + /// + /// The binary-multiple prefix yobi (symbol 'Yi'). + public static BinaryPrefix Yobi => new("yobi", "Yi", 80); + /// /// Gets the binary-multiple prefix robi (symbol 'Ri'), 2^90 = 1237940039285380274899124224. /// @@ -118,9 +124,9 @@ public static double ConvertBytesToBits(double bytes) public static BinaryPrefix Quebi => new("quebi", "Qi", 100); /// - /// Gets the complete sequence of multiples binary prefixes as specified by Institute of Electrical and Electronics Engineers (IEEE). + /// Gets the complete sequence of multiples binary prefixes as specified by IEC 80000-13:2025, covering kibi (2^10) through quebi (2^100). /// - /// The complete sequence of multiples binary prefixes as specified by Institute of Electrical and Electronics Engineers (IEEE). + /// The complete sequence of multiples binary prefixes as specified by IEC 80000-13:2025. public static IEnumerable BinaryPrefixes => LazyPrefixes.Value; /// diff --git a/test/Codebelt.Unitify/BinaryPrefixTest.cs b/test/Codebelt.Unitify/BinaryPrefixTest.cs index fd817e1..4b8337e 100644 --- a/test/Codebelt.Unitify/BinaryPrefixTest.cs +++ b/test/Codebelt.Unitify/BinaryPrefixTest.cs @@ -1,4 +1,5 @@ using System; +using System.Linq; using Codebelt.Extensions.Xunit; using Xunit; @@ -24,5 +25,22 @@ public void BinaryPrefix_ShouldVerifyMultiplePrefixConstants() Assert.Equal(BinaryPrefix.Robi.Multiplier, Math.Pow(2, 90)); Assert.Equal(BinaryPrefix.Quebi.Multiplier, Math.Pow(2, 100)); } + + [Fact] + public void BinaryPrefix_ShouldContainAllPrefixesInOrder() + { + var prefixes = BinaryPrefix.BinaryPrefixes.ToList(); + Assert.Equal(10, prefixes.Count); + Assert.Equal("Ki", prefixes[0].Symbol); + Assert.Equal("Mi", prefixes[1].Symbol); + Assert.Equal("Gi", prefixes[2].Symbol); + Assert.Equal("Ti", prefixes[3].Symbol); + Assert.Equal("Pi", prefixes[4].Symbol); + Assert.Equal("Ei", prefixes[5].Symbol); + Assert.Equal("Zi", prefixes[6].Symbol); + Assert.Equal("Yi", prefixes[7].Symbol); + Assert.Equal("Ri", prefixes[8].Symbol); + Assert.Equal("Qi", prefixes[9].Symbol); + } } } From 2d35bda6e59c431eb43ef36dea67d51c9faa0aa9 Mon Sep 17 00:00:00 2001 From: "Aicia [bot]" Date: Tue, 14 Apr 2026 00:14:57 +0000 Subject: [PATCH 4/4] Fix syntax error: remove stray > before YobiOrDefault XML doc comment --- src/Codebelt.Unitify/PrefixTableExtensions.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Codebelt.Unitify/PrefixTableExtensions.cs b/src/Codebelt.Unitify/PrefixTableExtensions.cs index 54ce77a..c2a8e67 100644 --- a/src/Codebelt.Unitify/PrefixTableExtensions.cs +++ b/src/Codebelt.Unitify/PrefixTableExtensions.cs @@ -317,7 +317,7 @@ public static IPrefixUnit ZebiOrDefault(this PrefixTable prefixes) return prefixes.SingleOrDefault(p => p.Prefix.Symbol == BinaryPrefix.Zebi.Symbol); } -> /// + /// /// Returns the unit with the Yobi prefix or the default value if not found. /// /// The table of multiple units.