1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
package parser2v2
import (
"testing"
"github.com/spdx/tools-golang/tvloader/reader"
)
// ===== Parser exported entry point tests =====
func TestParser2_2CanParseTagValues(t *testing.T) {
var tvPairs []reader.TagValuePair
// create some pairs
tvPair1 := reader.TagValuePair{Tag: "SPDXVersion", Value: "SPDX-2.2"}
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.2" {
t.Errorf("expected SPDXVersion to be SPDX-2.2, 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 != "DOCUMENT" {
t.Errorf("expected SPDXIdentifier to be DOCUMENT, got %v", doc.CreationInfo.SPDXIdentifier)
}
}
// ===== Parser initialization tests =====
func TestParser2_2InitCreatesResetStatus(t *testing.T) {
parser := tvParser2_2{}
if parser.st != psStart2_2 {
t.Errorf("parser did not begin in start state")
}
if parser.doc != nil {
t.Errorf("parser did not begin with nil document")
}
}
func TestParser2_2HasDocumentAfterCallToParseFirstTag(t *testing.T) {
parser := tvParser2_2{}
err := parser.parsePair2_2("SPDXVersion", "SPDX-2.2")
if err != nil {
t.Errorf("got error when calling parsePair2_2: %v", err)
}
if parser.doc == nil {
t.Errorf("doc is still nil after parsing first pair")
}
}
// ===== Parser start state change tests =====
func TestParser2_2StartMovesToCreationInfoStateAfterParsingFirstTag(t *testing.T) {
parser := tvParser2_2{}
err := parser.parsePair2_2("SPDXVersion", "b")
if err != nil {
t.Errorf("got error when calling parsePair2_2: %v", err)
}
if parser.st != psCreationInfo2_2 {
t.Errorf("parser is in state %v, expected %v", parser.st, psCreationInfo2_2)
}
}
func TestParser2_2StartFailsToParseIfInInvalidState(t *testing.T) {
parser := tvParser2_2{st: psReview2_2}
err := parser.parsePairFromStart2_2("SPDXVersion", "SPDX-2.2")
if err == nil {
t.Errorf("expected non-nil error, got nil")
}
}
|