Skip to content

Commit d419df2

Browse files
authored
fix RootNamespace and introduce Namespace getter (#24)
1 parent c622022 commit d419df2

File tree

3 files changed

+24
-10
lines changed

3 files changed

+24
-10
lines changed

namespace_test.go

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func TestNamespaceName(t *testing.T) {
2222
require.EqualValues(t, "nsTest1.child", nsTest1Child.FullName())
2323
}
2424

25-
func TestNamespace(t *testing.T) {
25+
func TestIsNamespaceOf(t *testing.T) {
2626
require.True(t, nsTest0.IsNamespaceOf(nsTestET0))
2727
require.False(t, nsTest1.IsNamespaceOf(nsTestET0))
2828
require.False(t, nsTest0.IsNamespaceOf(nsTestET1))
@@ -39,3 +39,16 @@ func TestSubNamespace(t *testing.T) {
3939
require.True(t, nsTest1Child.IsNamespaceOf(nsTestChild1ET))
4040
require.True(t, nsTest1Child.IsNamespaceOf(nsTestChild1ETChild))
4141
}
42+
43+
44+
func TestRootNamespace(t *testing.T) {
45+
require.Equal(t, nsTest1, nsTestChild1ET.NewWithNoMessage().Type().RootNamespace())
46+
}
47+
48+
func TestNamespace(t *testing.T) {
49+
require.Equal(t, nsTest1Child, nsTestChild1ET.NewWithNoMessage().Type().Namespace())
50+
}
51+
52+
func TestSubTypeNamespaceFullName(t *testing.T) {
53+
require.Equal(t, "nsTest1.child", nsTestChild1ETChild.Namespace().FullName())
54+
}

type.go

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,9 +112,18 @@ func (t *Type) FullName() string {
112112
return t.fullName
113113
}
114114

115+
// Namespace returns a namespace this type belongs to.
116+
func (t *Type) Namespace() Namespace {
117+
return t.namespace
118+
}
119+
115120
// RootNamespace returns a base namespace this type belongs to.
116121
func (t *Type) RootNamespace() Namespace {
117-
return t.namespace
122+
n := t.namespace
123+
for n.parent != nil {
124+
n = *n.parent
125+
}
126+
return n
118127
}
119128

120129
func (t *Type) String() string {

type_test.go

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,6 @@ func TestSubTypeName(t *testing.T) {
1515
require.Equal(t, "foo.bar.internal.wat", testSubtype1.FullName())
1616
}
1717

18-
func TestRootNamespace(t *testing.T) {
19-
require.Equal(t, testNamespace, testType.NewWithNoMessage().Type().RootNamespace())
20-
}
21-
22-
func TestSubTypeNamespace(t *testing.T) {
23-
require.Equal(t, "foo", testSubtype1.RootNamespace().FullName())
24-
}
25-
2618
func TestErrorTypeCheck(t *testing.T) {
2719
require.True(t, testSubtype1.IsOfType(testSubtype1))
2820
require.False(t, testSubtype1.IsOfType(NewNamespace("a").NewType("b")))

0 commit comments

Comments
 (0)