wfc-server/serverbrowser/filter_test.go
Palapeli f1741b0718
Some checks are pending
Build CI / build (push) Waiting to run
ServerBrowser/Filter: Return result of group node
2025-03-05 11:24:27 -05:00

54 lines
1.3 KiB
Go

package serverbrowser
import (
"fmt"
"testing"
"wwfc/serverbrowser/filter"
)
func parseFilter(t *testing.T, expression string) error {
_, err := filter.Parse(expression)
if err != nil {
t.Error(err)
}
return err
}
func evalFilter(t *testing.T, expression string, queryGame string, context map[string]string) (int64, error) {
tree, err := filter.Parse(expression)
if err != nil {
t.Error(err)
return 0, err
}
ret, err := filter.Eval(tree, context, queryGame)
if err != nil {
t.Error(err)
return 0, err
}
fmt.Printf("ret: %d\n", ret)
return ret, err
}
func TestParseFilter(t *testing.T) {
parseFilter(t, `dwc_mver = 3 and dwc_pid != 1000004498 and maxplayers = 3 and numplayers < 3 and dwc_mtype = 0 and dwc_mresv != dwc_pid and (((20=auth)AND((1&mskdif)=mskdif)AND((14&mskstg)=mskstg)))`)
evalFilter(t, `dwc_mver = 3 and dwc_pid != 1000004499 and maxplayers = 3 and numplayers < 3 and dwc_mtype = 0 and dwc_mresv != dwc_pid and (((20=auth)AND((1&mskdif)=mskdif)AND((14&mskstg)=mskstg)))`, "fstarzerods", map[string]string{
"dwc_mver": "3",
"dwc_pid": "1",
"maxplayers": "3",
"numplayers": "2",
"dwc_mtype": "0",
"dwc_mresv": "0",
"auth": "20",
"mskdif": "0",
"mskstg": "0",
})
evalFilter(t, `(1&mskdif)`, "fstarzerods", map[string]string{
"mskdif": "1",
})
}