func TestCheckUnaryExprNotString(t *testing.T) {
	env := MakeSimpleEnv()
	expectCheckError(t, `! "abc"`, env,
		`invalid operation: ! untyped string`,
	)
}
Test ! String
package eval
import (
	"testing"
)
func TestCheckUnaryExprAddInt(t *testing.T) {
	env := MakeSimpleEnv()
	expectConst(t, `+ 4`, env, NewConstInt64(+ 4), ConstInt)
}
func TestCheckUnaryExprAddRune(t *testing.T) {
	env := MakeSimpleEnv()
	expectConst(t, `+ '@'`, env, NewConstRune(+ '@'), ConstRune)
}
func TestCheckUnaryExprAddFloat(t *testing.T) {
	env := MakeSimpleEnv()
	expectConst(t, `+ 2.0`, env, NewConstFloat64(+ 2.0), ConstFloat)
}
func TestCheckUnaryExprAddComplex(t *testing.T) {
	env := MakeSimpleEnv()
	expectConst(t, `+ 8.0i`, env, NewConstComplex128(+ 8.0i), ConstComplex)
}
func TestCheckUnaryExprAddBool(t *testing.T) {
	env := MakeSimpleEnv()
	expectCheckError(t, `+ true`, env,
		`invalid operation: + untyped bool`,
	)
}
func TestCheckUnaryExprAddString(t *testing.T) {
	env := MakeSimpleEnv()
	expectCheckError(t, `+ "abc"`, env,
		`invalid operation: + untyped string`,
	)
}
func TestCheckUnaryExprAddNil(t *testing.T) {
	env := MakeSimpleEnv()
	expectCheckError(t, `+ nil`, env,
		`invalid operation: + nil`,
	)
}
func TestCheckUnaryExprSubInt(t *testing.T) {
	env := MakeSimpleEnv()
	expectConst(t, `- 4`, env, NewConstInt64(- 4), ConstInt)
}
func TestCheckUnaryExprSubRune(t *testing.T) {
	env := MakeSimpleEnv()
	expectConst(t, `- '@'`, env, NewConstRune(- '@'), ConstRune)
}
func TestCheckUnaryExprSubFloat(t *testing.T) {
	env := MakeSimpleEnv()
	expectConst(t, `- 2.0`, env, NewConstFloat64(- 2.0), ConstFloat)
}
func TestCheckUnaryExprSubComplex(t *testing.T) {
	env := MakeSimpleEnv()
	expectConst(t, `- 8.0i`, env, NewConstComplex128(- 8.0i), ConstComplex)
}
func TestCheckUnaryExprSubBool(t *testing.T) {
	env := MakeSimpleEnv()
	expectCheckError(t, `- true`, env,
		`invalid operation: - untyped bool`,
	)
}
func TestCheckUnaryExprSubString(t *testing.T) {
	env := MakeSimpleEnv()
	expectCheckError(t, `- "abc"`, env,
		`invalid operation: - untyped string`,
	)
}
func TestCheckUnaryExprSubNil(t *testing.T) {
	env := MakeSimpleEnv()
	expectCheckError(t, `- nil`, env,
		`invalid operation: - nil`,
	)
}
func TestCheckUnaryExprXorInt(t *testing.T) {
	env := MakeSimpleEnv()
	expectConst(t, `^ 4`, env, NewConstInt64(^ 4), ConstInt)
}
func TestCheckUnaryExprXorRune(t *testing.T) {
	env := MakeSimpleEnv()
	expectConst(t, `^ '@'`, env, NewConstRune(^ '@'), ConstRune)
}
func TestCheckUnaryExprXorFloat(t *testing.T) {
	env := MakeSimpleEnv()
	expectCheckError(t, `^ 2.0`, env,
		`illegal constant expression ^ untyped number`,
	)
}
func TestCheckUnaryExprXorComplex(t *testing.T) {
	env := MakeSimpleEnv()
	expectCheckError(t, `^ 8.0i`, env,
		`illegal constant expression ^ untyped number`,
	)
}
func TestCheckUnaryExprXorBool(t *testing.T) {
	env := MakeSimpleEnv()
	expectCheckError(t, `^ true`, env,
		`invalid operation: ^ untyped bool`,
	)
}
func TestCheckUnaryExprXorString(t *testing.T) {
	env := MakeSimpleEnv()
	expectCheckError(t, `^ "abc"`, env,
		`invalid operation: ^ untyped string`,
	)
}
func TestCheckUnaryExprXorNil(t *testing.T) {
	env := MakeSimpleEnv()
	expectCheckError(t, `^ nil`, env,
		`invalid operation: ^ nil`,
	)
}
func TestCheckUnaryExprNotInt(t *testing.T) {
	env := MakeSimpleEnv()
	expectCheckError(t, `! 4`, env,
		`invalid operation: ! untyped number`,
	)
}
func TestCheckUnaryExprNotRune(t *testing.T) {
	env := MakeSimpleEnv()
	expectCheckError(t, `! '@'`, env,
		`invalid operation: ! untyped number`,
	)
}
func TestCheckUnaryExprNotFloat(t *testing.T) {
	env := MakeSimpleEnv()
	expectCheckError(t, `! 2.0`, env,
		`invalid operation: ! untyped number`,
	)
}
func TestCheckUnaryExprNotComplex(t *testing.T) {
	env := MakeSimpleEnv()
	expectCheckError(t, `! 8.0i`, env,
		`invalid operation: ! untyped number`,
	)
}
func TestCheckUnaryExprNotBool(t *testing.T) {
	env := MakeSimpleEnv()
	expectConst(t, `! true`, env, (! true), ConstBool)
}