From 13db521712b3f45d5d2c824b17c318e4ed0a8335 Mon Sep 17 00:00:00 2001 From: Markus Walther Date: Tue, 2 Oct 2018 19:26:52 +0200 Subject: [PATCH] sendtables: Add ServerClass tests --- sendtables/sendtables.go | 13 ++++++- sendtables/sendtables_test.go | 64 +++++++++++++++++++++++++++++++++++ 2 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 sendtables/sendtables_test.go diff --git a/sendtables/sendtables.go b/sendtables/sendtables.go index a1d6653f..7801f06b 100644 --- a/sendtables/sendtables.go +++ b/sendtables/sendtables.go @@ -163,5 +163,16 @@ func (sc *ServerClass) String() string { for i, fProp := range sc.flattenedProps { props[i] = fProp.name } - return fmt.Sprintf(serverClassStringFormat, sc.id, sc.name, sc.dataTableID, sc.dataTableName, strings.Join(baseClasses, "\n\t\t"), strings.Join(props, "\n\t\t")) + + baseClassesStr := "-" + if len(baseClasses) > 0 { + baseClassesStr = strings.Join(baseClasses, "\n\t\t") + } + + propsStr := "-" + if len(props) > 0 { + propsStr = strings.Join(props, "\n\t\t") + } + + return fmt.Sprintf(serverClassStringFormat, sc.id, sc.name, sc.dataTableID, sc.dataTableName, baseClassesStr, propsStr) } diff --git a/sendtables/sendtables_test.go b/sendtables/sendtables_test.go new file mode 100644 index 00000000..fb7f4d12 --- /dev/null +++ b/sendtables/sendtables_test.go @@ -0,0 +1,64 @@ +package sendtables + +import ( + "testing" + + assert "github.com/stretchr/testify/assert" +) + +func TestServerClassGetters(t *testing.T) { + sc := ServerClass{ + id: 1, + name: "TestClass", + dataTableID: 2, + dataTableName: "ADataTable", + } + + assert.Equal(t, sc.id, sc.ID(), "ID should return the id field") + assert.Equal(t, sc.name, sc.Name(), "Name should return the name field") + assert.Equal(t, sc.dataTableID, sc.DataTableID(), "DataTableID should return the dataTableID field") + assert.Equal(t, sc.dataTableName, sc.DataTableName(), "DataTableName should return the dataTableName field") +} + +func TestServerClassPropertyEntries(t *testing.T) { + var sc ServerClass + assert.Empty(t, sc.PropertyEntries()) + + sc.flattenedProps = []flattenedPropEntry{flattenedPropEntry{name: "prop1"}, flattenedPropEntry{name: "prop2"}} + + assert.ElementsMatch(t, []string{"prop1", "prop2"}, sc.PropertyEntries()) +} + +func TestServerClassString(t *testing.T) { + sc := ServerClass{ + id: 1, + name: "TestClass", + dataTableID: 2, + dataTableName: "ADataTable", + } + + expectedString := `ServerClass: id=1 name=TestClass + dataTableId=2 + dataTableName=ADataTable + baseClasses: + - + properties: + -` + + assert.Equal(t, expectedString, sc.String()) + + sc.baseClasses = []*ServerClass{&ServerClass{name: "AnotherClass"}, &ServerClass{name: "YetAnotherClass"}} + sc.flattenedProps = []flattenedPropEntry{flattenedPropEntry{name: "prop1"}, flattenedPropEntry{name: "prop2"}} + + expectedString = `ServerClass: id=1 name=TestClass + dataTableId=2 + dataTableName=ADataTable + baseClasses: + AnotherClass + YetAnotherClass + properties: + prop1 + prop2` + + assert.Equal(t, expectedString, sc.String()) +}