package org.ovirt.engine.core.common.businessentities.comparators; import static org.junit.Assert.assertEquals; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; @RunWith(Parameterized.class) public class LexoNumericComparatorTest { private LexoNumericComparator comparator; private String left; private String right; private int expectedResult; public LexoNumericComparatorTest(boolean caseSensitive, String left, String right, int expectedResult) { comparator = new LexoNumericComparator(caseSensitive); this.left = left; this.right = right; this.expectedResult = expectedResult; } private void verifyResult(String left, String right, int expectedResult) { assertEquals(String.format("Expected %1$s to be %3$s %2$s, but it wasn't.", left, right, expectedResult == -1 ? "less than" : expectedResult == 1 ? "greater than" : "equal to"), expectedResult, comparator.compare(left, right)); } @Test public void runTest() { verifyResult(left, right, expectedResult); verifyResult(right, left, -expectedResult); } @Parameterized.Parameters public static Object[][] comparisonParameters() { return new Object[][] { { false, null, null, 0 }, { false, null, "", -1 }, { false, "", "", 0 }, { false, "", "123", -1 }, { false, "123", "123", 0 }, { false, "123", "456", -1 }, { false, "12", "123", -1 }, { false, "012", "12", -1 }, { false, "2", "10", -1 }, { false, "123abc", "123abc", 0 }, { true, "123abc", "123abc", 0 }, { false, "123Abc", "123abc", -1 }, { true, "123Abc", "123abc", -1 }, { false, "123abc", "456abc", -1 }, { false, "12abc", "123abc", -1 }, { false, "012abc", "12abc", -1 }, { false, "2abc", "10abc", -1 }, { false, "123", "abc", -1 }, { false, "abc", "abc", 0 }, { true, "abc", "abc", 0 }, { false, "Abc", "abc", -1 }, { true, "Abc", "abc", -1 }, { false, "abc", "def", -1 }, { false, "ab", "abc", -1 }, { false, "123abc", "123def", -1 }, { false, "123ab", "123abc", -1 }, { false, "abc123", "abc123", 0 }, { true, "abc123", "abc123", 0 }, { false, "Abc123", "abc123", -1 }, { true, "Abc123", "abc123", -1 }, { false, "Abc234", "abc123", 1 }, { true, "Abc234", "abc123", -1 }, { false, "Abc1234", "abc123", 1 }, { true, "Abc1234", "abc123", -1 }, { false, "abc123", "def123", -1 }, { false, "ab123", "abc123", -1 }, { false, "abc123", "abc456", -1 }, { false, "abc12", "abc123", -1 }, { false, "abc012", "abc12", -1 }, { false, "abc2", "abc10", -1 }, { false, "abc123def", "abc123def", 0 }, { true, "abc123def", "abc123def", 0 }, { false, "Abc123def", "abc123def", -1 }, { true, "Abc123def", "abc123def", -1 }, { false, "Abc234def", "abc123def", 1 }, { true, "Abc234def", "abc123def", -1 }, { false, "Abc1234def", "abc123def", 1 }, { true, "Abc1234def", "abc123def", -1 }, { false, "abc123def", "abc123ghi", -1 }, { false, "abc123de", "abc123def", -1 }, { false, "abc123456789123de", "abc123456789123de", 0 }, { true, "abc123456789123de", "abc123456789123de", 0 }, { false, "Abc123456789123de", "abc123456789123de", -1 }, { true, "Abc123456789123de", "abc123456789123de", -1 }, { false, "Abc123456789234de", "abc123456789123de", 1 }, { true, "Abc123456789234de", "abc123456789123de", -1 }, { false, "Abc1234567891234de", "abc123456789123de", 1 }, { true, "Abc1234567891234de", "abc123456789123de", -1 }, { false, "abc123456789123de", "abc123456789123fg", -1 }, { false, "abc123456789123de", "abc123456789123def", -1 } }; } }