54 lines
1.1 KiB
Go
54 lines
1.1 KiB
Go
package qcode
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"reflect"
|
|
"testing"
|
|
)
|
|
|
|
func compareOp(op1, op2 Operation) error {
|
|
if op1.Type != op2.Type {
|
|
return errors.New("operator type mismatch")
|
|
}
|
|
|
|
if op1.Name != op2.Name {
|
|
return errors.New("operator name mismatch")
|
|
}
|
|
|
|
if len(op1.Args) != len(op2.Args) {
|
|
return errors.New("operator args length mismatch")
|
|
}
|
|
|
|
for i := range op1.Args {
|
|
if !reflect.DeepEqual(op1.Args[i], op2.Args[i]) {
|
|
return fmt.Errorf("operator args: %v != %v", op1.Args[i], op2.Args[i])
|
|
}
|
|
}
|
|
|
|
if len(op1.Fields) != len(op2.Fields) {
|
|
return errors.New("operator field length mismatch")
|
|
}
|
|
|
|
for i := range op1.Fields {
|
|
if !reflect.DeepEqual(op1.Fields[i].Args, op2.Fields[i].Args) {
|
|
return fmt.Errorf("operator field args: %v != %v", op1.Fields[i].Args, op2.Fields[i].Args)
|
|
}
|
|
}
|
|
|
|
for i := range op1.Fields {
|
|
if !reflect.DeepEqual(op1.Fields[i].Children, op2.Fields[i].Children) {
|
|
return fmt.Errorf("operator field fields: %v != %v", op1.Fields[i].Children, op2.Fields[i].Children)
|
|
}
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func TestParse(t *testing.T) {
|
|
}
|
|
|
|
func BenchmarkParse(b *testing.B) {
|
|
|
|
}
|