JavaVersionSpecificXMLBasedAjcTestCase.java
/* *******************************************************************
* Copyright (c) 2024 Contributors
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Eclipse Public License v 2.0
* which accompanies this distribution and is available at
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt
* ******************************************************************/
package org.aspectj.testing;
import static org.aspectj.util.LangUtil.isVMGreaterOrEqual;
import static org.aspectj.util.LangUtil.isVMLessOrEqual;
/**
* A test case which only runs on specific Java versions
*
* @author Alexander Kriegisch
*/
public abstract class JavaVersionSpecificXMLBasedAjcTestCase extends XMLBasedAjcTestCase {
private final int minimumJavaVersion;
private final int maximumJavaVersion;
protected JavaVersionSpecificXMLBasedAjcTestCase(int minimumJavaVersion) {
this(minimumJavaVersion, Integer.MAX_VALUE);
}
protected JavaVersionSpecificXMLBasedAjcTestCase(int minimumJavaVersion, int maximumJavaVersion) {
this.minimumJavaVersion = minimumJavaVersion;
this.maximumJavaVersion = maximumJavaVersion;
}
@Override
public void setUp() throws Exception {
boolean withinBounds = isVMGreaterOrEqual(minimumJavaVersion) && isVMLessOrEqual(maximumJavaVersion);
if (!withinBounds) {
String errorMessage = "These tests must run on Java version ";
if (maximumJavaVersion == Integer.MAX_VALUE)
errorMessage += minimumJavaVersion + " or greater";
else if (maximumJavaVersion == minimumJavaVersion)
errorMessage += minimumJavaVersion + " only";
else
errorMessage += "range " + minimumJavaVersion + " to " + maximumJavaVersion;
throw new IllegalStateException(errorMessage);
}
super.setUp();
}
}