package org.netbeans.gradle.project.license;
import java.io.IOException;
import java.nio.file.Path;
import java.util.Collection;
import java.util.Objects;
import org.junit.ClassRule;
import org.junit.Test;
import org.netbeans.gradle.project.util.TemporaryFileRule;
import static org.junit.Assert.*;
public class DefaultLicenseStoreTest {
@ClassRule
public static final TemporaryFileRule TMP_FILE = new TemporaryFileRule("TestLicenseContent");
@Test
public void testAddAndRemove() throws IOException {
Path src = TMP_FILE.getFile();
final DefaultLicenseDef licenseDef = new DefaultLicenseDef(src, "TestLicense1", "TestDisplayName1");
final DefaultLicenseStore store = new DefaultLicenseStore();
addAndRemove(store, licenseDef, new Runnable() {
@Override
public void run() {
assertTrue(store.containsLicense(licenseDef.getLicenseId()));
}
});
assertFalse(store.containsLicense(licenseDef.getLicenseId()));
}
@Test
public void testRemoveNonExistantDoesNotFail() throws IOException {
Path src = TMP_FILE.getFile();
DefaultLicenseDef licenseDef = new DefaultLicenseDef(src, "TestLicense2", "TestDisplayName2");
DefaultLicenseStore store = new DefaultLicenseStore();
assertFalse(store.containsLicense(licenseDef.getLicenseId()));
store.removeLicense(licenseDef.getLicenseId());
assertFalse(store.containsLicense(licenseDef.getLicenseId()));
}
@Test
public void testGetLicenses() throws IOException {
Path src = TMP_FILE.getFile();
final DefaultLicenseDef licenseDef = new DefaultLicenseDef(src, "TestLicense1", "TestDisplayName1");
final DefaultLicenseStore store = new DefaultLicenseStore();
addAndRemove(store, licenseDef, new Runnable() {
@Override
public void run() {
Collection<LicenseRef> licenses = store.getAllLicense();
LicenseRef found = findById(licenses, licenseDef.getLicenseId());
assertNotNull("License", found);
assertEquals("Dynamic", true, found.isDynamic());
assertEquals("DisplayName", licenseDef.getDisplayName(), found.getDisplayName());
assertEquals("Id", licenseDef.getLicenseId(), found.getId());
}
});
assertFalse(store.containsLicense(licenseDef.getLicenseId()));
}
private static void addAndRemove(
LicenseStore<DefaultLicenseDef> store,
DefaultLicenseDef licenseDef,
Runnable taskWhileAdded) throws IOException {
store.addLicense(licenseDef);
try {
taskWhileAdded.run();
} finally {
store.removeLicense(licenseDef.getLicenseId());
}
}
private static LicenseRef findById(Collection<? extends LicenseRef> refs, String licenseId) {
for (LicenseRef ref: refs) {
if (Objects.equals(ref.getId(), licenseId)) {
return ref;
}
}
return null;
}
}