zig/test/behavior/cast_int.zig
2023-09-23 12:36:56 -07:00

31 lines
1.0 KiB
Zig

const builtin = @import("builtin");
const std = @import("std");
const expect = std.testing.expect;
const maxInt = std.math.maxInt;
test "@intCast i32 to u7" {
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_spirv64) return error.SkipZigTest;
var x: u128 = maxInt(u128);
var y: i32 = 120;
var z = x >> @as(u7, @intCast(y));
try expect(z == 0xff);
}
test "coerce i8 to i32 and @intCast back" {
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest; // TODO
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
var x: i8 = -5;
var y: i32 = -5;
try expect(y == x);
var x2: i32 = -5;
var y2: i8 = -5;
try expect(y2 == @as(i8, @intCast(x2)));
}