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("bedroom", sentence_object[1]);
|
||||||
try std.testing.expectEqualStrings("light", sentence_object[2]);
|
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