|
|
@ -27,8 +27,7 @@ func (test *selectionTest) Run(t *testing.T) {
|
|
|
|
|
|
|
|
|
|
|
|
XLeavesWanted := wantStrings("leaf xnode labels", test.xleaves...)
|
|
|
|
XLeavesWanted := wantStrings("leaf xnode labels", test.xleaves...)
|
|
|
|
for _, X := range test.selection.xnodes() {
|
|
|
|
for _, X := range test.selection.xnodes() {
|
|
|
|
leaves := X.leaves()
|
|
|
|
for _, leaf := range X.leaves() {
|
|
|
|
for _, leaf := range leaves {
|
|
|
|
|
|
|
|
XLeavesWanted.add(leaf.label())
|
|
|
|
XLeavesWanted.add(leaf.label())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -188,6 +187,32 @@ func TestSelections(t *testing.T) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
add(func() selectionTest {
|
|
|
|
|
|
|
|
root := NewSelection(A)
|
|
|
|
|
|
|
|
b := root.Child(B)
|
|
|
|
|
|
|
|
c := root.Child(C)
|
|
|
|
|
|
|
|
b.Child(D)
|
|
|
|
|
|
|
|
e := b.And(c).Child(E)
|
|
|
|
|
|
|
|
f := c.Child(F)
|
|
|
|
|
|
|
|
e.Child(G).Child(J).Child(M)
|
|
|
|
|
|
|
|
h := e.And(f).Child(H)
|
|
|
|
|
|
|
|
l := f.Child(I).Child(L)
|
|
|
|
|
|
|
|
k := h.Child(K)
|
|
|
|
|
|
|
|
k.And(l).Child(N)
|
|
|
|
|
|
|
|
return selectionTest{
|
|
|
|
|
|
|
|
label: "criss-crossing-partial",
|
|
|
|
|
|
|
|
selection: e,
|
|
|
|
|
|
|
|
lnodes: []string{"E"},
|
|
|
|
|
|
|
|
xnodes: []string{"E.0.B", "E.1.C"},
|
|
|
|
|
|
|
|
xleaves: []string{
|
|
|
|
|
|
|
|
"M.0.J", // A B E G J M
|
|
|
|
|
|
|
|
"M.1.J", // A C E G J M
|
|
|
|
|
|
|
|
"N.0.K", // A B E H K N
|
|
|
|
|
|
|
|
"N.1.K", // A C E H K N
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
|
|
for _, test := range tests {
|
|
|
|
for _, test := range tests {
|
|
|
|
t.Run(test.label, test.Run)
|
|
|
|
t.Run(test.label, test.Run)
|
|
|
|
}
|
|
|
|
}
|
|
|
|