1*ba677afaSXin Li// SPDX-License-Identifier: Apache-2.0 OR GPL-2.0-or-later 2*ba677afaSXin Li 3*ba677afaSXin Lipackage utils 4*ba677afaSXin Li 5*ba677afaSXin Liimport ( 6*ba677afaSXin Li "testing" 7*ba677afaSXin Li 8*ba677afaSXin Li "github.com/spdx/tools-golang/spdx/common" 9*ba677afaSXin Li "github.com/spdx/tools-golang/spdx/v2_1" 10*ba677afaSXin Li "github.com/spdx/tools-golang/spdx/v2_2" 11*ba677afaSXin Li "github.com/spdx/tools-golang/spdx/v2_3" 12*ba677afaSXin Li) 13*ba677afaSXin Li 14*ba677afaSXin Li// ===== 2.1 Verification code functionality tests ===== 15*ba677afaSXin Li 16*ba677afaSXin Lifunc TestPackage2_1CanGetVerificationCode(t *testing.T) { 17*ba677afaSXin Li files := []*v2_1.File{ 18*ba677afaSXin Li { 19*ba677afaSXin Li FileName: "file2.txt", 20*ba677afaSXin Li FileSPDXIdentifier: "File0", 21*ba677afaSXin Li Checksums: []common.Checksum{{Value: "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}}, 22*ba677afaSXin Li }, 23*ba677afaSXin Li { 24*ba677afaSXin Li FileName: "file1.txt", 25*ba677afaSXin Li FileSPDXIdentifier: "File1", 26*ba677afaSXin Li Checksums: []common.Checksum{{Value: "3333333333bbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}}, 27*ba677afaSXin Li }, 28*ba677afaSXin Li { 29*ba677afaSXin Li FileName: "file3.txt", 30*ba677afaSXin Li FileSPDXIdentifier: "File2", 31*ba677afaSXin Li Checksums: []common.Checksum{{Value: "8888888888bbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}}, 32*ba677afaSXin Li }, 33*ba677afaSXin Li { 34*ba677afaSXin Li FileName: "file5.txt", 35*ba677afaSXin Li FileSPDXIdentifier: "File3", 36*ba677afaSXin Li Checksums: []common.Checksum{{Value: "2222222222bbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}}, 37*ba677afaSXin Li }, 38*ba677afaSXin Li { 39*ba677afaSXin Li FileName: "file4.txt", 40*ba677afaSXin Li FileSPDXIdentifier: "File4", 41*ba677afaSXin Li Checksums: []common.Checksum{{Value: "bbbbbbbbbbccccccccccddddddddddaaaaaaaaaa", Algorithm: common.SHA1}}, 42*ba677afaSXin Li }, 43*ba677afaSXin Li } 44*ba677afaSXin Li 45*ba677afaSXin Li wantCode := common.PackageVerificationCode{Value: "ac924b375119c81c1f08c3e2722044bfbbdcd3dc"} 46*ba677afaSXin Li 47*ba677afaSXin Li gotCode, err := GetVerificationCode2_1(files, "") 48*ba677afaSXin Li if err != nil { 49*ba677afaSXin Li t.Fatalf("expected nil error, got %v", err) 50*ba677afaSXin Li } 51*ba677afaSXin Li if wantCode.Value != gotCode.Value { 52*ba677afaSXin Li t.Errorf("expected %v, got %v", wantCode, gotCode) 53*ba677afaSXin Li } 54*ba677afaSXin Li 55*ba677afaSXin Li} 56*ba677afaSXin Li 57*ba677afaSXin Lifunc TestPackage2_1CanGetVerificationCodeIgnoringExcludesFile(t *testing.T) { 58*ba677afaSXin Li files := []*v2_1.File{ 59*ba677afaSXin Li { 60*ba677afaSXin Li FileName: "file1.txt", 61*ba677afaSXin Li FileSPDXIdentifier: "File0", 62*ba677afaSXin Li Checksums: []common.Checksum{{Value: "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}}, 63*ba677afaSXin Li }, 64*ba677afaSXin Li { 65*ba677afaSXin Li FileName: "file2.txt", 66*ba677afaSXin Li FileSPDXIdentifier: "File1", 67*ba677afaSXin Li Checksums: []common.Checksum{{Value: "3333333333bbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}}, 68*ba677afaSXin Li }, 69*ba677afaSXin Li { 70*ba677afaSXin Li FileName: "thisfile.spdx", 71*ba677afaSXin Li FileSPDXIdentifier: "File2", 72*ba677afaSXin Li Checksums: []common.Checksum{{Value: "bbbbbbbbbbccccccccccddddddddddaaaaaaaaaa", Algorithm: common.SHA1}}, 73*ba677afaSXin Li }, 74*ba677afaSXin Li { 75*ba677afaSXin Li FileName: "file3.txt", 76*ba677afaSXin Li FileSPDXIdentifier: "File3", 77*ba677afaSXin Li Checksums: []common.Checksum{{Value: "8888888888bbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}}, 78*ba677afaSXin Li }, 79*ba677afaSXin Li { 80*ba677afaSXin Li FileName: "file4.txt", 81*ba677afaSXin Li FileSPDXIdentifier: "File4", 82*ba677afaSXin Li Checksums: []common.Checksum{{Value: "2222222222bbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}}, 83*ba677afaSXin Li }, 84*ba677afaSXin Li } 85*ba677afaSXin Li 86*ba677afaSXin Li wantCode := common.PackageVerificationCode{Value: "17fab1bd18fe5c13b5d3983f1c17e5f88b8ff266"} 87*ba677afaSXin Li 88*ba677afaSXin Li gotCode, err := GetVerificationCode2_1(files, "thisfile.spdx") 89*ba677afaSXin Li if err != nil { 90*ba677afaSXin Li t.Fatalf("expected nil error, got %v", err) 91*ba677afaSXin Li } 92*ba677afaSXin Li if wantCode.Value != gotCode.Value { 93*ba677afaSXin Li t.Errorf("expected %v, got %v", wantCode, gotCode) 94*ba677afaSXin Li } 95*ba677afaSXin Li} 96*ba677afaSXin Li 97*ba677afaSXin Lifunc TestPackage2_1GetVerificationCodeFailsIfNilFileInSlice(t *testing.T) { 98*ba677afaSXin Li files := []*v2_1.File{ 99*ba677afaSXin Li { 100*ba677afaSXin Li FileName: "file2.txt", 101*ba677afaSXin Li FileSPDXIdentifier: "File0", 102*ba677afaSXin Li Checksums: []common.Checksum{{Value: "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}}, 103*ba677afaSXin Li }, 104*ba677afaSXin Li nil, 105*ba677afaSXin Li { 106*ba677afaSXin Li FileName: "file3.txt", 107*ba677afaSXin Li FileSPDXIdentifier: "File2", 108*ba677afaSXin Li Checksums: []common.Checksum{{Value: "8888888888bbbbbbbbbbccccccccccdddddddddd", Algorithm: common.SHA1}}, 109*ba677afaSXin Li }, 110*ba677afaSXin Li } 111*ba677afaSXin Li 112*ba677afaSXin Li _, err := GetVerificationCode2_1(files, "") 113*ba677afaSXin Li if err == nil { 114*ba677afaSXin Li t.Fatalf("expected non-nil error, got nil") 115*ba677afaSXin Li } 116*ba677afaSXin Li} 117*ba677afaSXin Li 118*ba677afaSXin Li// ===== 2.2 Verification code functionality tests ===== 119*ba677afaSXin Li 120*ba677afaSXin Lifunc TestPackage2_2CanGetVerificationCode(t *testing.T) { 121*ba677afaSXin Li files := []*v2_2.File{ 122*ba677afaSXin Li { 123*ba677afaSXin Li FileName: "file2.txt", 124*ba677afaSXin Li FileSPDXIdentifier: "File0", 125*ba677afaSXin Li Checksums: []common.Checksum{ 126*ba677afaSXin Li { 127*ba677afaSXin Li Algorithm: common.SHA1, 128*ba677afaSXin Li Value: "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd", 129*ba677afaSXin Li }, 130*ba677afaSXin Li }, 131*ba677afaSXin Li }, 132*ba677afaSXin Li { 133*ba677afaSXin Li FileName: "file1.txt", 134*ba677afaSXin Li FileSPDXIdentifier: "File1", 135*ba677afaSXin Li Checksums: []common.Checksum{ 136*ba677afaSXin Li { 137*ba677afaSXin Li Algorithm: common.SHA1, 138*ba677afaSXin Li Value: "3333333333bbbbbbbbbbccccccccccdddddddddd", 139*ba677afaSXin Li }, 140*ba677afaSXin Li }, 141*ba677afaSXin Li }, 142*ba677afaSXin Li { 143*ba677afaSXin Li FileName: "file3.txt", 144*ba677afaSXin Li FileSPDXIdentifier: "File2", 145*ba677afaSXin Li Checksums: []common.Checksum{ 146*ba677afaSXin Li { 147*ba677afaSXin Li Algorithm: common.SHA1, 148*ba677afaSXin Li Value: "8888888888bbbbbbbbbbccccccccccdddddddddd", 149*ba677afaSXin Li }, 150*ba677afaSXin Li }, 151*ba677afaSXin Li }, 152*ba677afaSXin Li { 153*ba677afaSXin Li FileName: "file5.txt", 154*ba677afaSXin Li FileSPDXIdentifier: "File3", 155*ba677afaSXin Li Checksums: []common.Checksum{ 156*ba677afaSXin Li { 157*ba677afaSXin Li Algorithm: common.SHA1, 158*ba677afaSXin Li Value: "2222222222bbbbbbbbbbccccccccccdddddddddd", 159*ba677afaSXin Li }, 160*ba677afaSXin Li }, 161*ba677afaSXin Li }, 162*ba677afaSXin Li { 163*ba677afaSXin Li FileName: "file4.txt", 164*ba677afaSXin Li FileSPDXIdentifier: "File4", 165*ba677afaSXin Li Checksums: []common.Checksum{ 166*ba677afaSXin Li { 167*ba677afaSXin Li Algorithm: common.SHA1, 168*ba677afaSXin Li Value: "bbbbbbbbbbccccccccccddddddddddaaaaaaaaaa", 169*ba677afaSXin Li }, 170*ba677afaSXin Li }, 171*ba677afaSXin Li }, 172*ba677afaSXin Li } 173*ba677afaSXin Li 174*ba677afaSXin Li wantCode := common.PackageVerificationCode{Value: "ac924b375119c81c1f08c3e2722044bfbbdcd3dc"} 175*ba677afaSXin Li 176*ba677afaSXin Li gotCode, err := GetVerificationCode2_2(files, "") 177*ba677afaSXin Li if err != nil { 178*ba677afaSXin Li t.Fatalf("expected nil error, got %v", err) 179*ba677afaSXin Li } 180*ba677afaSXin Li if wantCode.Value != gotCode.Value { 181*ba677afaSXin Li t.Errorf("expected %v, got %v", wantCode, gotCode) 182*ba677afaSXin Li } 183*ba677afaSXin Li 184*ba677afaSXin Li} 185*ba677afaSXin Li 186*ba677afaSXin Lifunc TestPackage2_2CanGetVerificationCodeIgnoringExcludesFile(t *testing.T) { 187*ba677afaSXin Li files := []*v2_2.File{ 188*ba677afaSXin Li { 189*ba677afaSXin Li FileName: "file1.txt", 190*ba677afaSXin Li FileSPDXIdentifier: "File0", 191*ba677afaSXin Li Checksums: []common.Checksum{ 192*ba677afaSXin Li { 193*ba677afaSXin Li Algorithm: common.SHA1, 194*ba677afaSXin Li Value: "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd", 195*ba677afaSXin Li }, 196*ba677afaSXin Li }, 197*ba677afaSXin Li }, 198*ba677afaSXin Li { 199*ba677afaSXin Li FileName: "file2.txt", 200*ba677afaSXin Li FileSPDXIdentifier: "File1", 201*ba677afaSXin Li Checksums: []common.Checksum{ 202*ba677afaSXin Li { 203*ba677afaSXin Li Algorithm: common.SHA1, 204*ba677afaSXin Li Value: "3333333333bbbbbbbbbbccccccccccdddddddddd", 205*ba677afaSXin Li }, 206*ba677afaSXin Li }, 207*ba677afaSXin Li }, 208*ba677afaSXin Li { 209*ba677afaSXin Li FileName: "thisfile.spdx", 210*ba677afaSXin Li FileSPDXIdentifier: "File2", 211*ba677afaSXin Li Checksums: []common.Checksum{ 212*ba677afaSXin Li { 213*ba677afaSXin Li Algorithm: common.SHA1, 214*ba677afaSXin Li Value: "bbbbbbbbbbccccccccccddddddddddaaaaaaaaaa", 215*ba677afaSXin Li }, 216*ba677afaSXin Li }, 217*ba677afaSXin Li }, 218*ba677afaSXin Li { 219*ba677afaSXin Li FileName: "file3.txt", 220*ba677afaSXin Li FileSPDXIdentifier: "File3", 221*ba677afaSXin Li Checksums: []common.Checksum{ 222*ba677afaSXin Li { 223*ba677afaSXin Li Algorithm: common.SHA1, 224*ba677afaSXin Li Value: "8888888888bbbbbbbbbbccccccccccdddddddddd", 225*ba677afaSXin Li }, 226*ba677afaSXin Li }, 227*ba677afaSXin Li }, 228*ba677afaSXin Li { 229*ba677afaSXin Li FileName: "file4.txt", 230*ba677afaSXin Li FileSPDXIdentifier: "File4", 231*ba677afaSXin Li Checksums: []common.Checksum{ 232*ba677afaSXin Li { 233*ba677afaSXin Li Algorithm: common.SHA1, 234*ba677afaSXin Li Value: "2222222222bbbbbbbbbbccccccccccdddddddddd", 235*ba677afaSXin Li }, 236*ba677afaSXin Li }, 237*ba677afaSXin Li }, 238*ba677afaSXin Li } 239*ba677afaSXin Li 240*ba677afaSXin Li wantCode := common.PackageVerificationCode{Value: "17fab1bd18fe5c13b5d3983f1c17e5f88b8ff266"} 241*ba677afaSXin Li 242*ba677afaSXin Li gotCode, err := GetVerificationCode2_2(files, "thisfile.spdx") 243*ba677afaSXin Li if err != nil { 244*ba677afaSXin Li t.Fatalf("expected nil error, got %v", err) 245*ba677afaSXin Li } 246*ba677afaSXin Li if wantCode.Value != gotCode.Value { 247*ba677afaSXin Li t.Errorf("expected %v, got %v", wantCode, gotCode) 248*ba677afaSXin Li } 249*ba677afaSXin Li} 250*ba677afaSXin Li 251*ba677afaSXin Lifunc TestPackage2_2GetVerificationCodeFailsIfNilFileInSlice(t *testing.T) { 252*ba677afaSXin Li files := []*v2_2.File{ 253*ba677afaSXin Li { 254*ba677afaSXin Li FileName: "file2.txt", 255*ba677afaSXin Li FileSPDXIdentifier: "File0", 256*ba677afaSXin Li Checksums: []common.Checksum{ 257*ba677afaSXin Li { 258*ba677afaSXin Li Algorithm: common.SHA1, 259*ba677afaSXin Li Value: "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd", 260*ba677afaSXin Li }, 261*ba677afaSXin Li }, 262*ba677afaSXin Li }, 263*ba677afaSXin Li nil, 264*ba677afaSXin Li { 265*ba677afaSXin Li FileName: "file3.txt", 266*ba677afaSXin Li FileSPDXIdentifier: "File2", 267*ba677afaSXin Li Checksums: []common.Checksum{ 268*ba677afaSXin Li { 269*ba677afaSXin Li Algorithm: common.SHA1, 270*ba677afaSXin Li Value: "8888888888bbbbbbbbbbccccccccccdddddddddd", 271*ba677afaSXin Li }, 272*ba677afaSXin Li }, 273*ba677afaSXin Li }, 274*ba677afaSXin Li } 275*ba677afaSXin Li 276*ba677afaSXin Li _, err := GetVerificationCode2_2(files, "") 277*ba677afaSXin Li if err == nil { 278*ba677afaSXin Li t.Fatalf("expected non-nil error, got nil") 279*ba677afaSXin Li } 280*ba677afaSXin Li} 281*ba677afaSXin Li 282*ba677afaSXin Li// ===== 2.3 Verification code functionality tests ===== 283*ba677afaSXin Li 284*ba677afaSXin Lifunc TestPackage2_3CanGetVerificationCode(t *testing.T) { 285*ba677afaSXin Li files := []*v2_3.File{ 286*ba677afaSXin Li { 287*ba677afaSXin Li FileName: "file2.txt", 288*ba677afaSXin Li FileSPDXIdentifier: "File0", 289*ba677afaSXin Li Checksums: []common.Checksum{ 290*ba677afaSXin Li { 291*ba677afaSXin Li Algorithm: common.SHA1, 292*ba677afaSXin Li Value: "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd", 293*ba677afaSXin Li }, 294*ba677afaSXin Li }, 295*ba677afaSXin Li }, 296*ba677afaSXin Li { 297*ba677afaSXin Li FileName: "file1.txt", 298*ba677afaSXin Li FileSPDXIdentifier: "File1", 299*ba677afaSXin Li Checksums: []common.Checksum{ 300*ba677afaSXin Li { 301*ba677afaSXin Li Algorithm: common.SHA1, 302*ba677afaSXin Li Value: "3333333333bbbbbbbbbbccccccccccdddddddddd", 303*ba677afaSXin Li }, 304*ba677afaSXin Li }, 305*ba677afaSXin Li }, 306*ba677afaSXin Li { 307*ba677afaSXin Li FileName: "file3.txt", 308*ba677afaSXin Li FileSPDXIdentifier: "File2", 309*ba677afaSXin Li Checksums: []common.Checksum{ 310*ba677afaSXin Li { 311*ba677afaSXin Li Algorithm: common.SHA1, 312*ba677afaSXin Li Value: "8888888888bbbbbbbbbbccccccccccdddddddddd", 313*ba677afaSXin Li }, 314*ba677afaSXin Li }, 315*ba677afaSXin Li }, 316*ba677afaSXin Li { 317*ba677afaSXin Li FileName: "file5.txt", 318*ba677afaSXin Li FileSPDXIdentifier: "File3", 319*ba677afaSXin Li Checksums: []common.Checksum{ 320*ba677afaSXin Li { 321*ba677afaSXin Li Algorithm: common.SHA1, 322*ba677afaSXin Li Value: "2222222222bbbbbbbbbbccccccccccdddddddddd", 323*ba677afaSXin Li }, 324*ba677afaSXin Li }, 325*ba677afaSXin Li }, 326*ba677afaSXin Li { 327*ba677afaSXin Li FileName: "file4.txt", 328*ba677afaSXin Li FileSPDXIdentifier: "File4", 329*ba677afaSXin Li Checksums: []common.Checksum{ 330*ba677afaSXin Li { 331*ba677afaSXin Li Algorithm: common.SHA1, 332*ba677afaSXin Li Value: "bbbbbbbbbbccccccccccddddddddddaaaaaaaaaa", 333*ba677afaSXin Li }, 334*ba677afaSXin Li }, 335*ba677afaSXin Li }, 336*ba677afaSXin Li } 337*ba677afaSXin Li 338*ba677afaSXin Li wantCode := common.PackageVerificationCode{Value: "ac924b375119c81c1f08c3e2722044bfbbdcd3dc"} 339*ba677afaSXin Li 340*ba677afaSXin Li gotCode, err := GetVerificationCode2_3(files, "") 341*ba677afaSXin Li if err != nil { 342*ba677afaSXin Li t.Fatalf("expected nil error, got %v", err) 343*ba677afaSXin Li } 344*ba677afaSXin Li if wantCode.Value != gotCode.Value { 345*ba677afaSXin Li t.Errorf("expected %v, got %v", wantCode, gotCode) 346*ba677afaSXin Li } 347*ba677afaSXin Li 348*ba677afaSXin Li} 349*ba677afaSXin Li 350*ba677afaSXin Lifunc TestPackage2_3CanGetVerificationCodeIgnoringExcludesFile(t *testing.T) { 351*ba677afaSXin Li files := []*v2_3.File{ 352*ba677afaSXin Li { 353*ba677afaSXin Li FileName: "file1.txt", 354*ba677afaSXin Li FileSPDXIdentifier: "File0", 355*ba677afaSXin Li Checksums: []common.Checksum{ 356*ba677afaSXin Li { 357*ba677afaSXin Li Algorithm: common.SHA1, 358*ba677afaSXin Li Value: "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd", 359*ba677afaSXin Li }, 360*ba677afaSXin Li }, 361*ba677afaSXin Li }, 362*ba677afaSXin Li { 363*ba677afaSXin Li FileName: "file2.txt", 364*ba677afaSXin Li FileSPDXIdentifier: "File1", 365*ba677afaSXin Li Checksums: []common.Checksum{ 366*ba677afaSXin Li { 367*ba677afaSXin Li Algorithm: common.SHA1, 368*ba677afaSXin Li Value: "3333333333bbbbbbbbbbccccccccccdddddddddd", 369*ba677afaSXin Li }, 370*ba677afaSXin Li }, 371*ba677afaSXin Li }, 372*ba677afaSXin Li { 373*ba677afaSXin Li FileName: "thisfile.spdx", 374*ba677afaSXin Li FileSPDXIdentifier: "File2", 375*ba677afaSXin Li Checksums: []common.Checksum{ 376*ba677afaSXin Li { 377*ba677afaSXin Li Algorithm: common.SHA1, 378*ba677afaSXin Li Value: "bbbbbbbbbbccccccccccddddddddddaaaaaaaaaa", 379*ba677afaSXin Li }, 380*ba677afaSXin Li }, 381*ba677afaSXin Li }, 382*ba677afaSXin Li { 383*ba677afaSXin Li FileName: "file3.txt", 384*ba677afaSXin Li FileSPDXIdentifier: "File3", 385*ba677afaSXin Li Checksums: []common.Checksum{ 386*ba677afaSXin Li { 387*ba677afaSXin Li Algorithm: common.SHA1, 388*ba677afaSXin Li Value: "8888888888bbbbbbbbbbccccccccccdddddddddd", 389*ba677afaSXin Li }, 390*ba677afaSXin Li }, 391*ba677afaSXin Li }, 392*ba677afaSXin Li { 393*ba677afaSXin Li FileName: "file4.txt", 394*ba677afaSXin Li FileSPDXIdentifier: "File4", 395*ba677afaSXin Li Checksums: []common.Checksum{ 396*ba677afaSXin Li { 397*ba677afaSXin Li Algorithm: common.SHA1, 398*ba677afaSXin Li Value: "2222222222bbbbbbbbbbccccccccccdddddddddd", 399*ba677afaSXin Li }, 400*ba677afaSXin Li }, 401*ba677afaSXin Li }, 402*ba677afaSXin Li } 403*ba677afaSXin Li 404*ba677afaSXin Li wantCode := common.PackageVerificationCode{Value: "17fab1bd18fe5c13b5d3983f1c17e5f88b8ff266"} 405*ba677afaSXin Li 406*ba677afaSXin Li gotCode, err := GetVerificationCode2_3(files, "thisfile.spdx") 407*ba677afaSXin Li if err != nil { 408*ba677afaSXin Li t.Fatalf("expected nil error, got %v", err) 409*ba677afaSXin Li } 410*ba677afaSXin Li if wantCode.Value != gotCode.Value { 411*ba677afaSXin Li t.Errorf("expected %v, got %v", wantCode, gotCode) 412*ba677afaSXin Li } 413*ba677afaSXin Li} 414*ba677afaSXin Li 415*ba677afaSXin Lifunc TestPackage2_3GetVerificationCodeFailsIfNilFileInSlice(t *testing.T) { 416*ba677afaSXin Li files := []*v2_3.File{ 417*ba677afaSXin Li { 418*ba677afaSXin Li FileName: "file2.txt", 419*ba677afaSXin Li FileSPDXIdentifier: "File0", 420*ba677afaSXin Li Checksums: []common.Checksum{ 421*ba677afaSXin Li { 422*ba677afaSXin Li Algorithm: common.SHA1, 423*ba677afaSXin Li Value: "aaaaaaaaaabbbbbbbbbbccccccccccdddddddddd", 424*ba677afaSXin Li }, 425*ba677afaSXin Li }, 426*ba677afaSXin Li }, 427*ba677afaSXin Li nil, 428*ba677afaSXin Li { 429*ba677afaSXin Li FileName: "file3.txt", 430*ba677afaSXin Li FileSPDXIdentifier: "File2", 431*ba677afaSXin Li Checksums: []common.Checksum{ 432*ba677afaSXin Li { 433*ba677afaSXin Li Algorithm: common.SHA1, 434*ba677afaSXin Li Value: "8888888888bbbbbbbbbbccccccccccdddddddddd", 435*ba677afaSXin Li }, 436*ba677afaSXin Li }, 437*ba677afaSXin Li }, 438*ba677afaSXin Li } 439*ba677afaSXin Li 440*ba677afaSXin Li _, err := GetVerificationCode2_3(files, "") 441*ba677afaSXin Li if err == nil { 442*ba677afaSXin Li t.Fatalf("expected non-nil error, got nil") 443*ba677afaSXin Li } 444*ba677afaSXin Li} 445