package tim.prune.gui.map; import static org.junit.jupiter.api.Assertions.*; import java.util.HashSet; import org.junit.jupiter.api.Test; /** * JUnit tests for site name utils */ class SiteNameUtilsTest { @Test void testPickServerNameWithoutWildcards() { testPickSingleUrl("abc", "abc"); testPickSingleUrl("ab[]c", "abc"); testPickSingleUrl("[]abc", "abc"); testPickSingleUrl("abc[]", "abc"); } /** * Test a pattern without wildcards which should always produce the expected result * @param inPattern pattern for site name * @param inExpected expected resolved name */ private void testPickSingleUrl(String inPattern, String inExpected) { for (int i=0; i<20; i++) { String resolved = SiteNameUtils.pickServerUrl(inPattern); assertEquals(inExpected, resolved, "Failed: " + inPattern); } } @Test void testPickUsingWildcards() { testRandomPick("ab[123]c", new String[]{"ab1c", "ab2c", "ab3c"}); testRandomPick("1234.[abcd]", new String[]{"1234.a", "1234.b", "1234.c", "1234.d"}); } /** * Test a pattern with wildcards which should produce several different results randomly * @param inPattern pattern for site name * @param inExpected array of expected resolved names */ private void testRandomPick(String inPattern, String[] inExpected) { HashSet results = new HashSet(); for (int i=0; i<30; i++) { results.add(SiteNameUtils.pickServerUrl(inPattern)); } // Check that all expected results were returned assertEquals(inExpected.length, results.size()); for (String expec : inExpected) { assertTrue(results.contains(expec)); } } }