@@ -71,26 +71,72 @@ public void Decode_InvalidInput_ThrowsArgumentException()
71
71
_ = Assert . Throws < ArgumentException > ( ( ) => Base32 . Rfc4648 . Decode ( "[];',m." ) ) ;
72
72
}
73
73
74
+ private static readonly TestCaseData [ ] ulongTestCases =
75
+ [
76
+ new TestCaseData ( 0UL , "AA" ) ,
77
+ new TestCaseData ( 0x0000000000000011UL , "CE" ) ,
78
+ new TestCaseData ( 0x0000000000001122UL , "EIIQ" ) ,
79
+ new TestCaseData ( 0x0000000000112233UL , "GMRBC" ) ,
80
+ new TestCaseData ( 0x0000000011223344UL , "IQZSEEI" ) ,
81
+ new TestCaseData ( 0x0000001122334455UL , "KVCDGIQR" ) ,
82
+ new TestCaseData ( 0x0000112233445566UL , "MZKUIMZCCE" ) ,
83
+ new TestCaseData ( 0x0011223344556677UL , "O5TFKRBTEIIQ" ) ,
84
+ new TestCaseData ( 0x1122334455667788UL , "RB3WMVKEGMRBC" ) ,
85
+ new TestCaseData ( 0x1100000000000000UL , "AAAAAAAAAAABC" ) ,
86
+ new TestCaseData ( 0x1122000000000000UL , "AAAAAAAAAARBC" ) ,
87
+ new TestCaseData ( 0x1122330000000000UL , "AAAAAAAAGMRBC" ) ,
88
+ new TestCaseData ( 0x1122334400000000UL , "AAAAAACEGMRBC" ) ,
89
+ new TestCaseData ( 0x1122334455000000UL , "AAAAAVKEGMRBC" ) ,
90
+ new TestCaseData ( 0x1122334455660000UL , "AAAGMVKEGMRBC" ) ,
91
+ new TestCaseData ( 0x1122334455667700UL , "AB3WMVKEGMRBC" ) ,
92
+ ] ;
93
+
94
+ [ Test ]
95
+ [ TestCaseSource ( nameof ( ulongTestCases ) ) ]
96
+ public void Encode_ulong_ReturnsExpectedValues ( ulong number , string expectedOutput )
97
+ {
98
+ Assert . That ( Base32 . Rfc4648 . Encode ( number ) , Is . EqualTo ( expectedOutput ) ) ;
99
+ }
100
+
101
+ [ Test ]
102
+ [ TestCaseSource ( nameof ( ulongTestCases ) ) ]
103
+ public void Encode_BigEndian_ulong_ReturnsExpectedValues ( ulong number , string expectedOutput )
104
+ {
105
+ if ( ! BitConverter . IsLittleEndian )
106
+ {
107
+ throw new InvalidOperationException ( "big endian tests are only supported on little endian archs" ) ;
108
+ }
109
+ number = reverseBytes ( number ) ;
110
+
111
+ var bigEndian = new Base32 ( Base32Alphabet . Rfc4648 , isBigEndian : true ) ;
112
+ Assert . That ( bigEndian . Encode ( number ) , Is . EqualTo ( expectedOutput ) ) ;
113
+ }
114
+
115
+ private static ulong reverseBytes ( ulong number )
116
+ {
117
+ var span = BitConverter . GetBytes ( number ) . AsSpan ( ) ;
118
+ span . Reverse ( ) ;
119
+ return BitConverter . ToUInt64 ( span ) ;
120
+ }
121
+
122
+ [ Test ]
123
+ [ TestCaseSource ( nameof ( ulongTestCases ) ) ]
124
+ public void DecodeUInt64_ReturnsExpectedValues ( ulong expectedNumber , string input )
125
+ {
126
+ Assert . That ( Base32 . Rfc4648 . DecodeUInt64 ( input ) , Is . EqualTo ( expectedNumber ) ) ;
127
+ }
128
+
74
129
[ Test ]
75
- [ TestCase ( 0 , ExpectedResult = "AA" ) ]
76
- [ TestCase ( 0x0000000000000011 , ExpectedResult = "CE" ) ]
77
- [ TestCase ( 0x0000000000001122 , ExpectedResult = "EIIQ" ) ]
78
- [ TestCase ( 0x0000000000112233 , ExpectedResult = "GMRBC" ) ]
79
- [ TestCase ( 0x0000000011223344 , ExpectedResult = "IQZSEEI" ) ]
80
- [ TestCase ( 0x0000001122334455 , ExpectedResult = "KVCDGIQR" ) ]
81
- [ TestCase ( 0x0000112233445566 , ExpectedResult = "MZKUIMZCCE" ) ]
82
- [ TestCase ( 0x0011223344556677 , ExpectedResult = "O5TFKRBTEIIQ" ) ]
83
- [ TestCase ( 0x1122334455667788 , ExpectedResult = "RB3WMVKEGMRBC" ) ]
84
- [ TestCase ( 0x1100000000000000 , ExpectedResult = "AAAAAAAAAAABC" ) ]
85
- [ TestCase ( 0x1122000000000000 , ExpectedResult = "AAAAAAAAAARBC" ) ]
86
- [ TestCase ( 0x1122330000000000 , ExpectedResult = "AAAAAAAAGMRBC" ) ]
87
- [ TestCase ( 0x1122334400000000 , ExpectedResult = "AAAAAACEGMRBC" ) ]
88
- [ TestCase ( 0x1122334455000000 , ExpectedResult = "AAAAAVKEGMRBC" ) ]
89
- [ TestCase ( 0x1122334455660000 , ExpectedResult = "AAAGMVKEGMRBC" ) ]
90
- [ TestCase ( 0x1122334455667700 , ExpectedResult = "AB3WMVKEGMRBC" ) ]
91
- public string Encode_long_ReturnsExpectedValues ( long number )
130
+ [ TestCaseSource ( nameof ( ulongTestCases ) ) ]
131
+ public void DecodeUInt64_BigEndian_ReturnsExpectedValues ( ulong expectedNumber , string input )
92
132
{
93
- return Base32 . Rfc4648 . Encode ( number ) ;
133
+ if ( ! BitConverter . IsLittleEndian )
134
+ {
135
+ throw new InvalidOperationException ( "big endian tests are only supported on little endian archs" ) ;
136
+ }
137
+ expectedNumber = reverseBytes ( expectedNumber ) ;
138
+ var bigEndian = new Base32 ( Base32Alphabet . Rfc4648 , isBigEndian : true ) ;
139
+ Assert . That ( bigEndian . DecodeUInt64 ( input ) , Is . EqualTo ( expectedNumber ) ) ;
94
140
}
95
141
96
142
[ Test ]
0 commit comments