169 lines
5.3 KiB
Java
169 lines
5.3 KiB
Java
package org.bukkit.craftbukkit.util;
|
|
|
|
import static org.junit.jupiter.api.Assertions.*;
|
|
import java.util.stream.Stream;
|
|
import net.minecraft.SharedConstants;
|
|
import org.bukkit.support.AbstractTestingBase;
|
|
import org.junit.jupiter.api.Test;
|
|
import org.junit.jupiter.params.ParameterizedTest;
|
|
import org.junit.jupiter.params.provider.Arguments;
|
|
import org.junit.jupiter.params.provider.MethodSource;
|
|
|
|
public class ApiVersionTest extends AbstractTestingBase {
|
|
|
|
public static Stream<Arguments> parseData() {
|
|
return Stream.of(
|
|
Arguments.of(null, "none"),
|
|
Arguments.of("", "none"),
|
|
Arguments.of("none", "none"),
|
|
Arguments.of("1.12", "1.12.0"),
|
|
Arguments.of("1.13.3", "1.13.3"),
|
|
Arguments.of("1.+20.3", "1.20.3")
|
|
);
|
|
}
|
|
|
|
public static Stream<Arguments> compareData() {
|
|
return Stream.of(
|
|
Arguments.of("none", "none", CompareResult.SAME),
|
|
Arguments.of("none", "1.20", CompareResult.SMALLER),
|
|
Arguments.of("2.20.3", "1.30.4", CompareResult.BIGGER),
|
|
Arguments.of("1.13", "1.12", CompareResult.BIGGER),
|
|
Arguments.of("1.13.2", "1.13.3", CompareResult.SMALLER)
|
|
);
|
|
}
|
|
|
|
public static Stream<Arguments> newerData() {
|
|
return Stream.of(
|
|
Arguments.of("1.12", "1.12", false),
|
|
Arguments.of("1.12", "1.12.2", false),
|
|
Arguments.of("1.12.2", "1.12", true)
|
|
);
|
|
}
|
|
|
|
public static Stream<Arguments> olderData() {
|
|
return Stream.of(
|
|
Arguments.of("1.12", "1.12", false),
|
|
Arguments.of("1.12", "1.12.2", true),
|
|
Arguments.of("1.12.2", "1.12", false)
|
|
);
|
|
}
|
|
|
|
public static Stream<Arguments> newerOrSameData() {
|
|
return Stream.of(
|
|
Arguments.of("1.12", "1.12", true),
|
|
Arguments.of("1.12", "1.12.2", false),
|
|
Arguments.of("1.12.2", "1.12", true)
|
|
);
|
|
}
|
|
|
|
public static Stream<Arguments> olderOrSameData() {
|
|
return Stream.of(
|
|
Arguments.of("1.12", "1.12", true),
|
|
Arguments.of("1.12", "1.12.2", true),
|
|
Arguments.of("1.12.2", "1.12", false)
|
|
);
|
|
}
|
|
|
|
@Test
|
|
public void testCurrentVersionUpdated() {
|
|
ApiVersion apiVersionOne = ApiVersion.getOrCreateVersion(SharedConstants.getCurrentVersion().getName());
|
|
ApiVersion apiVersionTwo = ApiVersion.CURRENT;
|
|
|
|
assertEquals(apiVersionOne, apiVersionTwo, "The current version in ApiVersion not match current minecraft version");
|
|
}
|
|
|
|
@ParameterizedTest
|
|
@MethodSource("parseData")
|
|
public void testParsing(String parse, String expected) {
|
|
ApiVersion apiVersion = ApiVersion.getOrCreateVersion(parse);
|
|
|
|
assertEquals(expected, apiVersion.getVersionString());
|
|
}
|
|
|
|
@Test
|
|
public void testSameInstance() {
|
|
ApiVersion one = ApiVersion.getOrCreateVersion("1.23.3");
|
|
ApiVersion second = ApiVersion.getOrCreateVersion("1.+23.3");
|
|
|
|
assertSame(one, second);
|
|
}
|
|
|
|
@ParameterizedTest
|
|
@MethodSource("compareData")
|
|
public void testCompareTo(String first, String second, CompareResult compareResult) {
|
|
ApiVersion firstApi = ApiVersion.getOrCreateVersion(first);
|
|
ApiVersion secondApi = ApiVersion.getOrCreateVersion(second);
|
|
|
|
|
|
int result = firstApi.compareTo(secondApi);
|
|
|
|
assertSame(compareResult, CompareResult.toCompareResult(result));
|
|
}
|
|
|
|
@ParameterizedTest
|
|
@MethodSource("newerData")
|
|
public void testNewerThan(String first, String second, boolean newer) {
|
|
ApiVersion firstApi = ApiVersion.getOrCreateVersion(first);
|
|
ApiVersion secondApi = ApiVersion.getOrCreateVersion(second);
|
|
|
|
|
|
boolean result = firstApi.isNewerThan(secondApi);
|
|
|
|
assertSame(newer, result);
|
|
}
|
|
|
|
@ParameterizedTest
|
|
@MethodSource("olderData")
|
|
public void testOlderThan(String first, String second, boolean older) {
|
|
ApiVersion firstApi = ApiVersion.getOrCreateVersion(first);
|
|
ApiVersion secondApi = ApiVersion.getOrCreateVersion(second);
|
|
|
|
|
|
boolean result = firstApi.isOlderThan(secondApi);
|
|
|
|
assertSame(older, result);
|
|
}
|
|
|
|
@ParameterizedTest
|
|
@MethodSource("newerOrSameData")
|
|
public void testNewerOrSame(String first, String second, boolean newerOrSame) {
|
|
ApiVersion firstApi = ApiVersion.getOrCreateVersion(first);
|
|
ApiVersion secondApi = ApiVersion.getOrCreateVersion(second);
|
|
|
|
|
|
boolean result = firstApi.isNewerThanOrSameAs(secondApi);
|
|
|
|
assertSame(newerOrSame, result);
|
|
}
|
|
|
|
@ParameterizedTest
|
|
@MethodSource("olderOrSameData")
|
|
public void testOlderOrSame(String first, String second, boolean olderOrSame) {
|
|
ApiVersion firstApi = ApiVersion.getOrCreateVersion(first);
|
|
ApiVersion secondApi = ApiVersion.getOrCreateVersion(second);
|
|
|
|
|
|
boolean result = firstApi.isOlderThanOrSameAs(secondApi);
|
|
|
|
assertSame(olderOrSame, result);
|
|
}
|
|
|
|
public enum CompareResult {
|
|
SMALLER,
|
|
BIGGER,
|
|
SAME;
|
|
|
|
public static CompareResult toCompareResult(int i) {
|
|
if (i == 0) {
|
|
return CompareResult.SAME;
|
|
}
|
|
|
|
if (i < 0) {
|
|
return CompareResult.SMALLER;
|
|
}
|
|
|
|
return CompareResult.BIGGER;
|
|
}
|
|
}
|
|
}
|