| ... | @@ -2831,6 +2831,8 @@ pub fn asBytes(ptr: anytype) AsBytesReturnType(@TypeOf(ptr)) { | ... | @@ -2831,6 +2831,8 @@ pub fn asBytes(ptr: anytype) AsBytesReturnType(@TypeOf(ptr)) { |
| 2831 | } | 2831 | } |
| 2832 | | 2832 | |
| 2833 | test "asBytes" { | 2833 | test "asBytes" { |
| | 2834 | if (builtin.zig_backend == .stage1) return error.SkipZigTest; |
| | 2835 | |
| 2834 | const deadbeef = @as(u32, 0xDEADBEEF); | 2836 | const deadbeef = @as(u32, 0xDEADBEEF); |
| 2835 | const deadbeef_bytes = switch (native_endian) { | 2837 | const deadbeef_bytes = switch (native_endian) { |
| 2836 | .Big => "\xDE\xAD\xBE\xEF", | 2838 | .Big => "\xDE\xAD\xBE\xEF", |
| ... | @@ -2857,7 +2859,14 @@ test "asBytes" { | ... | @@ -2857,7 +2859,14 @@ test "asBytes" { |
| 2857 | .c = 0xDE, | 2859 | .c = 0xDE, |
| 2858 | .d = 0xA1, | 2860 | .d = 0xA1, |
| 2859 | }; | 2861 | }; |
| 2860 | try testing.expect(eql(u8, asBytes(&inst), "\xBE\xEF\xDE\xA1")); | 2862 | switch (native_endian) { |
| | 2863 | .Little => { |
| | 2864 | try testing.expect(eql(u8, asBytes(&inst), "\xBE\xEF\xDE\xA1")); |
| | 2865 | }, |
| | 2866 | .Big => { |
| | 2867 | try testing.expect(eql(u8, asBytes(&inst), "\xA1\xDE\xEF\xBE")); |
| | 2868 | }, |
| | 2869 | } |
| 2861 | | 2870 | |
| 2862 | const ZST = struct {}; | 2871 | const ZST = struct {}; |
| 2863 | const zero = ZST{}; | 2872 | const zero = ZST{}; |
| ... | @@ -2917,6 +2926,8 @@ pub fn bytesAsValue(comptime T: type, bytes: anytype) BytesAsValueReturnType(T, | ... | @@ -2917,6 +2926,8 @@ pub fn bytesAsValue(comptime T: type, bytes: anytype) BytesAsValueReturnType(T, |
| 2917 | } | 2926 | } |
| 2918 | | 2927 | |
| 2919 | test "bytesAsValue" { | 2928 | test "bytesAsValue" { |
| | 2929 | if (builtin.zig_backend == .stage1) return error.SkipZigTest; |
| | 2930 | |
| 2920 | const deadbeef = @as(u32, 0xDEADBEEF); | 2931 | const deadbeef = @as(u32, 0xDEADBEEF); |
| 2921 | const deadbeef_bytes = switch (native_endian) { | 2932 | const deadbeef_bytes = switch (native_endian) { |
| 2922 | .Big => "\xDE\xAD\xBE\xEF", | 2933 | .Big => "\xDE\xAD\xBE\xEF", |
| ... | @@ -2948,7 +2959,10 @@ test "bytesAsValue" { | ... | @@ -2948,7 +2959,10 @@ test "bytesAsValue" { |
| 2948 | .c = 0xDE, | 2959 | .c = 0xDE, |
| 2949 | .d = 0xA1, | 2960 | .d = 0xA1, |
| 2950 | }; | 2961 | }; |
| 2951 | const inst_bytes = "\xBE\xEF\xDE\xA1"; | 2962 | const inst_bytes = switch (native_endian) { |
| | 2963 | .Little => "\xBE\xEF\xDE\xA1", |
| | 2964 | .Big => "\xA1\xDE\xEF\xBE", |
| | 2965 | }; |
| 2952 | const inst2 = bytesAsValue(S, inst_bytes); | 2966 | const inst2 = bytesAsValue(S, inst_bytes); |
| 2953 | try testing.expect(meta.eql(inst, inst2.*)); | 2967 | try testing.expect(meta.eql(inst, inst2.*)); |
| 2954 | } | 2968 | } |
| ... | @@ -3115,6 +3129,8 @@ test "sliceAsBytes with sentinel slice" { | ... | @@ -3115,6 +3129,8 @@ test "sliceAsBytes with sentinel slice" { |
| 3115 | } | 3129 | } |
| 3116 | | 3130 | |
| 3117 | test "sliceAsBytes packed struct at runtime and comptime" { | 3131 | test "sliceAsBytes packed struct at runtime and comptime" { |
| | 3132 | if (builtin.zig_backend == .stage1) return error.SkipZigTest; |
| | 3133 | |
| 3118 | const Foo = packed struct { | 3134 | const Foo = packed struct { |
| 3119 | a: u4, | 3135 | a: u4, |
| 3120 | b: u4, | 3136 | b: u4, |
| ... | @@ -3124,16 +3140,8 @@ test "sliceAsBytes packed struct at runtime and comptime" { | ... | @@ -3124,16 +3140,8 @@ test "sliceAsBytes packed struct at runtime and comptime" { |
| 3124 | var foo: Foo = undefined; | 3140 | var foo: Foo = undefined; |
| 3125 | var slice = sliceAsBytes(@as(*[1]Foo, &foo)[0..1]); | 3141 | var slice = sliceAsBytes(@as(*[1]Foo, &foo)[0..1]); |
| 3126 | slice[0] = 0x13; | 3142 | slice[0] = 0x13; |
| 3127 | switch (native_endian) { | 3143 | try testing.expect(foo.a == 0x3); |
| 3128 | .Big => { | 3144 | try testing.expect(foo.b == 0x1); |
| 3129 | try testing.expect(foo.a == 0x1); | | |
| 3130 | try testing.expect(foo.b == 0x3); | | |
| 3131 | }, | | |
| 3132 | .Little => { | | |
| 3133 | try testing.expect(foo.a == 0x3); | | |
| 3134 | try testing.expect(foo.b == 0x1); | | |
| 3135 | }, | | |
| 3136 | } | | |
| 3137 | } | 3145 | } |
| 3138 | }; | 3146 | }; |
| 3139 | try S.doTheTest(); | 3147 | try S.doTheTest(); |