Pudu programming language
Menu
Package

@chrismichaelps / pudu-lang-validator

Typed fluent validation rules for Pudu

0.1.1Apache-2.01

InstallClose

SelectionTest.pudu

Pudu23 lines1.6 KB

GitHub ↗
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