add code
parent
a6277c3386
commit
235096b416
@ -0,0 +1,69 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"os"
|
||||||
|
"regexp"
|
||||||
|
"strings"
|
||||||
|
)
|
||||||
|
|
||||||
|
const definition_file = "tests.json"
|
||||||
|
|
||||||
|
type TestDefinition struct {
|
||||||
|
TestExpression *Regexp `json:"test_expression"`
|
||||||
|
FailCandidates []string `json:"fail_candidates"`
|
||||||
|
SucceedCandidates []string `json:"succeed_candidates"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Regexp struct {
|
||||||
|
*regexp.Regexp
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *Regexp) UnmarshalJSON(b []byte) error {
|
||||||
|
rg, e := regexp.Compile(strings.Trim(string(b), "\""))
|
||||||
|
if e != nil {
|
||||||
|
return e
|
||||||
|
}
|
||||||
|
|
||||||
|
r.Regexp = rg
|
||||||
|
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
|
||||||
|
var test_definition TestDefinition
|
||||||
|
|
||||||
|
b, e := os.ReadFile(definition_file)
|
||||||
|
if e != nil {
|
||||||
|
log.Fatalf("Unable to read test definition file: %s\n", e)
|
||||||
|
}
|
||||||
|
|
||||||
|
e = json.Unmarshal(b, &test_definition)
|
||||||
|
if e != nil {
|
||||||
|
log.Fatalf("Unable to parse test definition file: %s\n", e)
|
||||||
|
}
|
||||||
|
|
||||||
|
all_passed := true
|
||||||
|
|
||||||
|
for _, item := range test_definition.FailCandidates {
|
||||||
|
if test_definition.TestExpression.MatchString(item) == true {
|
||||||
|
all_passed = false
|
||||||
|
fmt.Printf("FAILED on input %s: should fail to match\n", item)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, item := range test_definition.SucceedCandidates {
|
||||||
|
if test_definition.TestExpression.MatchString(item) == false {
|
||||||
|
all_passed = false
|
||||||
|
fmt.Printf("FAILED on input %s: should match\n", item)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if all_passed {
|
||||||
|
fmt.Println("All tests pass")
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue