xref: /aosp_15_r20/external/spdx-tools/tvsaver/saver2v2/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 saver2v2
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_2"
11*ba677afaSXin Li)
12*ba677afaSXin Li
13*ba677afaSXin Li// ===== Snippet section Saver tests =====
14*ba677afaSXin Lifunc TestSaver2_2SnippetSavesText(t *testing.T) {
15*ba677afaSXin Li	sn := &v2_2.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		SnippetAttributionTexts: []string{"some attributions"},
38*ba677afaSXin Li	}
39*ba677afaSXin Li
40*ba677afaSXin Li	// what we want to get, as a buffer of bytes
41*ba677afaSXin Li	want := bytes.NewBufferString(`SnippetSPDXID: SPDXRef-Snippet17
42*ba677afaSXin LiSnippetFromFileSPDXID: SPDXRef-File292
43*ba677afaSXin LiSnippetLineRange: 3:8
44*ba677afaSXin LiSnippetByteRange: 17:209
45*ba677afaSXin LiSnippetLicenseConcluded: GPL-2.0-or-later
46*ba677afaSXin LiLicenseInfoInSnippet: GPL-2.0-or-later
47*ba677afaSXin LiLicenseInfoInSnippet: MIT
48*ba677afaSXin LiSnippetLicenseComments: this is a comment(s) about the snippet license
49*ba677afaSXin LiSnippetCopyrightText: Copyright (c) John Doe 20x6
50*ba677afaSXin LiSnippetComment: this is a snippet comment
51*ba677afaSXin LiSnippetName: from John's program
52*ba677afaSXin LiSnippetAttributionText: some attributions
53*ba677afaSXin Li
54*ba677afaSXin Li`)
55*ba677afaSXin Li
56*ba677afaSXin Li	// render as buffer of bytes
57*ba677afaSXin Li	var got bytes.Buffer
58*ba677afaSXin Li	err := renderSnippet2_2(sn, &got)
59*ba677afaSXin Li	if err != nil {
60*ba677afaSXin Li		t.Errorf("Expected nil error, got %v", err)
61*ba677afaSXin Li	}
62*ba677afaSXin Li
63*ba677afaSXin Li	// check that they match
64*ba677afaSXin Li	c := bytes.Compare(want.Bytes(), got.Bytes())
65*ba677afaSXin Li	if c != 0 {
66*ba677afaSXin Li		t.Errorf("Expected %v, got %v", want.String(), got.String())
67*ba677afaSXin Li	}
68*ba677afaSXin Li}
69*ba677afaSXin Li
70*ba677afaSXin Lifunc TestSaver2_2SnippetOmitsOptionalFieldsIfEmpty(t *testing.T) {
71*ba677afaSXin Li	sn := &v2_2.Snippet{
72*ba677afaSXin Li		SnippetSPDXIdentifier:         common.ElementID("Snippet17"),
73*ba677afaSXin Li		SnippetFromFileSPDXIdentifier: common.MakeDocElementID("", "File292").ElementRefID,
74*ba677afaSXin Li		Ranges: []common.SnippetRange{
75*ba677afaSXin Li			{
76*ba677afaSXin Li				StartPointer: common.SnippetRangePointer{Offset: 17},
77*ba677afaSXin Li				EndPointer:   common.SnippetRangePointer{Offset: 209},
78*ba677afaSXin Li			},
79*ba677afaSXin Li		},
80*ba677afaSXin Li		SnippetLicenseConcluded: "GPL-2.0-or-later",
81*ba677afaSXin Li		SnippetCopyrightText:    "Copyright (c) John Doe 20x6",
82*ba677afaSXin Li	}
83*ba677afaSXin Li
84*ba677afaSXin Li	// what we want to get, as a buffer of bytes
85*ba677afaSXin Li	want := bytes.NewBufferString(`SnippetSPDXID: SPDXRef-Snippet17
86*ba677afaSXin LiSnippetFromFileSPDXID: SPDXRef-File292
87*ba677afaSXin LiSnippetByteRange: 17:209
88*ba677afaSXin LiSnippetLicenseConcluded: GPL-2.0-or-later
89*ba677afaSXin LiSnippetCopyrightText: Copyright (c) John Doe 20x6
90*ba677afaSXin Li
91*ba677afaSXin Li`)
92*ba677afaSXin Li
93*ba677afaSXin Li	// render as buffer of bytes
94*ba677afaSXin Li	var got bytes.Buffer
95*ba677afaSXin Li	err := renderSnippet2_2(sn, &got)
96*ba677afaSXin Li	if err != nil {
97*ba677afaSXin Li		t.Errorf("Expected nil error, got %v", err)
98*ba677afaSXin Li	}
99*ba677afaSXin Li
100*ba677afaSXin Li	// check that they match
101*ba677afaSXin Li	c := bytes.Compare(want.Bytes(), got.Bytes())
102*ba677afaSXin Li	if c != 0 {
103*ba677afaSXin Li		t.Errorf("Expected %v, got %v", want.String(), got.String())
104*ba677afaSXin Li	}
105*ba677afaSXin Li}
106*ba677afaSXin Li
107*ba677afaSXin Lifunc TestSaver2_2SnippetWrapsCopyrightMultiline(t *testing.T) {
108*ba677afaSXin Li	sn := &v2_2.Snippet{
109*ba677afaSXin Li		SnippetSPDXIdentifier:         common.ElementID("Snippet17"),
110*ba677afaSXin Li		SnippetFromFileSPDXIdentifier: common.MakeDocElementID("", "File292").ElementRefID,
111*ba677afaSXin Li		Ranges: []common.SnippetRange{
112*ba677afaSXin Li			{
113*ba677afaSXin Li				StartPointer: common.SnippetRangePointer{Offset: 17},
114*ba677afaSXin Li				EndPointer:   common.SnippetRangePointer{Offset: 209},
115*ba677afaSXin Li			},
116*ba677afaSXin Li		},
117*ba677afaSXin Li		SnippetLicenseConcluded: "GPL-2.0-or-later",
118*ba677afaSXin Li		SnippetCopyrightText: `Copyright (c) John Doe 20x6
119*ba677afaSXin LiCopyright (c) John Doe 20x6`,
120*ba677afaSXin Li	}
121*ba677afaSXin Li
122*ba677afaSXin Li	// what we want to get, as a buffer of bytes
123*ba677afaSXin Li	want := bytes.NewBufferString(`SnippetSPDXID: SPDXRef-Snippet17
124*ba677afaSXin LiSnippetFromFileSPDXID: SPDXRef-File292
125*ba677afaSXin LiSnippetByteRange: 17:209
126*ba677afaSXin LiSnippetLicenseConcluded: GPL-2.0-or-later
127*ba677afaSXin LiSnippetCopyrightText: <text>Copyright (c) John Doe 20x6
128*ba677afaSXin LiCopyright (c) John Doe 20x6</text>
129*ba677afaSXin Li
130*ba677afaSXin Li`)
131*ba677afaSXin Li
132*ba677afaSXin Li	// render as buffer of bytes
133*ba677afaSXin Li	var got bytes.Buffer
134*ba677afaSXin Li	err := renderSnippet2_2(sn, &got)
135*ba677afaSXin Li	if err != nil {
136*ba677afaSXin Li		t.Errorf("Expected nil error, got %v", err)
137*ba677afaSXin Li	}
138*ba677afaSXin Li
139*ba677afaSXin Li	// check that they match
140*ba677afaSXin Li	c := bytes.Compare(want.Bytes(), got.Bytes())
141*ba677afaSXin Li	if c != 0 {
142*ba677afaSXin Li		t.Errorf("Expected %v, got %v", want.String(), got.String())
143*ba677afaSXin Li	}
144*ba677afaSXin Li}
145