authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-10-23 17:06:44-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2023-10-23 17:28:10-07:00
logd4911794ae8f43745b2d98a725acf440954f8d90
tree83a30dd7b139139e86a9d53f69136b43732a9b74
parent3667489051db56637de71d537436a20431a8e184

rename behavior test to better describe what it does

In general, let's not lean on GitHub issue numbers as having meaning. The goal of behavior tests is to produce a minimum set of tests that test 100% of the language.

5 files changed, 78 insertions(+), 78 deletions(-)

test/behavior.zig+1-1
...@@ -55,7 +55,6 @@ test {...@@ -55,7 +55,6 @@ test {
55 _ = @import("behavior/bugs/3384.zig");55 _ = @import("behavior/bugs/3384.zig");
56 _ = @import("behavior/bugs/3586.zig");56 _ = @import("behavior/bugs/3586.zig");
57 _ = @import("behavior/bugs/3742.zig");57 _ = @import("behavior/bugs/3742.zig");
58 _ = @import("behavior/bugs/3779.zig");
59 _ = @import("behavior/bugs/4328.zig");58 _ = @import("behavior/bugs/4328.zig");
60 _ = @import("behavior/bugs/4560.zig");59 _ = @import("behavior/bugs/4560.zig");
61 _ = @import("behavior/bugs/4769_a.zig");60 _ = @import("behavior/bugs/4769_a.zig");
...@@ -209,6 +208,7 @@ test {...@@ -209,6 +208,7 @@ test {
209 _ = @import("behavior/slice.zig");208 _ = @import("behavior/slice.zig");
210 _ = @import("behavior/slice_sentinel_comptime.zig");209 _ = @import("behavior/slice_sentinel_comptime.zig");
211 _ = @import("behavior/src.zig");210 _ = @import("behavior/src.zig");
211 _ = @import("behavior/string_literals.zig");
212 _ = @import("behavior/struct.zig");212 _ = @import("behavior/struct.zig");
213 _ = @import("behavior/struct_contains_null_ptr_itself.zig");213 _ = @import("behavior/struct_contains_null_ptr_itself.zig");
214 _ = @import("behavior/struct_contains_slice_of_itself.zig");214 _ = @import("behavior/struct_contains_slice_of_itself.zig");
test/behavior/bugs/3779.zig deleted-76
...@@ -1,76 +0,0 @@
1const std = @import("std");
2const builtin = @import("builtin");
3
4const TestEnum = enum { TestEnumValue };
5const tag_name = @tagName(TestEnum.TestEnumValue);
6const ptr_tag_name: [*:0]const u8 = tag_name;
7
8test "@tagName() returns a string literal" {
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11
12 try std.testing.expect(*const [13:0]u8 == @TypeOf(tag_name));
13 try std.testing.expect(std.mem.eql(u8, "TestEnumValue", tag_name));
14 try std.testing.expect(std.mem.eql(u8, "TestEnumValue", ptr_tag_name[0..tag_name.len]));
15}
16
17const TestError = error{TestErrorCode};
18const error_name = @errorName(TestError.TestErrorCode);
19const ptr_error_name: [*:0]const u8 = error_name;
20
21test "@errorName() returns a string literal" {
22 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
24
25 try std.testing.expect(*const [13:0]u8 == @TypeOf(error_name));
26 try std.testing.expect(std.mem.eql(u8, "TestErrorCode", error_name));
27 try std.testing.expect(std.mem.eql(u8, "TestErrorCode", ptr_error_name[0..error_name.len]));
28}
29
30const TestType = struct {};
31const type_name = @typeName(TestType);
32const ptr_type_name: [*:0]const u8 = type_name;
33
34test "@typeName() returns a string literal" {
35 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
36 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
37
38 try std.testing.expect(*const [type_name.len:0]u8 == @TypeOf(type_name));
39 try std.testing.expect(std.mem.eql(u8, "behavior.bugs.3779.TestType", type_name));
40 try std.testing.expect(std.mem.eql(u8, "behavior.bugs.3779.TestType", ptr_type_name[0..type_name.len]));
41}
42
43const actual_contents = @embedFile("3779_file_to_embed.txt");
44const ptr_actual_contents: [*:0]const u8 = actual_contents;
45const expected_contents = "hello zig\n";
46
47test "@embedFile() returns a string literal" {
48 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
49 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
50
51 try std.testing.expect(*const [expected_contents.len:0]u8 == @TypeOf(actual_contents));
52 try std.testing.expect(std.mem.eql(u8, expected_contents, actual_contents));
53 try std.testing.expect(std.mem.eql(u8, expected_contents, actual_contents));
54 try std.testing.expect(std.mem.eql(u8, expected_contents, ptr_actual_contents[0..actual_contents.len]));
55}
56
57fn testFnForSrc() std.builtin.SourceLocation {
58 return @src();
59}
60
61test "@src() returns a struct containing 0-terminated string slices" {
62 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
63 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
64
65 const src = testFnForSrc();
66 try std.testing.expect([:0]const u8 == @TypeOf(src.file));
67 try std.testing.expect(std.mem.endsWith(u8, src.file, "3779.zig"));
68 try std.testing.expect([:0]const u8 == @TypeOf(src.fn_name));
69 try std.testing.expect(std.mem.endsWith(u8, src.fn_name, "testFnForSrc"));
70
71 const ptr_src_file: [*:0]const u8 = src.file;
72 _ = ptr_src_file; // unused
73
74 const ptr_src_fn_name: [*:0]const u8 = src.fn_name;
75 _ = ptr_src_fn_name; // unused
76}
test/behavior/bugs/3779_file_to_embed.txt deleted-1
...@@ -1 +0,0 @@
1hello zig
test/behavior/file_to_embed.txt created+1
...@@ -0,0 +1 @@
1hello zig
test/behavior/string_literals.zig created+76
...@@ -0,0 +1,76 @@
1const std = @import("std");
2const builtin = @import("builtin");
3
4const TestEnum = enum { TestEnumValue };
5const tag_name = @tagName(TestEnum.TestEnumValue);
6const ptr_tag_name: [*:0]const u8 = tag_name;
7
8test "@tagName() returns a string literal" {
9 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
10 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
11
12 try std.testing.expect(*const [13:0]u8 == @TypeOf(tag_name));
13 try std.testing.expect(std.mem.eql(u8, "TestEnumValue", tag_name));
14 try std.testing.expect(std.mem.eql(u8, "TestEnumValue", ptr_tag_name[0..tag_name.len]));
15}
16
17const TestError = error{TestErrorCode};
18const error_name = @errorName(TestError.TestErrorCode);
19const ptr_error_name: [*:0]const u8 = error_name;
20
21test "@errorName() returns a string literal" {
22 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
23 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
24
25 try std.testing.expect(*const [13:0]u8 == @TypeOf(error_name));
26 try std.testing.expect(std.mem.eql(u8, "TestErrorCode", error_name));
27 try std.testing.expect(std.mem.eql(u8, "TestErrorCode", ptr_error_name[0..error_name.len]));
28}
29
30const TestType = struct {};
31const type_name = @typeName(TestType);
32const ptr_type_name: [*:0]const u8 = type_name;
33
34test "@typeName() returns a string literal" {
35 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
36 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
37
38 try std.testing.expect(*const [type_name.len:0]u8 == @TypeOf(type_name));
39 try std.testing.expect(std.mem.eql(u8, "behavior.string_literals.TestType", type_name));
40 try std.testing.expect(std.mem.eql(u8, "behavior.string_literals.TestType", ptr_type_name[0..type_name.len]));
41}
42
43const actual_contents = @embedFile("file_to_embed.txt");
44const ptr_actual_contents: [*:0]const u8 = actual_contents;
45const expected_contents = "hello zig\n";
46
47test "@embedFile() returns a string literal" {
48 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
49 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
50
51 try std.testing.expect(*const [expected_contents.len:0]u8 == @TypeOf(actual_contents));
52 try std.testing.expect(std.mem.eql(u8, expected_contents, actual_contents));
53 try std.testing.expect(std.mem.eql(u8, expected_contents, actual_contents));
54 try std.testing.expect(std.mem.eql(u8, expected_contents, ptr_actual_contents[0..actual_contents.len]));
55}
56
57fn testFnForSrc() std.builtin.SourceLocation {
58 return @src();
59}
60
61test "@src() returns a struct containing 0-terminated string slices" {
62 if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest; // TODO
63 if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest; // TODO
64
65 const src = testFnForSrc();
66 try std.testing.expect([:0]const u8 == @TypeOf(src.file));
67 try std.testing.expect(std.mem.endsWith(u8, src.file, "string_literals.zig"));
68 try std.testing.expect([:0]const u8 == @TypeOf(src.fn_name));
69 try std.testing.expect(std.mem.endsWith(u8, src.fn_name, "testFnForSrc"));
70
71 const ptr_src_file: [*:0]const u8 = src.file;
72 _ = ptr_src_file; // unused
73
74 const ptr_src_fn_name: [*:0]const u8 = src.fn_name;
75 _ = ptr_src_fn_name; // unused
76}