aboutsummaryrefslogtreecommitdiff
path: root/test/behavior/bugs/11995.zig
blob: fe554bc4bf6c5fba219247ea11d83d1facb8fd71 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
const std = @import("std");
const testing = std.testing;
const builtin = @import("builtin");

fn wuffs_base__make_io_buffer(arg_data: wuffs_base__slice_u8, arg_meta: *wuffs_base__io_buffer_meta) callconv(.C) void {
    arg_data.ptr[0] = 'w';
    arg_meta.closed = false;
}
const wuffs_base__io_buffer_meta = extern struct {
    wi: usize,
    ri: usize,
    pos: u64,
    closed: bool,
};
const wuffs_base__slice_u8 = extern struct {
    ptr: [*c]u8,
    len: usize,
};
test {
    if (builtin.zig_backend == .stage2_wasm) return error.SkipZigTest; // TODO
    if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest; // TODO
    if (builtin.zig_backend == .stage2_x86) return error.SkipZigTest; // TODO
    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_spirv64) return error.SkipZigTest;

    var string: [5]u8 = "hello".*;
    const arg_data = wuffs_base__slice_u8{ .ptr = @as([*c]u8, @ptrCast(&string)), .len = string.len };
    var arg_meta = wuffs_base__io_buffer_meta{ .wi = 1, .ri = 2, .pos = 3, .closed = true };
    wuffs_base__make_io_buffer(arg_data, &arg_meta);
    try std.testing.expectEqualStrings("wello", arg_data.ptr[0..arg_data.len]);
    try std.testing.expectEqual(@as(usize, 1), arg_meta.wi);
    try std.testing.expectEqual(@as(usize, 2), arg_meta.ri);
    try std.testing.expectEqual(@as(u64, 3), arg_meta.pos);
    try std.testing.expect(!arg_meta.closed);
}