Skip to content

Commit 0566537

Browse files
committed
[SE-0368] StaticBigInt: add tests for 32-bit words
1 parent 5488861 commit 0566537

File tree

1 file changed

+58
-33
lines changed

1 file changed

+58
-33
lines changed

test/stdlib/StaticBigInt.swift

Lines changed: 58 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
//
1313
// RUN: %target-run-simple-swift(-parse-as-library)
1414
// REQUIRES: executable_test
15-
// REQUIRES: PTRSIZE=64
1615
// REQUIRES: reflection
1716
// END.
1817
//
@@ -44,32 +43,40 @@ extension StaticBigIntTests {
4443

4544
@available(SwiftStdlib 5.8, *)
4645
func testBinaryRepresentation() {
47-
typealias Expected = (signum: Int, bitWidth: Int, words: [UInt])
48-
let m = UInt(bitPattern: .min)
46+
typealias Expected = (signum: Int, bitWidth: Int, _32bit: [UInt], _64bit: [UInt])
47+
let m = UInt(bitPattern: Int.min)
4948
let keyValuePairs: KeyValuePairs<StaticBigInt, Expected> = [
50-
-0x80000000000000000000000000000002: (-1, 129, [~1, ~m, ~0]),
51-
-0x80000000000000000000000000000001: (-1, 129, [~0, ~m, ~0]),
52-
-0x80000000000000000000000000000000: (-1, 128, [ 0, m, ~0]),
53-
-0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF: (-1, 128, [ 1, m, ~0]),
54-
-0x4: (-1, 3, [~3, ~0, ~0]),
55-
-0x3: (-1, 3, [~2, ~0, ~0]),
56-
-0x2: (-1, 2, [~1, ~0, ~0]),
57-
-0x1: (-1, 1, [~0, ~0, ~0]),
58-
+0x0: ( 0, 1, [ 0, 0, 0]),
59-
+0x1: (+1, 2, [ 1, 0, 0]),
60-
+0x2: (+1, 3, [ 2, 0, 0]),
61-
+0x3: (+1, 3, [ 3, 0, 0]),
62-
+0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE: (+1, 128, [~1, ~m, 0]),
63-
+0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF: (+1, 128, [~0, ~m, 0]),
64-
+0x80000000000000000000000000000000: (+1, 129, [ 0, m, 0]),
65-
+0x80000000000000000000000000000001: (+1, 129, [ 1, m, 0]),
49+
-0x80000000000000000000000000000002: (-1, 129, [~1, ~0, ~0, ~m, ~0], [~1, ~m, ~0]),
50+
-0x80000000000000000000000000000001: (-1, 129, [~0, ~0, ~0, ~m, ~0], [~0, ~m, ~0]),
51+
-0x80000000000000000000000000000000: (-1, 128, [ 0, 0, 0, m, ~0], [ 0, m, ~0]),
52+
-0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF: (-1, 128, [ 1, 0, 0, m, ~0], [ 1, m, ~0]),
53+
-0x4: (-1, 3, [~3, ~0, ~0, ~0, ~0], [~3, ~0, ~0]),
54+
-0x3: (-1, 3, [~2, ~0, ~0, ~0, ~0], [~2, ~0, ~0]),
55+
-0x2: (-1, 2, [~1, ~0, ~0, ~0, ~0], [~1, ~0, ~0]),
56+
-0x1: (-1, 1, [~0, ~0, ~0, ~0, ~0], [~0, ~0, ~0]),
57+
+0x0: ( 0, 1, [ 0, 0, 0, 0, 0], [ 0, 0, 0]),
58+
+0x1: (+1, 2, [ 1, 0, 0, 0, 0], [ 1, 0, 0]),
59+
+0x2: (+1, 3, [ 2, 0, 0, 0, 0], [ 2, 0, 0]),
60+
+0x3: (+1, 3, [ 3, 0, 0, 0, 0], [ 3, 0, 0]),
61+
+0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE: (+1, 128, [~1, ~0, ~0, ~m, 0], [~1, ~m, 0]),
62+
+0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF: (+1, 128, [~0, ~0, ~0, ~m, 0], [~0, ~m, 0]),
63+
+0x80000000000000000000000000000000: (+1, 129, [ 0, 0, 0, m, 0], [ 0, m, 0]),
64+
+0x80000000000000000000000000000001: (+1, 129, [ 1, 0, 0, m, 0], [ 1, m, 0]),
6665
]
6766
for (actual, expected) in keyValuePairs {
6867
expectEqual(expected.signum, actual.signum())
6968
expectEqual(expected.bitWidth, actual.bitWidth)
70-
expectEqual(expected.words[0], actual[0])
71-
expectEqual(expected.words[1], actual[1])
72-
expectEqual(expected.words[2], actual[2])
69+
if getInt(UInt.bitWidth) == 32 {
70+
expectEqual(expected._32bit[0], actual[0])
71+
expectEqual(expected._32bit[1], actual[1])
72+
expectEqual(expected._32bit[2], actual[2])
73+
expectEqual(expected._32bit[3], actual[3])
74+
expectEqual(expected._32bit[4], actual[4])
75+
} else if getInt(UInt.bitWidth) == 64 {
76+
expectEqual(expected._64bit[0], actual[0])
77+
expectEqual(expected._64bit[1], actual[1])
78+
expectEqual(expected._64bit[2], actual[2])
79+
}
7380
}
7481
}
7582
}
@@ -141,24 +148,42 @@ extension StaticBigIntTests {
141148
@available(SwiftStdlib 5.8, *)
142149
func testWrapperAssociatedType() {
143150
do {
144-
let negative = Wrapper(-0x0011223344556677_8899AABBCCDDEEFF)
151+
let negative = Wrapper(-0x00112233_44556677_8899AABB_CCDDEEFF)
145152
expectEqual( -1, negative.actual.signum())
146153
expectEqual(118, negative.actual.bitWidth)
147-
expectEqual(0x7766554433221101, negative.actual[0])
148-
expectEqual(0xFFEEDDCCBBAA9988, negative.actual[1])
149-
expectEqual(0xFFFFFFFFFFFFFFFF, negative.actual[2])
150-
expectEqual(0xFFFFFFFFFFFFFFFF, negative.actual[.max])
154+
if getInt(UInt.bitWidth) == 32 {
155+
expectEqual(0x33221101, negative.actual[0])
156+
expectEqual(0x77665544, negative.actual[1])
157+
expectEqual(0xBBAA9988, negative.actual[2])
158+
expectEqual(0xFFEEDDCC, negative.actual[3])
159+
expectEqual(0xFFFFFFFF, negative.actual[4])
160+
expectEqual(0xFFFFFFFF, negative.actual[.max])
161+
} else if getInt(UInt.bitWidth) == 64 {
162+
expectEqual(0x77665544_33221101, negative.actual[0])
163+
expectEqual(0xFFEEDDCC_BBAA9988, negative.actual[1])
164+
expectEqual(0xFFFFFFFF_FFFFFFFF, negative.actual[2])
165+
expectEqual(0xFFFFFFFF_FFFFFFFF, negative.actual[.max])
166+
}
151167
}
152168
do {
153-
let positive = Wrapper(0x0011223344556677_8899AABBCCDDEEFF)
169+
let positive = Wrapper(0x00112233_44556677_8899AABB_CCDDEEFF)
154170
expectEqual( +1, positive.actual.signum())
155171
expectEqual(118, positive.actual.bitWidth)
156-
expectEqual(0x8899AABBCCDDEEFF, positive.actual[0])
157-
expectEqual(0x0011223344556677, positive.actual[1])
158-
expectEqual(0x0000000000000000, positive.actual[2])
159-
expectEqual(0x0000000000000000, positive.actual[.max])
172+
if getInt(UInt.bitWidth) == 32 {
173+
expectEqual(0xCCDDEEFF, positive.actual[0])
174+
expectEqual(0x8899AABB, positive.actual[1])
175+
expectEqual(0x44556677, positive.actual[2])
176+
expectEqual(0x00112233, positive.actual[3])
177+
expectEqual(0x00000000, positive.actual[4])
178+
expectEqual(0x00000000, positive.actual[.max])
179+
} else if getInt(UInt.bitWidth) == 64 {
180+
expectEqual(0x8899AABB_CCDDEEFF, positive.actual[0])
181+
expectEqual(0x00112233_44556677, positive.actual[1])
182+
expectEqual(0x00000000_00000000, positive.actual[2])
183+
expectEqual(0x00000000_00000000, positive.actual[.max])
184+
}
160185
}
161-
do {
186+
if getInt(UInt.bitWidth) == 64 {
162187
let fibonacciSequence = Wrapper(
163188
0xA94FAD42221F2702_68A3DD8E61ECCFBD_40ABCFB3C0325745_27F80DDAA1BA7878_18B3C1D91E77DECD_0F444C01834299AB_096F75D79B354522_05D4D629E80D5489_039A9FADB327F099_023A367C34E563F0_016069317E428CA9_00D9CD4AB6A2D747_00869BE6C79FB562_00533163EF0321E5_00336A82D89C937D_001FC6E116668E68_0013A3A1C2360515_000C233F54308953_000780626E057BC2_0004A2DCE62B0D91_0002DD8587DA6E31_0001C5575E509F60_0001182E2989CED1_0000AD2934C6D08F_00006B04F4C2FE42_000042244003D24D_000028E0B4BF2BF5_000019438B44A658_00000F9D297A859D_000009A661CA20BB_000005F6C7B064E2_000003AF9A19BBD9_000002472D96A909_000001686C8312D0_000000DEC1139639_00000089AB6F7C97_0000005515A419A2_0000003495CB62F5_000000207FD8B6AD_0000001415F2AC48_0000000C69E60A65_00000007AC0CA1E3_00000004BDD96882_00000002EE333961_00000001CFA62F21_000000011E8D0A40_00000000B11924E1_000000006D73E55F_0000000043A53F82_0000000029CEA5DD_0000000019D699A5_000000000FF80C38_0000000009DE8D6D_0000000006197ECB_0000000003C50EA2_0000000002547029_0000000001709E79_0000000000E3D1B0_00000000008CCCC9_00000000005704E7_000000000035C7E2_0000000000213D05_0000000000148ADD_00000000000CB228_000000000007D8B5_000000000004D973_000000000002FF42_000000000001DA31_0000000000012511_000000000000B520_0000000000006FF1_000000000000452F_0000000000002AC2_0000000000001A6D_0000000000001055_0000000000000A18_000000000000063D_00000000000003DB_0000000000000262_0000000000000179_00000000000000E9_0000000000000090_0000000000000059_0000000000000037_0000000000000022_0000000000000015_000000000000000D_0000000000000008_0000000000000005_0000000000000003_0000000000000002_0000000000000001_0000000000000001_0000000000000000
164189
)

0 commit comments

Comments
 (0)