1*ba677afaSXin Li// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later 2*ba677afaSXin Li 3*ba677afaSXin Lipackage saver2v3 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_3" 11*ba677afaSXin Li) 12*ba677afaSXin Li 13*ba677afaSXin Li// ===== Snippet section Saver tests ===== 14*ba677afaSXin Lifunc TestSaver2_3SnippetSavesText(t *testing.T) { 15*ba677afaSXin Li sn := &v2_3.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_3(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_3SnippetOmitsOptionalFieldsIfEmpty(t *testing.T) { 71*ba677afaSXin Li sn := &v2_3.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_3(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_3SnippetWrapsCopyrightMultiline(t *testing.T) { 108*ba677afaSXin Li sn := &v2_3.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_3(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