boolean/tokenizer_test.go

74 lines
1.6 KiB
Go

package boolean
import (
"testing"
"bufio"
"strings"
"fmt"
"io"
)
func TestTokenize(t *testing.T) {
stream := bufio.NewReader(strings.NewReader("10.0a + 10.0"))
token_stream, err := Tokenize(stream)
if err != nil {
t.Error(err)
} else {
for true {
tokens, err := token_stream.Read(1)
if err == io.EOF {
break
} else if err != nil {
t.Error(err)
} else {
fmt.Printf("Token: %+v\n", tokens[0])
}
}
}
}
func TestLogicalNot(t *testing.T) {
expr := LogicalNot{BooleanConstant{true}}
val := expr.Value(nil)
fmt.Printf("LogicalNot %+v, Result: %+v\n", expr, val)
}
func TestNumericNegate(t *testing.T) {
expr := NumericNegate{NumericConstant{2.4}}
val := expr.Value(nil)
fmt.Printf("NumericNegate %+v, Result: %+v\n", expr, val)
}
func TestNumericAdd(t *testing.T) {
expr := NumericAdd{SymbolExpr{"test"}, NumericConstant{1.3}}
val := expr.Value(map[string]Expr{
"test": NumericConstant{1.2},
})
fmt.Printf("NumericAdd %+v, Result: %+v\n", expr, val)
}
func TestLogicalXor(t *testing.T) {
expr := LogicalXor{BooleanConstant{false}, BooleanConstant{false}}
val := expr.Value(nil)
fmt.Printf("LogicalXor %+v, Result: %+v\n", expr, val)
}
func TestBadLiteral(t *testing.T) {
stream := bufio.NewReader(strings.NewReader("10.0.0"))
token_stream, err := Tokenize(stream)
if err != nil {
t.Error(err)
} else {
for true {
tokens, err := token_stream.Read(1)
if err == io.EOF {
break
} else if err != nil {
t.Error(err)
} else {
fmt.Printf("Token: %+v\n", tokens[0])
}
}
}
}