summaryrefslogtreecommitdiff
path: root/tests/ff_obj_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ff_obj_test.go')
-rw-r--r--tests/ff_obj_test.go106
1 files changed, 106 insertions, 0 deletions
diff --git a/tests/ff_obj_test.go b/tests/ff_obj_test.go
new file mode 100644
index 0000000..7ba81f7
--- /dev/null
+++ b/tests/ff_obj_test.go
@@ -0,0 +1,106 @@
+/**
+ * Copyright 2014 Paul Querna
+ *
+ * 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 tff
+
+import (
+ fflib "github.com/pquerna/ffjson/fflib/v1"
+
+ "testing"
+)
+
+// Test data from https://github.com/akheron/jansson/tree/master/test/suites
+// jansson, Copyright (c) 2009-2014 Petri Lehtinen <petri@digip.org>
+// (MIT Licensed)
+
+func TestInvalidBareKey(t *testing.T) {
+ testExpectedError(t,
+ &fflib.LexerError{},
+ `{X:"foo"}`,
+ &Xobj{})
+}
+
+func TestInvalidNoValue(t *testing.T) {
+ testExpectedError(t,
+ &fflib.LexerError{},
+ `{"X":}`,
+ &Xobj{})
+}
+
+func TestInvalidTrailingComma(t *testing.T) {
+ testExpectedError(t,
+ &fflib.LexerError{},
+ `{"X":"foo",}`,
+ &Xobj{})
+}
+
+func TestInvalidRougeComma(t *testing.T) {
+ testExpectedError(t,
+ &fflib.LexerError{},
+ `{,}`,
+ &Xobj{})
+}
+
+func TestInvalidRougeColon(t *testing.T) {
+ testExpectedError(t,
+ &fflib.LexerError{},
+ `{:}`,
+ &Xobj{})
+}
+
+func TestInvalidMissingColon(t *testing.T) {
+ testExpectedError(t,
+ &fflib.LexerError{},
+ `{"X""foo"}`,
+ &Xobj{})
+ testExpectedError(t,
+ &fflib.LexerError{},
+ `{"X" "foo"}`,
+ &Xobj{})
+ testExpectedError(t,
+ &fflib.LexerError{},
+ `{"X","foo"}`,
+ &Xobj{})
+}
+
+func TestInvalidUnmatchedBrace(t *testing.T) {
+ testExpectedError(t,
+ &fflib.LexerError{},
+ `[`,
+ &Xobj{})
+}
+
+func TestInvalidUnmatchedBracket(t *testing.T) {
+ testExpectedError(t,
+ &fflib.LexerError{},
+ `{`,
+ &Xobj{})
+}
+
+func TestInvalidExpectedObjGotArray(t *testing.T) {
+ testExpectedError(t,
+ &fflib.LexerError{},
+ `[]`,
+ &Xobj{})
+}
+
+func TestInvalidUnterminatedValue(t *testing.T) {
+ testExpectedError(t,
+ &fflib.LexerError{},
+ `{"X": "foo`,
+ &Xobj{})
+}