zig/test/cases/bitcast.zig
2018-10-26 15:01:51 -04:00

37 lines
785 B
Zig

const std = @import("std");
const assert = std.debug.assert;
const maxInt = std.math.maxInt;
test "@bitCast i32 -> u32" {
testBitCast_i32_u32();
comptime testBitCast_i32_u32();
}
fn testBitCast_i32_u32() void {
assert(conv(-1) == maxInt(u32));
assert(conv2(maxInt(u32)) == -1);
}
fn conv(x: i32) u32 {
return @bitCast(u32, x);
}
fn conv2(x: u32) i32 {
return @bitCast(i32, x);
}
test "@bitCast extern enum to its integer type" {
const SOCK = extern enum.{
A,
B,
fn testBitCastExternEnum() void {
var SOCK_DGRAM = @This().B;
var sock_dgram = @bitCast(c_int, SOCK_DGRAM);
assert(sock_dgram == 1);
}
};
SOCK.testBitCastExternEnum();
comptime SOCK.testBitCastExternEnum();
}