func runComplianceTest(assert *assert.Assertions, filename string) { var testSuites []TestSuite data, err := ioutil.ReadFile(filename) if assert.Nil(err) { err := json.Unmarshal(data, &testSuites) if assert.Nil(err) { for _, testsuite := range testSuites { runTestSuite(assert, testsuite, filename) } } } }
func runTestCase(assert *assert.Assertions, given interface{}, testcase TestCase, filename string) { lexer := NewLexer() var err error _, err = lexer.tokenize(testcase.Expression) if err != nil { errMsg := fmt.Sprintf("(%s) Could not lex expression: %s -- %s", filename, testcase.Expression, err.Error()) assert.Fail(errMsg) return } parser := NewParser() _, err = parser.Parse(testcase.Expression) if err != nil { errMsg := fmt.Sprintf("(%s) Could not parse expression: %s -- %s", filename, testcase.Expression, err.Error()) assert.Fail(errMsg) return } actual, err := Search(testcase.Expression, given) if assert.Nil(err, fmt.Sprintf("Expression: %s", testcase.Expression)) { assert.Equal(testcase.Result, actual, fmt.Sprintf("Expression: %s", testcase.Expression)) } }