69f6b9c9c5
add precedence tests remove dead code from router gen make more strides towards using writers in router gen optimise dump request
61 lines
2.6 KiB
Go
61 lines
2.6 KiB
Go
package main
|
|
|
|
import (
|
|
"runtime/debug"
|
|
"testing"
|
|
)
|
|
|
|
func exp(t *testing.T) func(bool, string) {
|
|
return func(val bool, msg string) {
|
|
if !val {
|
|
debug.PrintStack()
|
|
t.Error(msg)
|
|
}
|
|
}
|
|
}
|
|
|
|
func expf(t *testing.T) func(bool, string, ...interface{}) {
|
|
return func(val bool, msg string, params ...interface{}) {
|
|
if !val {
|
|
debug.PrintStack()
|
|
t.Errorf(msg, params...)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestPerc(t *testing.T) {
|
|
ex, _, prec := exp(t), expf(t), NewPrec()
|
|
ex(!prec.GreaterThan("MemberOnly", "AdminOnly"), "MemberOnly should not be greater then AdminOnly")
|
|
ex(!prec.GreaterThan("AdminOnly", "MemberOnly"), "MemberOnly should not be greater then AdminOnly")
|
|
ex(!prec.GreaterThan("NotInSet", "AdminOnly"), "NotInSet should not be greater then AdminOnly")
|
|
ex(!prec.GreaterThan("AdminOnly", "NotInSet"), "AdminOnly should not be greater then NotInSet")
|
|
ex(!prec.InAnySet("MemberOnly"), "MemberOnly should not be in any set")
|
|
ex(!prec.InSameSet("MemberOnly", "AdminOnly"), "MemberOnly and AdminOnly should not be in the same set")
|
|
ex(!prec.InSameSet("MemberOnly", "NotInSet"), "MemberOnly and NotInSet should not be in the same set")
|
|
|
|
prec.AddSet("MemberOnly", "SuperModOnly", "AdminOnly", "SuperAdminOnly")
|
|
ex(!prec.GreaterThan("MemberOnly", "AdminOnly"), "MemberOnly should not be greater then AdminOnly")
|
|
ex(prec.GreaterThan("AdminOnly", "MemberOnly"), "AdminOnly should be greater then MemberOnly")
|
|
ex(!prec.GreaterThan("NotInSet", "AdminOnly"), "NotInSet should not be greater then AdminOnly")
|
|
ex(!prec.GreaterThan("AdminOnly", "NotInSet"), "AdminOnly should not be greater then NotInSet")
|
|
ex(prec.InAnySet("MemberOnly"), "MemberOnly should be in a set")
|
|
ex(!prec.InAnySet("NotInSet"), "NotInSet should not be in any set")
|
|
ex(prec.InSameSet("MemberOnly", "AdminOnly"), "MemberOnly and AdminOnly should be in the same set")
|
|
ex(!prec.InSameSet("MemberOnly", "NotInSet"), "MemberOnly and NotInSet should not be in the same set")
|
|
|
|
items := prec.LessThanItem("AdminOnly")
|
|
ex(len(items) > 0, "There should be items which are of a lower precedence than AdminOnly")
|
|
imap := make(map[string]bool)
|
|
for _, item := range items {
|
|
imap[item] = true
|
|
}
|
|
mex := func(n string, val bool, msg string) {
|
|
_, ok := imap[n]
|
|
ex(ok == val, msg)
|
|
}
|
|
mex("SuperModOnly", true, "SuperModOnly should be returned in a list of lower precedence items than AdminOnly")
|
|
mex("MemberOnly", true, "MemberOnly should be returned in a list of lower precedence items than AdminOnly")
|
|
mex("SuperAdminOnly", false, "SuperAdminOnly should not be returned in a list of lower precedence items than AdminOnly")
|
|
mex("NotInSet", false, "NotInSet should not be returned in a list of lower precedence items than AdminOnly")
|
|
}
|