diff options
Diffstat (limited to 'tvloader/parser2v1/parser_test.go')
-rw-r--r-- | tvloader/parser2v1/parser_test.go | 71 |
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) + } +} |