package org.spdx.rdfparser;
import static org.junit.Assert.*;
import java.io.File;
import java.io.IOException;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.spdx.rdfparser.LicenseDeclaration;
import org.spdx.spdxspreadsheet.PackageInfoSheet;
import org.spdx.spdxspreadsheet.SpreadsheetException;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.ss.usermodel.Workbook;
public class TestPackageInfoSheet {
File spreadsheetFile;
@Before
public void setUp() throws Exception {
spreadsheetFile = File.createTempFile("TEST_PKG_INFO", "xls");
}
@After
public void tearDown() throws Exception {
spreadsheetFile.delete();
}
@Test
public void testVerify() {
fail("Not yet implemented");
}
@Test
public void testCreate() throws IOException, InvalidFormatException {
Workbook wb = new HSSFWorkbook();
PackageInfoSheet.create(wb, "Package Info");
PackageInfoSheet pkgInfo = new PackageInfoSheet(wb, "Package Info");
String ver = pkgInfo.verify();
if (ver != null && !ver.isEmpty()){
fail(ver);
}
}
@Test
public void testAddAndGet() throws SpreadsheetException {
SPDXLicenseInfo[] testLicenses1 = new SPDXLicenseInfo[3];
testLicenses1[0] = new SPDXNonStandardLicense("License1", "License1Text");
SPDXLicenseInfo[] disjunctiveLicenses = new SPDXLicenseInfo[3];
disjunctiveLicenses[0] = new SPDXNonStandardLicense("disj1", "disj1 Text");
disjunctiveLicenses[1] = new SPDXNonStandardLicense("disj2", "disj2 Text");
disjunctiveLicenses[2] = new SPDXNonStandardLicense("disj3", "disj3 Text");
testLicenses1[1] = new SPDXDisjunctiveLicenseSet(disjunctiveLicenses);
SPDXLicenseInfo[] conjunctiveLicenses = new SPDXLicenseInfo[] {
new SPDXNonStandardLicense("conj1", "conj1 Text"),
new SPDXNonStandardLicense("conj2", "conj2 Text")
};
testLicenses1[2] = new SPDXConjunctiveLicenseSet(conjunctiveLicenses);
SPDXLicenseInfo testLicense1 = new SPDXDisjunctiveLicenseSet(testLicenses1);
// String lic1String = PackageInfoSheet.licensesToString(testLicenses1);
SPDXLicenseInfo[] testLicenses2 = new SPDXLicenseInfo[2];
testLicenses2[0] = new SPDXNonStandardLicense("License3", "License 3 text");
testLicenses2[1] = new SPDXNonStandardLicense("License4", "License 4 text");
SPDXLicenseInfo testLicense2 = new SPDXConjunctiveLicenseSet(testLicenses2);
// String lic2String = PackageInfoSheet.licensesToString(testLicenses2);
SPDXPackageInfo pkgInfo1 = new SPDXPackageInfo("decname1", "machinename1",
"sha1-1", "sourceinfo1", new SPDXLicenseInfo[] {testLicense1},
new SPDXLicenseInfo[] {testLicense2}, "dec-copyright1",
"short desc1", "desc1", "http://url1", "filechecksum1");
SPDXPackageInfo pkgInfo2 = new SPDXPackageInfo("decname1", "machinename1",
"sha1-1", "sourceinfo1", new SPDXLicenseInfo[] {testLicense1},
new SPDXLicenseInfo[] {testLicense2}, "dec-copyright1",
"short desc1", "desc1", "http://url1", "filechecksum1");
Workbook wb = new HSSFWorkbook();
PackageInfoSheet.create(wb, "Package Info");
PackageInfoSheet pkgInfoSheet = new PackageInfoSheet(wb, "Package Info");
pkgInfoSheet.add(pkgInfo1);
pkgInfoSheet.add(pkgInfo2);
SPDXPackageInfo tstPkgInfo1 = pkgInfoSheet.getPackageInfo(1);
SPDXPackageInfo tstPkgInfo2 = pkgInfoSheet.getPackageInfo(2);
comparePkgInfo(pkgInfo1, tstPkgInfo1);
comparePkgInfo(pkgInfo2, tstPkgInfo2);
SPDXPackageInfo tstPkgInfo3 = pkgInfoSheet.getPackageInfo(3);
if (tstPkgInfo3 != null) {
fail("should be null");
}
}
private void comparePkgInfo(SPDXPackageInfo pkgInfo1,
SPDXPackageInfo pkgInfo2) {
assertEquals(pkgInfo1.getDeclaredCopyright(), pkgInfo2.getDeclaredCopyright());
compareLicenseDeclarations(pkgInfo1.getDeclaredLicenses(), pkgInfo2.getDeclaredLicenses());
compareLicenseDeclarations(pkgInfo1.getDetectedLicenses(), pkgInfo2.getDetectedLicenses());
assertEquals(pkgInfo1.getDeclaredName(), pkgInfo2.getDeclaredName());
assertEquals(pkgInfo1.getDescription(), pkgInfo2.getDescription());
assertEquals(pkgInfo1.getFileChecksum(), pkgInfo2.getFileChecksum());
assertEquals(pkgInfo1.getFileName(), pkgInfo2.getFileName());
assertEquals(pkgInfo1.getSha1(), pkgInfo2.getSha1());
assertEquals(pkgInfo1.getShortDescription(), pkgInfo2.getShortDescription());
assertEquals(pkgInfo1.getSourceInfo(), pkgInfo2.getSourceInfo());
assertEquals(pkgInfo1.getUrl(), pkgInfo2.getUrl());
}
static public void compareLicenseDeclarations(
SPDXLicenseInfo[] testLicenses,
SPDXLicenseInfo[] result) {
assertEquals(testLicenses.length, result.length);
for (int i = 0;i < testLicenses.length; i++) {
boolean found = false;
for (int j = 0; j < result.length; j++) {
if (testLicenses[i].equals(result[j])) {
found = true;
}
}
if (!found) {
fail("License match "+testLicenses[i].toString()+ " was not found.");
}
}
}
}