aboutsummaryrefslogtreecommitdiff
path: root/tvloader/parser2v1/parser_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'tvloader/parser2v1/parser_test.go')
-rw-r--r--tvloader/parser2v1/parser_test.go71
1 files changed, 71 insertions, 0 deletions
diff --git a/tvloader/parser2v1/parser_test.go b/tvloader/parser2v1/parser_test.go
new file mode 100644
index 0000000..55cb129
--- /dev/null
+++ b/tvloader/parser2v1/parser_test.go
@@ -0,0 +1,71 @@
+// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
+package parser2v1
+
+import (
+ "testing"
+
+ "github.com/spdx/tools-golang/tvloader/reader"
+)
+
+// ===== Parser exported entry point tests =====
+func TestParser2_1CanParseTagValues(t *testing.T) {
+ var tvPairs []reader.TagValuePair
+
+ // create some pairs
+ tvPair1 := reader.TagValuePair{Tag: "SPDXVersion", Value: "SPDX-2.1"}
+ tvPairs = append(tvPairs, tvPair1)
+ tvPair2 := reader.TagValuePair{Tag: "DataLicense", Value: "CC0-1.0"}
+ tvPairs = append(tvPairs, tvPair2)
+ tvPair3 := reader.TagValuePair{Tag: "SPDXID", Value: "SPDXRef-DOCUMENT"}
+ tvPairs = append(tvPairs, tvPair3)
+
+ // now parse them
+ doc, err := ParseTagValues(tvPairs)
+ if err != nil {
+ t.Errorf("got error when calling ParseTagValues: %v", err)
+ }
+ if doc.CreationInfo.SPDXVersion != "SPDX-2.1" {
+ t.Errorf("expected SPDXVersion to be SPDX-2.1, got %v", doc.CreationInfo.SPDXVersion)
+ }
+ if doc.CreationInfo.DataLicense != "CC0-1.0" {
+ t.Errorf("expected DataLicense to be CC0-1.0, got %v", doc.CreationInfo.DataLicense)
+ }
+ if doc.CreationInfo.SPDXIdentifier != "SPDXRef-DOCUMENT" {
+ t.Errorf("expected SPDXIdentifier to be SPDXRef-DOCUMENT, got %v", doc.CreationInfo.SPDXIdentifier)
+ }
+
+}
+
+// ===== Parser initialization tests =====
+func TestParser2_1InitCreatesResetStatus(t *testing.T) {
+ parser := tvParser2_1{}
+ if parser.st != psStart2_1 {
+ t.Errorf("parser did not begin in start state")
+ }
+ if parser.doc != nil {
+ t.Errorf("parser did not begin with nil document")
+ }
+}
+
+func TestParser2_1HasDocumentAfterCallToParseFirstTag(t *testing.T) {
+ parser := tvParser2_1{}
+ err := parser.parsePair2_1("SPDXVersion", "SPDX-2.1")
+ if err != nil {
+ t.Errorf("got error when calling parsePair2_1: %v", err)
+ }
+ if parser.doc == nil {
+ t.Errorf("doc is still nil after parsing first pair")
+ }
+}
+
+// ===== Parser start state change tests =====
+func TestParser2_1StartMovesToCreationInfoStateAfterParsingFirstTag(t *testing.T) {
+ parser := tvParser2_1{}
+ err := parser.parsePair2_1("SPDXVersion", "b")
+ if err != nil {
+ t.Errorf("got error when calling parsePair2_1: %v", err)
+ }
+ if parser.st != psCreationInfo2_1 {
+ t.Errorf("parser is in state %v, expected %v", parser.st, psCreationInfo2_1)
+ }
+}