add tests for adaptiveParse
This commit is contained in:
parent
bde4a1fe3d
commit
a75b80c5c4
1 changed files with 65 additions and 0 deletions
65
src/root.zig
65
src/root.zig
|
@ -533,3 +533,68 @@ test "real usage - jack" {
|
|||
try std.testing.expectEqualStrings("bedroom", sentence_object[1]);
|
||||
try std.testing.expectEqualStrings("light", sentence_object[2]);
|
||||
}
|
||||
test "adaptiveParse successful without replacements" {
|
||||
var parser = try Parser.init(std.testing.allocator);
|
||||
defer parser.deinit();
|
||||
|
||||
const replacements = std.StaticStringMap([]const u8).initComptime(.{
|
||||
.{ "lake", "light" },
|
||||
.{ "like", "light" },
|
||||
});
|
||||
|
||||
const sentence = "turn on the kitchen light";
|
||||
const sentence_z = try std.testing.allocator.dupeZ(u8, sentence);
|
||||
defer std.testing.allocator.free(sentence_z);
|
||||
|
||||
var tree = try parser.adaptiveParse(sentence_z, replacements);
|
||||
defer tree.deinit();
|
||||
|
||||
const action_words = try tree.sentenceAction();
|
||||
defer std.testing.allocator.free(action_words);
|
||||
try std.testing.expect(action_words.len > 0);
|
||||
|
||||
const object_words = try tree.sentenceObject();
|
||||
defer std.testing.allocator.free(object_words);
|
||||
try std.testing.expect(object_words.len > 0);
|
||||
}
|
||||
|
||||
test "adaptiveParse with word replacement" {
|
||||
var parser = try Parser.init(std.testing.allocator);
|
||||
defer parser.deinit();
|
||||
|
||||
const replacements = std.StaticStringMap([]const u8).initComptime(.{
|
||||
.{ "lake", "light" },
|
||||
.{ "like", "light" },
|
||||
});
|
||||
|
||||
const sentence = "turn on the kitchen lake";
|
||||
const sentence_z = try std.testing.allocator.dupeZ(u8, sentence);
|
||||
defer std.testing.allocator.free(sentence_z);
|
||||
|
||||
var tree = try parser.adaptiveParse(sentence_z, replacements);
|
||||
defer tree.deinit();
|
||||
|
||||
const action_words = try tree.sentenceAction();
|
||||
defer std.testing.allocator.free(action_words);
|
||||
try std.testing.expect(action_words.len > 0);
|
||||
|
||||
const object_words = try tree.sentenceObject();
|
||||
defer std.testing.allocator.free(object_words);
|
||||
try std.testing.expect(object_words.len > 0);
|
||||
}
|
||||
|
||||
test "adaptiveParse no valid parse" {
|
||||
var parser = try Parser.init(std.testing.allocator);
|
||||
defer parser.deinit();
|
||||
|
||||
const replacements = std.StaticStringMap([]const u8).initComptime(.{
|
||||
.{ "lake", "light" },
|
||||
.{ "like", "light" },
|
||||
});
|
||||
|
||||
const sentence = "xyz abc def";
|
||||
const sentence_z = try std.testing.allocator.dupeZ(u8, sentence);
|
||||
defer std.testing.allocator.free(sentence_z);
|
||||
|
||||
try std.testing.expectError(error.NoValidParse, parser.adaptiveParse(sentence_z, replacements));
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue