xref: /aosp_15_r20/external/spdx-tools/tvsaver/saver2v1/save_snippet_test.go (revision ba677afa8f67bb56cbc794f4d0e378e0da058e16)
1*ba677afaSXin Li// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later
2*ba677afaSXin Li
3*ba677afaSXin Lipackage saver2v1
4*ba677afaSXin Li
5*ba677afaSXin Liimport (
6*ba677afaSXin Li	"bytes"
7*ba677afaSXin Li	"testing"
8*ba677afaSXin Li
9*ba677afaSXin Li	"github.com/spdx/tools-golang/spdx/common"
10*ba677afaSXin Li	"github.com/spdx/tools-golang/spdx/v2_1"
11*ba677afaSXin Li)
12*ba677afaSXin Li
13*ba677afaSXin Li// ===== Snippet section Saver tests =====
14*ba677afaSXin Lifunc TestSaver2_1SnippetSavesText(t *testing.T) {
15*ba677afaSXin Li	sn := &v2_1.Snippet{
16*ba677afaSXin Li		SnippetSPDXIdentifier:         common.ElementID("Snippet17"),
17*ba677afaSXin Li		SnippetFromFileSPDXIdentifier: common.MakeDocElementID("", "File292").ElementRefID,
18*ba677afaSXin Li		Ranges: []common.SnippetRange{
19*ba677afaSXin Li			{
20*ba677afaSXin Li				StartPointer: common.SnippetRangePointer{LineNumber: 3},
21*ba677afaSXin Li				EndPointer:   common.SnippetRangePointer{LineNumber: 8},
22*ba677afaSXin Li			},
23*ba677afaSXin Li			{
24*ba677afaSXin Li				StartPointer: common.SnippetRangePointer{Offset: 17},
25*ba677afaSXin Li				EndPointer:   common.SnippetRangePointer{Offset: 209},
26*ba677afaSXin Li			},
27*ba677afaSXin Li		},
28*ba677afaSXin Li		SnippetLicenseConcluded: "GPL-2.0-or-later",
29*ba677afaSXin Li		LicenseInfoInSnippet: []string{
30*ba677afaSXin Li			"GPL-2.0-or-later",
31*ba677afaSXin Li			"MIT",
32*ba677afaSXin Li		},
33*ba677afaSXin Li		SnippetLicenseComments: "this is a comment(s) about the snippet license",
34*ba677afaSXin Li		SnippetCopyrightText:   "Copyright (c) John Doe 20x6",
35*ba677afaSXin Li		SnippetComment:         "this is a snippet comment",
36*ba677afaSXin Li		SnippetName:            "from John's program",
37*ba677afaSXin Li	}
38*ba677afaSXin Li
39*ba677afaSXin Li	// what we want to get, as a buffer of bytes
40*ba677afaSXin Li	want := bytes.NewBufferString(`SnippetSPDXID: SPDXRef-Snippet17
41*ba677afaSXin LiSnippetFromFileSPDXID: SPDXRef-File292
42*ba677afaSXin LiSnippetLineRange: 3:8
43*ba677afaSXin LiSnippetByteRange: 17:209
44*ba677afaSXin LiSnippetLicenseConcluded: GPL-2.0-or-later
45*ba677afaSXin LiLicenseInfoInSnippet: GPL-2.0-or-later
46*ba677afaSXin LiLicenseInfoInSnippet: MIT
47*ba677afaSXin LiSnippetLicenseComments: this is a comment(s) about the snippet license
48*ba677afaSXin LiSnippetCopyrightText: Copyright (c) John Doe 20x6
49*ba677afaSXin LiSnippetComment: this is a snippet comment
50*ba677afaSXin LiSnippetName: from John's program
51*ba677afaSXin Li
52*ba677afaSXin Li`)
53*ba677afaSXin Li
54*ba677afaSXin Li	// render as buffer of bytes
55*ba677afaSXin Li	var got bytes.Buffer
56*ba677afaSXin Li	err := renderSnippet2_1(sn, &got)
57*ba677afaSXin Li	if err != nil {
58*ba677afaSXin Li		t.Errorf("Expected nil error, got %v", err)
59*ba677afaSXin Li	}
60*ba677afaSXin Li
61*ba677afaSXin Li	// check that they match
62*ba677afaSXin Li	c := bytes.Compare(want.Bytes(), got.Bytes())
63*ba677afaSXin Li	if c != 0 {
64*ba677afaSXin Li		t.Errorf("Expected %v, got %v", want.String(), got.String())
65*ba677afaSXin Li	}
66*ba677afaSXin Li}
67*ba677afaSXin Li
68*ba677afaSXin Lifunc TestSaver2_1SnippetOmitsOptionalFieldsIfEmpty(t *testing.T) {
69*ba677afaSXin Li	sn := &v2_1.Snippet{
70*ba677afaSXin Li		SnippetSPDXIdentifier:         common.ElementID("Snippet17"),
71*ba677afaSXin Li		SnippetFromFileSPDXIdentifier: common.MakeDocElementID("", "File292").ElementRefID,
72*ba677afaSXin Li		Ranges: []common.SnippetRange{
73*ba677afaSXin Li			{
74*ba677afaSXin Li				StartPointer: common.SnippetRangePointer{Offset: 17},
75*ba677afaSXin Li				EndPointer:   common.SnippetRangePointer{Offset: 209},
76*ba677afaSXin Li			},
77*ba677afaSXin Li		},
78*ba677afaSXin Li		SnippetLicenseConcluded: "GPL-2.0-or-later",
79*ba677afaSXin Li		SnippetCopyrightText:    "Copyright (c) John Doe 20x6",
80*ba677afaSXin Li	}
81*ba677afaSXin Li
82*ba677afaSXin Li	// what we want to get, as a buffer of bytes
83*ba677afaSXin Li	want := bytes.NewBufferString(`SnippetSPDXID: SPDXRef-Snippet17
84*ba677afaSXin LiSnippetFromFileSPDXID: SPDXRef-File292
85*ba677afaSXin LiSnippetByteRange: 17:209
86*ba677afaSXin LiSnippetLicenseConcluded: GPL-2.0-or-later
87*ba677afaSXin LiSnippetCopyrightText: Copyright (c) John Doe 20x6
88*ba677afaSXin Li
89*ba677afaSXin Li`)
90*ba677afaSXin Li
91*ba677afaSXin Li	// render as buffer of bytes
92*ba677afaSXin Li	var got bytes.Buffer
93*ba677afaSXin Li	err := renderSnippet2_1(sn, &got)
94*ba677afaSXin Li	if err != nil {
95*ba677afaSXin Li		t.Errorf("Expected nil error, got %v", err)
96*ba677afaSXin Li	}
97*ba677afaSXin Li
98*ba677afaSXin Li	// check that they match
99*ba677afaSXin Li	c := bytes.Compare(want.Bytes(), got.Bytes())
100*ba677afaSXin Li	if c != 0 {
101*ba677afaSXin Li		t.Errorf("Expected %v, got %v", want.String(), got.String())
102*ba677afaSXin Li	}
103*ba677afaSXin Li}
104*ba677afaSXin Li
105*ba677afaSXin Lifunc TestSaver2_1SnippetWrapsCopyrightMultiline(t *testing.T) {
106*ba677afaSXin Li	sn := &v2_1.Snippet{
107*ba677afaSXin Li		SnippetSPDXIdentifier:         common.ElementID("Snippet17"),
108*ba677afaSXin Li		SnippetFromFileSPDXIdentifier: common.MakeDocElementID("", "File292").ElementRefID,
109*ba677afaSXin Li		Ranges: []common.SnippetRange{
110*ba677afaSXin Li			{
111*ba677afaSXin Li				StartPointer: common.SnippetRangePointer{Offset: 17},
112*ba677afaSXin Li				EndPointer:   common.SnippetRangePointer{Offset: 209},
113*ba677afaSXin Li			},
114*ba677afaSXin Li		},
115*ba677afaSXin Li		SnippetLicenseConcluded: "GPL-2.0-or-later",
116*ba677afaSXin Li		SnippetCopyrightText: `Copyright (c) John Doe 20x6
117*ba677afaSXin LiCopyright (c) John Doe 20x6`,
118*ba677afaSXin Li	}
119*ba677afaSXin Li
120*ba677afaSXin Li	// what we want to get, as a buffer of bytes
121*ba677afaSXin Li	want := bytes.NewBufferString(`SnippetSPDXID: SPDXRef-Snippet17
122*ba677afaSXin LiSnippetFromFileSPDXID: SPDXRef-File292
123*ba677afaSXin LiSnippetByteRange: 17:209
124*ba677afaSXin LiSnippetLicenseConcluded: GPL-2.0-or-later
125*ba677afaSXin LiSnippetCopyrightText: <text>Copyright (c) John Doe 20x6
126*ba677afaSXin LiCopyright (c) John Doe 20x6</text>
127*ba677afaSXin Li
128*ba677afaSXin Li`)
129*ba677afaSXin Li
130*ba677afaSXin Li	// render as buffer of bytes
131*ba677afaSXin Li	var got bytes.Buffer
132*ba677afaSXin Li	err := renderSnippet2_1(sn, &got)
133*ba677afaSXin Li	if err != nil {
134*ba677afaSXin Li		t.Errorf("Expected nil error, got %v", err)
135*ba677afaSXin Li	}
136*ba677afaSXin Li
137*ba677afaSXin Li	// check that they match
138*ba677afaSXin Li	c := bytes.Compare(want.Bytes(), got.Bytes())
139*ba677afaSXin Li	if c != 0 {
140*ba677afaSXin Li		t.Errorf("Expected %v, got %v", want.String(), got.String())
141*ba677afaSXin Li	}
142*ba677afaSXin Li}
143