SEBA-705 better error reporting
Change-Id: Id461c6efe2d0b7ab9c0d1ddb72482d10899b16fe
diff --git a/error/error_test.go b/error/error_test.go
new file mode 100644
index 0000000..072b74e
--- /dev/null
+++ b/error/error_test.go
@@ -0,0 +1,81 @@
+/*
+ * Portions copyright 2019-present Open Networking Foundation
+ * Original copyright 2019-present Ciena Corporation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package error
+
+import (
+ "fmt"
+ "github.com/stretchr/testify/assert"
+ "testing"
+)
+
+func init() {
+ SetPrefix("cordctl")
+}
+
+func TestGenericError(t *testing.T) {
+ var err error
+
+ err = fmt.Errorf("Some error")
+
+ // Type conversion from `error` to ChecksumMismatchError should fail
+ _, ok := err.(ChecksumMismatchError)
+ assert.False(t, ok)
+
+ // Type conversion from `error` to CordCtlError should fail
+ _, ok = err.(CordCtlError)
+ assert.False(t, ok)
+}
+
+func TestChecksumMismatchError(t *testing.T) {
+ var err error
+
+ err = WithStackTrace(&ChecksumMismatchError{Actual: "123", Expected: "456"})
+
+ //assert.Equal(t, err.(*ChecksumMismatchError).Stack(), "foo")
+
+ // Check that the Error() function returns the right text
+ assert.Equal(t, err.Error(), "cordctl: checksum mismatch (actual=456, expected=123)")
+
+ // Type conversion from `error` to ChecksumMismatchError should succeed
+ _, ok := err.(*ChecksumMismatchError)
+ assert.True(t, ok)
+
+ // Type switch is another way of doing the same
+ switch err.(type) {
+ case *ChecksumMismatchError:
+ // do nothing
+ case CordCtlError:
+ assert.Fail(t, "Should have used the ChecksumMismatchError case instead")
+ default:
+ assert.Fail(t, "Wrong part of switch statement was called")
+ }
+
+ // Type conversion from `error` to CordCtlError should succeed
+ cce, ok := err.(CordCtlError)
+ assert.True(t, ok)
+
+ // ShouldDumpStack() returned from a ChecksumMismatchError should be false
+ assert.False(t, cce.ShouldDumpStack())
+}
+
+func TestUnknownModelTypeError(t *testing.T) {
+ var err error
+
+ err = WithStackTrace(&UnknownModelTypeError{Name: "foo"})
+
+ _ = err
+}