package org.revapi.basic;
import java.util.Collections;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
import org.junit.Test;
import org.revapi.API;
import org.revapi.AnalysisContext;
import org.revapi.Archive;
import org.revapi.CompatibilityType;
import org.revapi.Difference;
import org.revapi.DifferenceSeverity;
import org.revapi.Element;
import org.revapi.simple.SimpleElement;
/**
* @author Lukas Krejci
* @since 0.1
*/
public class ClassificationTransformTest {
private static class DummyElement extends SimpleElement {
private final String name;
public DummyElement(String name) {
this.name = name;
}
@Nonnull
@Override
@SuppressWarnings("ConstantConditions")
public API getApi() {
return null;
}
@Nullable
@Override
public Archive getArchive() {
return null;
}
@Nonnull
@Override
public String getFullHumanReadableString() {
return name;
}
@Override
public int compareTo(@Nonnull Element o) {
if (!(o instanceof DummyElement)) {
return -1;
}
return name.compareTo(((DummyElement) o).name);
}
}
private static API emptyAPI() {
return new API(Collections.<Archive>emptyList(), Collections.<Archive>emptyList());
}
@Test
public void test() throws Exception {
DummyElement oldE = new DummyElement("old");
DummyElement newE = new DummyElement("new");
Difference difference = Difference.builder().withCode("code").addClassification(
CompatibilityType.BINARY, DifferenceSeverity.NON_BREAKING).addClassification(CompatibilityType.SOURCE,
DifferenceSeverity.POTENTIALLY_BREAKING).build();
AnalysisContext config = AnalysisContext.builder()
.withConfigurationFromJSON(
"{\"revapi\": {\"reclassify\":[{\"code\":\"code\", \"classify\": {\"BINARY\" : \"BREAKING\"}}]}}")
.build();
try (ClassificationTransform t = new ClassificationTransform()) {
t.initialize(config);
difference = t.transform(oldE, newE, difference);
assert difference != null &&
difference.classification.get(CompatibilityType.BINARY) == DifferenceSeverity.BREAKING;
assert difference != null &&
difference.classification.get(CompatibilityType.SOURCE) == DifferenceSeverity.POTENTIALLY_BREAKING;
}
}
//TODO add schema tests
}