test: add tests for variable parsing, fix mistakes
This commit is contained in:
parent
fd0459aef1
commit
e48e36bea8
@ -46,7 +46,9 @@ const VariableBinding = struct {
|
|||||||
return ParseError.Error;
|
return ParseError.Error;
|
||||||
};
|
};
|
||||||
errdefer allocator.destroy(exp);
|
errdefer allocator.destroy(exp);
|
||||||
try exp.init(tokens, pos + 3);
|
exp.init(tokens, pos + 3) catch {
|
||||||
|
return ParseError.Error;
|
||||||
|
};
|
||||||
|
|
||||||
// return
|
// return
|
||||||
target.* = .{
|
target.* = .{
|
||||||
@ -102,3 +104,59 @@ test "should fail if the idenfier is missing" {
|
|||||||
|
|
||||||
try std.testing.expect(false);
|
try std.testing.expect(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test "should fail if there is not an identifier after var" {
|
||||||
|
const input = "var 322";
|
||||||
|
const tokens = try lexic.tokenize(input, std.testing.allocator);
|
||||||
|
defer tokens.deinit();
|
||||||
|
|
||||||
|
var binding: VariableBinding = undefined;
|
||||||
|
binding.init(&tokens, 0, std.testing.allocator) catch |err| {
|
||||||
|
try std.testing.expectEqual(ParseError.Error, err);
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
try std.testing.expect(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
test "should fail if the equal sign is missing" {
|
||||||
|
const input = "var my_id ";
|
||||||
|
const tokens = try lexic.tokenize(input, std.testing.allocator);
|
||||||
|
defer tokens.deinit();
|
||||||
|
|
||||||
|
var binding: VariableBinding = undefined;
|
||||||
|
binding.init(&tokens, 0, std.testing.allocator) catch |err| {
|
||||||
|
try std.testing.expectEqual(ParseError.Error, err);
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
try std.testing.expect(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
test "should fail if the equal sign is not found" {
|
||||||
|
const input = "var my_id is string";
|
||||||
|
const tokens = try lexic.tokenize(input, std.testing.allocator);
|
||||||
|
defer tokens.deinit();
|
||||||
|
|
||||||
|
var binding: VariableBinding = undefined;
|
||||||
|
binding.init(&tokens, 0, std.testing.allocator) catch |err| {
|
||||||
|
try std.testing.expectEqual(ParseError.Error, err);
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
try std.testing.expect(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
test "should fail if the expression parsing fails" {
|
||||||
|
const input = "var my_id = ehhh";
|
||||||
|
const tokens = try lexic.tokenize(input, std.testing.allocator);
|
||||||
|
defer tokens.deinit();
|
||||||
|
|
||||||
|
var binding: VariableBinding = undefined;
|
||||||
|
binding.init(&tokens, 0, std.testing.allocator) catch |err| {
|
||||||
|
try std.testing.expectEqual(ParseError.Error, err);
|
||||||
|
return;
|
||||||
|
};
|
||||||
|
|
||||||
|
try std.testing.expect(false);
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user