authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-06-09 20:37:24-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-06-09 20:37:24-07:00
log58bc562cb45d5d27fed2e69ee289a4b5c9199cff
treedc6f5c20284f47aab523273dec68750961a1cd5b
parent32c90cb5539c3b340ae1b0b13d2b1521ebb6b1b0

update packed struct behavior tests to new language semantics


1 files changed, 25 insertions(+), 20 deletions(-)

test/behavior/packed-struct.zig+25-20
......@@ -33,10 +33,10 @@ test "correct size of packed structs" {
3333}
3434
3535test "flags in packed structs" {
36 if (builtin.zig_backend != .stage1) return error.SkipZigTest;
36 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
3737
3838 const Flags1 = packed struct {
39 // byte 0
39 // first 8 bits
4040 b0_0: u1,
4141 b0_1: u1,
4242 b0_2: u1,
......@@ -46,7 +46,7 @@ test "flags in packed structs" {
4646 b0_6: u1,
4747 b0_7: u1,
4848
49 // partial byte 1 (but not 8 bits)
49 // 7 more bits
5050 b1_0: u1,
5151 b1_1: u1,
5252 b1_2: u1,
......@@ -55,12 +55,12 @@ test "flags in packed structs" {
5555 b1_5: u1,
5656 b1_6: u1,
5757
58 // some padding to fill to size 3
58 // some padding to fill to 24 bits
5959 _: u9,
6060 };
6161
62 try expectEqual(3, @sizeOf(Flags1));
63 try expectEqual(3 * 8, @bitSizeOf(Flags1));
62 try expectEqual(@sizeOf(u24), @sizeOf(Flags1));
63 try expectEqual(24, @bitSizeOf(Flags1));
6464
6565 const Flags2 = packed struct {
6666 // byte 0
......@@ -86,8 +86,8 @@ test "flags in packed structs" {
8686 _: u10,
8787 };
8888
89 try expectEqual(4, @sizeOf(Flags2));
90 try expectEqual(8 + 7 + 10, @bitSizeOf(Flags2));
89 try expectEqual(@sizeOf(u25), @sizeOf(Flags2));
90 try expectEqual(25, @bitSizeOf(Flags2));
9191
9292 const Flags3 = packed struct {
9393 // byte 0
......@@ -114,30 +114,30 @@ test "flags in packed structs" {
114114 _: u16, // it works, if the padding is 8-based
115115 };
116116
117 try expectEqual(4, @sizeOf(Flags3));
118 try expectEqual(4 * 8, @bitSizeOf(Flags3));
117 try expectEqual(@sizeOf(u32), @sizeOf(Flags3));
118 try expectEqual(32, @bitSizeOf(Flags3));
119119}
120120
121121test "arrays in packed structs" {
122 if (builtin.zig_backend != .stage1) return error.SkipZigTest;
122 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
123123
124124 const T1 = packed struct { array: [3][3]u8 };
125125 const T2 = packed struct { array: [9]u8 };
126126
127 try expectEqual(9, @sizeOf(T1));
128 try expectEqual(9 * 8, @bitSizeOf(T1));
129 try expectEqual(9, @sizeOf(T2));
130 try expectEqual(9 * 8, @bitSizeOf(T2));
127 try expectEqual(@sizeOf(u72), @sizeOf(T1));
128 try expectEqual(72, @bitSizeOf(T1));
129 try expectEqual(@sizeOf(u72), @sizeOf(T2));
130 try expectEqual(72, @bitSizeOf(T2));
131131}
132132
133133test "consistent size of packed structs" {
134 if (builtin.zig_backend != .stage1) return error.SkipZigTest;
134 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
135135
136136 const TxData1 = packed struct { data: u8, _23: u23, full: bool = false };
137137 const TxData2 = packed struct { data: u9, _22: u22, full: bool = false };
138138
139139 const register_size_bits = 32;
140 const register_size_bytes = register_size_bits / 8;
140 const register_size_bytes = @sizeOf(u32);
141141
142142 try expectEqual(register_size_bits, @bitSizeOf(TxData1));
143143 try expectEqual(register_size_bytes, @sizeOf(TxData1));
......@@ -151,7 +151,7 @@ test "consistent size of packed structs" {
151151 const TxData6 = packed struct { a: u24, b: u32 };
152152
153153 const expectedBitSize = 56;
154 const expectedByteSize = expectedBitSize / 8;
154 const expectedByteSize = @sizeOf(u56);
155155
156156 try expectEqual(expectedBitSize, @bitSizeOf(TxData3));
157157 try expectEqual(expectedByteSize, @sizeOf(TxData3));
......@@ -167,7 +167,12 @@ test "consistent size of packed structs" {
167167}
168168
169169test "correct sizeOf and offsets in packed structs" {
170 if (builtin.zig_backend != .stage1) return error.SkipZigTest;
170 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
171 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
172 if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
173 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
174 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
175 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
171176
172177 const PStruct = packed struct {
173178 bool_a: bool,
......@@ -234,7 +239,7 @@ test "correct sizeOf and offsets in packed structs" {
234239
235240 try expectEqual(16, @offsetOf(S, "b"));
236241 try expectEqual(128, @bitOffsetOf(S, "b"));
237 try expectEqual(20, @sizeOf(S));
242 try expectEqual(@sizeOf(u160), @sizeOf(S));
238243}
239244
240245test "nested packed structs" {