
SelectionTest.pudu
Pudu23 lines1.6 KB
1/** @Test.Validation.Selection.Suite — checks segment and wildcard path relations */2module PuduLangValidator.SelectionTest34import Std.Test as Test5import PuduLangValidator.Selection as Selection67fn main() -> Int {8 let checks = Test.suite("Selection", &[9 Test.equals("empty bracket selects a concrete index", &Selection.covers("items[].code", "items[0].code"), &true),10 Test.equals("custom bracket keys are selectable", &Selection.covers("items[].code", "items[at-1].code"), &true),11 Test.equals("nested wildcards consume separate indices", &Selection.covers("orders[].lines[].price", "orders[0].lines[2].price"), &true),12 Test.equals("plain prefix is not an ancestor", &Selection.overlaps("item", "items[0]"), &false),13 Test.equals("descendant request does not cover a scalar parent", &Selection.covers("items[].code", "items[0]"), &false),14 Test.equals("ancestor rule reaches wildcard request", &Selection.overlaps("items[].code", "items"), &true),15 Test.equals("wildcard cannot match empty bracket", &Selection.covers("items[]", "items[]"), &false),16 Test.equals("different property remains separate", &Selection.covers("items[].code", "items[2].zip"), &false),17 Test.equals("one child prefix leaves its field", &Selection.relative("items[].code", "items[2]"), &Some("code")),18 Test.equals("nested prefix leaves another wildcard", &Selection.relative("orders[].lines[].price", "orders[1]"), &Some("lines[].price")),19 Test.equals("nested concrete prefix leaves its field", &Selection.relative("orders[].lines[].price", "orders[1].lines[3]"), &Some("price"))20 ])21 Test.report(&Test.run(&checks))22}23