dusk: re-eanble gkurve test

This commit is contained in:
Ali Chraghi 2023-04-08 22:32:54 +03:30 committed by Stephen Gutekanst
parent 0d45438316
commit 1841ed056d
4 changed files with 28 additions and 64 deletions

View file

@ -19,6 +19,14 @@ pub fn module(b: *std.Build) *std.build.Module {
} }
pub fn testStep(b: *std.Build, optimize: std.builtin.OptimizeMode, target: std.zig.CrossTarget) *std.build.RunStep { pub fn testStep(b: *std.Build, optimize: std.builtin.OptimizeMode, target: std.zig.CrossTarget) *std.build.RunStep {
const lib_tests = b.addTest(.{
.name = "dusk-lib-tests",
.root_source_file = .{ .path = sdkPath("/src/main.zig") },
.target = target,
.optimize = optimize,
});
lib_tests.install();
const main_tests = b.addTest(.{ const main_tests = b.addTest(.{
.name = "dusk-tests", .name = "dusk-tests",
.root_source_file = .{ .path = sdkPath("/test/main.zig") }, .root_source_file = .{ .path = sdkPath("/test/main.zig") },
@ -27,6 +35,9 @@ pub fn testStep(b: *std.Build, optimize: std.builtin.OptimizeMode, target: std.z
}); });
main_tests.addModule("dusk", module(b)); main_tests.addModule("dusk", module(b));
main_tests.install(); main_tests.install();
const run_step = main_tests.run();
run_step.step.dependOn(&lib_tests.run().step);
return main_tests.run(); return main_tests.run();
} }

View file

@ -172,7 +172,7 @@ pub fn peek(self: *Tokenizer) Token {
}, },
.number => switch (c) { .number => switch (c) {
'0'...'9', '.', 'i', 'u', 'f', 'h', 'e', '-', '+' => {}, '0'...'9', '.', 'i', 'u', 'f', 'h', 'e' => {},
else => { else => {
result.tag = .number; result.tag = .number;
break; break;
@ -288,6 +288,7 @@ pub fn peek(self: *Tokenizer) Token {
index += 1; index += 1;
break; break;
}, },
'0'...'9' => state = .number,
else => { else => {
result.tag = .minus; result.tag = .minus;
break; break;
@ -331,6 +332,7 @@ pub fn peek(self: *Tokenizer) Token {
index += 1; index += 1;
break; break;
}, },
'0'...'9' => state = .number,
else => { else => {
result.tag = .plus; result.tag = .plus;
break; break;
@ -384,8 +386,8 @@ pub fn next(self: *Tokenizer) Token {
} }
test "tokenize identifier and numbers" { test "tokenize identifier and numbers" {
comptime var str: [:0]const u8 = const str =
\\_ __ _iden iden 100.8i // cc \\_ __ _iden iden -100i 100.8i // cc
\\// commnet \\// commnet
\\ \\
; ;
@ -394,6 +396,7 @@ test "tokenize identifier and numbers" {
try std.testing.expect(tokenizer.next().tag == .ident); try std.testing.expect(tokenizer.next().tag == .ident);
try std.testing.expect(tokenizer.next().tag == .ident); try std.testing.expect(tokenizer.next().tag == .ident);
try std.testing.expect(tokenizer.next().tag == .ident); try std.testing.expect(tokenizer.next().tag == .ident);
try std.testing.expectEqualStrings("-100i", tokenizer.next().loc.slice(str));
try std.testing.expect(tokenizer.next().tag == .number); try std.testing.expect(tokenizer.next().tag == .number);
try std.testing.expect(tokenizer.next().tag == .eof); try std.testing.expect(tokenizer.next().tag == .eof);
} }

View file

@ -1,8 +1,8 @@
const std = @import("std"); const std = @import("std");
pub const Ast = @import("Ast.zig");
pub const IR = @import("IR.zig"); pub const IR = @import("IR.zig");
pub const printIR = @import("print_ir.zig").printIR; pub const printIR = @import("print_ir.zig").printIR;
pub const Ast = @import("Ast.zig");
pub const Parser = @import("Parser.zig"); pub const Parser = @import("Parser.zig");
pub const Token = @import("Token.zig"); pub const Token = @import("Token.zig");
pub const Tokenizer = @import("Tokenizer.zig"); pub const Tokenizer = @import("Tokenizer.zig");
@ -13,3 +13,13 @@ pub const Extension = enum {
pub const Array = std.enums.EnumArray(Extension, bool); pub const Array = std.enums.EnumArray(Extension, bool);
}; };
test {
std.testing.refAllDecls(IR);
std.testing.refAllDecls(@import("print_ir.zig"));
std.testing.refAllDecls(Ast);
std.testing.refAllDecls(Parser);
std.testing.refAllDecls(Token);
std.testing.refAllDecls(Tokenizer);
std.testing.refAllDecls(ErrorList);
}

View file

@ -105,71 +105,11 @@ test "boids" {
} }
test "gkurve" { test "gkurve" {
if (true) return error.SkipZigTest;
const source = @embedFile("gkurve.wgsl"); const source = @embedFile("gkurve.wgsl");
var ir = try expectIR(source); var ir = try expectIR(source);
defer ir.deinit(); defer ir.deinit();
} }
test "variable & expressions" {
// const source = "var expr = 1 + 5 + 2 * 3 > 6 >> 7;";
// var ir = try expectIR(source);
// defer ir.deinit();
// const root_node = 0;
// try expect(ir.nodeLHS(root_node) + 1 == ir.nodeRHS(root_node));
// const variable = ir.spanToList(root_node)[0];
// const variable_name = ir.tokenLoc(ir.extraData(dusk.Ast.Node.GlobalVarDecl, ir.nodeLHS(variable)).name);
// try expect(std.mem.eql(u8, "expr", variable_name.slice(source)));
// try expect(ir.nodeTag(variable) == .global_variable);
// try expect(ir.tokenTag(ir.nodeToken(variable)) == .k_var);
// const expr = ir.nodeRHS(variable);
// try expect(ir.nodeTag(expr) == .greater);
// const @"1 + 5 + 2 * 3" = ir.nodeLHS(expr);
// try expect(ir.nodeTag(@"1 + 5 + 2 * 3") == .add);
// const @"1 + 5" = ir.nodeLHS(@"1 + 5 + 2 * 3");
// try expect(ir.nodeTag(@"1 + 5") == .add);
// const @"1" = ir.nodeLHS(@"1 + 5");
// try expect(ir.nodeTag(@"1") == .number_literal);
// const @"5" = ir.nodeRHS(@"1 + 5");
// try expect(ir.nodeTag(@"5") == .number_literal);
// const @"2 * 3" = ir.nodeRHS(@"1 + 5 + 2 * 3");
// try expect(ir.nodeTag(@"2 * 3") == .mul);
// const @"6 >> 7" = ir.nodeRHS(expr);
// try expect(ir.nodeTag(@"6 >> 7") == .shift_right);
// const @"6" = ir.nodeLHS(@"6 >> 7");
// try expect(ir.nodeTag(@"6") == .number_literal);
// const @"7" = ir.nodeRHS(@"6 >> 7");
// try expect(ir.nodeTag(@"7") == .number_literal);
}
test "simple analyse's result" {
// {
// const source =
// \\type T0 = f32;
// \\type T1 = T0;
// \\type T2 = T1;
// \\type T3 = T2;
// \\struct S0 { m0: T3 }
// ;
// var ir = try expectIR(source);
// // try std.testing.expect(ir.root[0].@"struct".members[0].type.number == .f32);
// ir.deinit();
// }
}
test "must error" { test "must error" {
{ {
const source = "^"; const source = "^";