mirror of
https://github.com/cloudflare/redoctober.git
synced 2026-01-05 04:56:07 +00:00
83 lines
1.8 KiB
Go
83 lines
1.8 KiB
Go
package msp
|
|
|
|
import (
|
|
"testing"
|
|
)
|
|
|
|
func TestRaw(t *testing.T) {
|
|
alice := Condition(Name{"Alice", 0})
|
|
bob := Condition(Name{"Bob", 0})
|
|
carl := Condition(Name{"Carl", 0})
|
|
|
|
query1 := Raw{
|
|
NodeType: NodeAnd,
|
|
Left: alice,
|
|
Right: bob,
|
|
}
|
|
|
|
aliceOrBob := Condition(Raw{
|
|
NodeType: NodeOr,
|
|
Left: alice,
|
|
Right: bob,
|
|
})
|
|
|
|
query2 := Raw{
|
|
NodeType: NodeAnd,
|
|
Left: aliceOrBob,
|
|
Right: carl,
|
|
}
|
|
|
|
db := &Database{
|
|
"Alice": [][]byte{[]byte("blah")},
|
|
"Carl": [][]byte{[]byte("herp")},
|
|
}
|
|
|
|
if query1.Ok(db) != false {
|
|
t.Fatalf("Query #1 was wrong.")
|
|
}
|
|
|
|
if query2.Ok(db) != true {
|
|
t.Fatalf("Query #2 was wrong.")
|
|
}
|
|
|
|
query1String := "Alice & Bob"
|
|
query2String := "(Alice | Bob) & Carl"
|
|
|
|
if query1.String() != query1String {
|
|
t.Fatalf("Query #1 String was wrong; %v", query1.String())
|
|
}
|
|
|
|
if query2.String() != query2String {
|
|
t.Fatalf("Query #2 String was wrong; %v", query2.String())
|
|
}
|
|
|
|
decQuery1, err := StringToRaw(query1String)
|
|
if err != nil || decQuery1.String() != query1String {
|
|
t.Fatalf("Query #1 decoded wrong: %v %v", decQuery1.String(), err)
|
|
}
|
|
|
|
decQuery2, err := StringToRaw(query2String)
|
|
if err != nil || decQuery2.String() != query2String {
|
|
t.Fatalf("Query #2 decoded wrong: %v %v", decQuery2.String(), err)
|
|
}
|
|
|
|
formattedQuery1String := "(2, Alice, Bob)"
|
|
formattedQuery2String := "(2, (1, Alice, Bob), Carl)"
|
|
|
|
if query1.Formatted().String() != formattedQuery1String {
|
|
t.Fatalf("Query #1 formatted wrong: %v", query1.Formatted().String())
|
|
}
|
|
|
|
if query2.Formatted().String() != formattedQuery2String {
|
|
t.Fatalf("Query #2 formatted wrong: %v", query2.Formatted().String())
|
|
}
|
|
}
|
|
|
|
func TestOneCondition(t *testing.T) {
|
|
_, err := StringToRaw("(Alice or Bob)")
|
|
|
|
if err == nil {
|
|
t.Fatalf("A predicate with only one condition should fail to parse!")
|
|
}
|
|
}
|