go.chromium.org/luci@v0.0.0-20240309015107-7cdc2e660f33/lucicfg/graph/testdata/children.star (about) 1 def test_children_query(): 2 g = new_graph() 3 4 def mk(*args): 5 k = g.key(*args) 6 g.add_node(k) 7 return k 8 9 par = mk("parent", "parent") 10 11 def q(parent, order_by): 12 keys = [] 13 for n in g.children(parent, order_by): 14 keys.append(n.key) 15 return keys 16 17 t1_a1 = mk("t1", "id1", "a", "1") 18 t1_a2 = mk("t1", "id1", "a", "2") 19 t1_b1 = mk("t1", "id1", "b", "1") 20 t2_a1 = mk("t2", "id1", "a", "1") 21 22 g.add_edge(par, t1_b1) 23 g.add_edge(par, t2_a1) 24 g.add_edge(par, t2_a1, title = "another rel") 25 g.add_edge(par, t1_a2) 26 g.add_edge(par, t1_a1) 27 28 g.finalize() 29 30 # Querying in 'def' order returns nodes in order we defined edges. 31 assert.eq(q(par, "def"), [t1_b1, t2_a1, t1_a2, t1_a1]) 32 33 # Querying by key order returns nodes in lexicographical order. 34 assert.eq(q(par, "key"), [t1_a1, t1_a2, t1_b1, t2_a1]) 35 36 # Asking for children of non-existing node is OK. 37 assert.eq(q(g.key("t", "missing"), "key"), []) 38 39 # order_by is validated. 40 assert.fails(lambda: q(par, "blah"), 'unknown order "blah"') 41 42 test_children_query()