pulumi/pkg/tokens/tokens_test.go
joeduffy 3518dce92f Test token manipulation
This change includes some tests for token parsing and conversions.  It
also fixes a bug where we treated Type tokens like ClassMembers, when
we ought to have been treating them like ModuleMembers.
2017-01-21 11:08:25 -08:00

49 lines
1.5 KiB
Go

// Copyright 2016 Marapongo, Inc. All rights reserved.
package tokens
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestTokens(t *testing.T) {
// Package tokens/names.
p := "test/package"
assert.False(t, IsName(p))
assert.True(t, IsQName(p))
pkg := NewPackage(PackageName(p))
assert.Equal(t, p, string(pkg.Name()))
assert.Equal(t, p, string(pkg))
// Module tokens/names.
m := "my/module"
assert.False(t, IsName(m))
assert.True(t, IsQName(m))
mod := NewModule(pkg, ModuleName(m))
assert.Equal(t, m, string(mod.Name()))
assert.Equal(t, p, string(mod.Package().Name()))
assert.Equal(t, p+ModuleDelimiter+m, string(mod))
// Module member tokens/names.
mm := "memby"
assert.True(t, IsName(mm))
assert.True(t, IsQName(mm))
modm := NewModuleMember(mod, ModuleMemberName(mm))
assert.Equal(t, mm, string(modm.Name()))
assert.Equal(t, m, string(modm.Module().Name()))
assert.Equal(t, p, string(modm.Module().Package().Name()))
assert.Equal(t, p+ModuleDelimiter+m+ModuleMemberDelimiter+mm, string(modm))
// Class member tokens/names.
cm := "property"
assert.True(t, IsName(cm))
assert.True(t, IsQName(cm))
clm := NewClassMember(Type(modm), ClassMemberName(cm))
assert.Equal(t, cm, string(clm.Name()))
assert.Equal(t, mm, string(clm.Class().Name()))
assert.Equal(t, m, string(clm.Class().Module().Name()))
assert.Equal(t, p, string(clm.Class().Module().Package().Name()))
assert.Equal(t, p+ModuleDelimiter+m+ModuleMemberDelimiter+mm+ClassMemberDelimiter+cm, string(clm))
}