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// ===== Annotation section Saver tests ===== 14*ba677afaSXin Lifunc TestSaver2_1AnnotationSavesTextForPerson(t *testing.T) { 15*ba677afaSXin Li ann := &v2_1.Annotation{ 16*ba677afaSXin Li Annotator: common.Annotator{AnnotatorType: "Person", Annotator: "John Doe"}, 17*ba677afaSXin Li AnnotationDate: "2018-10-10T17:52:00Z", 18*ba677afaSXin Li AnnotationType: "REVIEW", 19*ba677afaSXin Li AnnotationSPDXIdentifier: common.MakeDocElementID("", "DOCUMENT"), 20*ba677afaSXin Li AnnotationComment: "This is an annotation about the SPDX document", 21*ba677afaSXin Li } 22*ba677afaSXin Li 23*ba677afaSXin Li // what we want to get, as a buffer of bytes 24*ba677afaSXin Li // no trailing blank newline 25*ba677afaSXin Li want := bytes.NewBufferString(`Annotator: Person: John Doe 26*ba677afaSXin LiAnnotationDate: 2018-10-10T17:52:00Z 27*ba677afaSXin LiAnnotationType: REVIEW 28*ba677afaSXin LiSPDXREF: SPDXRef-DOCUMENT 29*ba677afaSXin LiAnnotationComment: This is an annotation about the SPDX document 30*ba677afaSXin Li`) 31*ba677afaSXin Li 32*ba677afaSXin Li // render as buffer of bytes 33*ba677afaSXin Li var got bytes.Buffer 34*ba677afaSXin Li err := renderAnnotation2_1(ann, &got) 35*ba677afaSXin Li if err != nil { 36*ba677afaSXin Li t.Errorf("Expected nil error, got %v", err) 37*ba677afaSXin Li } 38*ba677afaSXin Li 39*ba677afaSXin Li // check that they match 40*ba677afaSXin Li c := bytes.Compare(want.Bytes(), got.Bytes()) 41*ba677afaSXin Li if c != 0 { 42*ba677afaSXin Li t.Errorf("Expected %v, got %v", want.String(), got.String()) 43*ba677afaSXin Li } 44*ba677afaSXin Li} 45*ba677afaSXin Li 46*ba677afaSXin Lifunc TestSaver2_1AnnotationSavesTextForOrganization(t *testing.T) { 47*ba677afaSXin Li ann := &v2_1.Annotation{ 48*ba677afaSXin Li Annotator: common.Annotator{AnnotatorType: "Organization", Annotator: "John Doe, Inc."}, 49*ba677afaSXin Li AnnotationDate: "2018-10-10T17:52:00Z", 50*ba677afaSXin Li AnnotationType: "REVIEW", 51*ba677afaSXin Li AnnotationSPDXIdentifier: common.MakeDocElementID("", "DOCUMENT"), 52*ba677afaSXin Li AnnotationComment: "This is an annotation about the SPDX document", 53*ba677afaSXin Li } 54*ba677afaSXin Li 55*ba677afaSXin Li // what we want to get, as a buffer of bytes 56*ba677afaSXin Li // no trailing blank newline 57*ba677afaSXin Li want := bytes.NewBufferString(`Annotator: Organization: John Doe, Inc. 58*ba677afaSXin LiAnnotationDate: 2018-10-10T17:52:00Z 59*ba677afaSXin LiAnnotationType: REVIEW 60*ba677afaSXin LiSPDXREF: SPDXRef-DOCUMENT 61*ba677afaSXin LiAnnotationComment: This is an annotation about the SPDX document 62*ba677afaSXin Li`) 63*ba677afaSXin Li 64*ba677afaSXin Li // render as buffer of bytes 65*ba677afaSXin Li var got bytes.Buffer 66*ba677afaSXin Li err := renderAnnotation2_1(ann, &got) 67*ba677afaSXin Li if err != nil { 68*ba677afaSXin Li t.Errorf("Expected nil error, got %v", err) 69*ba677afaSXin Li } 70*ba677afaSXin Li 71*ba677afaSXin Li // check that they match 72*ba677afaSXin Li c := bytes.Compare(want.Bytes(), got.Bytes()) 73*ba677afaSXin Li if c != 0 { 74*ba677afaSXin Li t.Errorf("Expected %v, got %v", want.String(), got.String()) 75*ba677afaSXin Li } 76*ba677afaSXin Li} 77*ba677afaSXin Li 78*ba677afaSXin Lifunc TestSaver2_1AnnotationSavesTextForTool(t *testing.T) { 79*ba677afaSXin Li ann := &v2_1.Annotation{ 80*ba677afaSXin Li Annotator: common.Annotator{AnnotatorType: "Tool", Annotator: "magictool-1.1"}, 81*ba677afaSXin Li AnnotationDate: "2018-10-10T17:52:00Z", 82*ba677afaSXin Li AnnotationType: "REVIEW", 83*ba677afaSXin Li AnnotationSPDXIdentifier: common.MakeDocElementID("", "DOCUMENT"), 84*ba677afaSXin Li AnnotationComment: "This is an annotation about the SPDX document", 85*ba677afaSXin Li } 86*ba677afaSXin Li 87*ba677afaSXin Li // what we want to get, as a buffer of bytes 88*ba677afaSXin Li // no trailing blank newline 89*ba677afaSXin Li want := bytes.NewBufferString(`Annotator: Tool: magictool-1.1 90*ba677afaSXin LiAnnotationDate: 2018-10-10T17:52:00Z 91*ba677afaSXin LiAnnotationType: REVIEW 92*ba677afaSXin LiSPDXREF: SPDXRef-DOCUMENT 93*ba677afaSXin LiAnnotationComment: This is an annotation about the SPDX document 94*ba677afaSXin Li`) 95*ba677afaSXin Li 96*ba677afaSXin Li // render as buffer of bytes 97*ba677afaSXin Li var got bytes.Buffer 98*ba677afaSXin Li err := renderAnnotation2_1(ann, &got) 99*ba677afaSXin Li if err != nil { 100*ba677afaSXin Li t.Errorf("Expected nil error, got %v", err) 101*ba677afaSXin Li } 102*ba677afaSXin Li 103*ba677afaSXin Li // check that they match 104*ba677afaSXin Li c := bytes.Compare(want.Bytes(), got.Bytes()) 105*ba677afaSXin Li if c != 0 { 106*ba677afaSXin Li t.Errorf("Expected %v, got %v", want.String(), got.String()) 107*ba677afaSXin Li } 108*ba677afaSXin Li} 109*ba677afaSXin Li 110*ba677afaSXin Li// note that the annotation has no optional or multiple fields 111