Something went wrong. Try again.
🌱 A minimal programming language and compiler. git.urbach.dev/cli/q
high-performance programming-language compiler
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465package types_test
import ( "testing"
"git.urbach.dev/cli/q/src/types" "git.urbach.dev/go/assert")
func TestName(t *testing.T) { assert.Equal(t, types.Int.Name(), "int64") assert.Equal(t, types.AnyPointer.Name(), "*any") assert.Equal(t, (&types.Pointer{To: types.Int}).Name(), "*int64") assert.Equal(t, types.String.Name(), "string")}
func TestSize(t *testing.T) { assert.Equal(t, types.Int.Size(), 8) assert.Equal(t, types.Int8.Size(), 1) assert.Equal(t, types.Int16.Size(), 2) assert.Equal(t, types.Int32.Size(), 4) assert.Equal(t, types.Int64.Size(), 8) assert.Equal(t, types.AnyPointer.Size(), 8) assert.Equal(t, types.String.Size(), 16) assert.Equal(t, (&types.Pointer{To: types.Int}).Size(), 8)}
func TestBasics(t *testing.T) { assert.True(t, types.Is(types.Int, types.Int)) assert.True(t, types.Is(types.Int, types.Any)) assert.True(t, types.Is(types.Int, types.AnyInt)) assert.True(t, types.Is(types.AnyInt, types.AnyInt)) assert.True(t, types.Is(types.AnyInt, types.Int)) assert.True(t, types.Is(types.AnyPointer, types.AnyPointer)) assert.True(t, types.Is(&types.Pointer{To: types.Int}, types.AnyPointer)) assert.True(t, types.Is(&types.Resource{Of: types.AnyPointer}, types.AnyPointer)) assert.True(t, types.Is(&types.Resource{Of: &types.Pointer{To: types.Int}}, types.AnyPointer)) assert.False(t, types.Is(types.Int, types.Float)) assert.False(t, types.Is(types.AnyPointer, types.AnyInt)) assert.False(t, types.Is(&types.Pointer{To: types.Int}, &types.Pointer{To: types.Float})) assert.False(t, types.Is(types.Any, types.Int)) assert.False(t, types.Is(types.Any, types.Float))}
func TestNil(t *testing.T) { assert.False(t, types.Is(types.Nil, types.AnyPointer)) assert.False(t, types.Is(types.AnyInt, types.AnyPointer)) assert.True(t, types.Is(types.AnyInt, types.Nil)) assert.True(t, types.Is(types.Nil, types.AnyInt)) assert.True(t, types.Is(types.Nil, types.Error))}
func TestUnions(t *testing.T) { intOrFloat := &types.Union{Types: []types.Type{types.Int, types.Float}} assert.True(t, types.Is(types.Int, intOrFloat)) assert.True(t, types.Is(types.Float, intOrFloat)) assert.False(t, types.Is(types.String, intOrFloat)) assert.Equal(t, intOrFloat.Index(types.Int), 0) assert.Equal(t, intOrFloat.Index(types.Float), 1)}
func TestSpecialCases(t *testing.T) { assert.True(t, types.Is(&types.Pointer{To: types.Int}, types.AnyPointer)) assert.True(t, types.Is(&types.Pointer{To: types.Float}, types.AnyPointer))}