Ignore:
Timestamp:
2023-03-13T21:59:27+01:00 (2 years ago)
Author:
taylor.smock
Message:

See #16567: Convert all assertion calls to JUnit 5 (patch by gaben, modified)

The modifications are as follows:

  • Merge DomainValidatorTest.testIDN and DomainValidatorTest.testIDNJava6OrLater
  • Update some tests to use @ParameterizedTest (DomainValidatorTest)
  • Replace various exception blocks with assertThrows. These typically looked like
        try {
            // Something that should throw an exception here
            fail("An exception should have been thrown");
        } catch (Exception e) {
            // Verify the exception matches expectations here
        }
    
  • Replace assertTrue(val instanceof Clazz) with assertInstanceOf
  • Replace JUnit 4 @Suite with JUnit 5 @Suite

Both the original patch and the modified patch fix various lint issues.

Location:
trunk/test/unit/org/openstreetmap/josm/data/validation/routines
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/test/unit/org/openstreetmap/josm/data/validation/routines/DomainValidatorTest.java

    r17275 r18690  
    1717package org.openstreetmap.josm.data.validation.routines;
    1818
    19 import static org.junit.Assert.assertEquals;
    20 import static org.junit.Assert.assertFalse;
    21 import static org.junit.Assert.assertNotNull;
    22 import static org.junit.Assert.assertNull;
    23 import static org.junit.Assert.assertTrue;
     19import static org.junit.jupiter.api.Assertions.assertEquals;
     20import static org.junit.jupiter.api.Assertions.assertFalse;
     21import static org.junit.jupiter.api.Assertions.assertNotNull;
     22import static org.junit.jupiter.api.Assertions.assertNull;
     23import static org.junit.jupiter.api.Assertions.assertSame;
     24import static org.junit.jupiter.api.Assertions.assertThrows;
     25import static org.junit.jupiter.api.Assertions.assertTrue;
    2426import static org.junit.jupiter.api.Assertions.fail;
    2527
     
    3032import org.junit.jupiter.api.BeforeEach;
    3133import org.junit.jupiter.api.Test;
     34import org.junit.jupiter.params.ParameterizedTest;
     35import org.junit.jupiter.params.provider.EnumSource;
     36import org.junit.jupiter.params.provider.ValueSource;
    3237import org.openstreetmap.josm.data.validation.routines.DomainValidator.ArrayType;
    3338import org.openstreetmap.josm.tools.Logging;
     
    5661    @Test
    5762    void testValidDomains() {
    58         assertTrue("apache.org should validate", validator.isValid("apache.org"));
    59         assertTrue("www.google.com should validate", validator.isValid("www.google.com"));
    60 
    61         assertTrue("test-domain.com should validate", validator.isValid("test-domain.com"));
    62         assertTrue("test---domain.com should validate", validator.isValid("test---domain.com"));
    63         assertTrue("test-d-o-m-ain.com should validate", validator.isValid("test-d-o-m-ain.com"));
    64         assertTrue("two-letter domain label should validate", validator.isValid("as.uk"));
    65 
    66         assertTrue("case-insensitive ApAchE.Org should validate", validator.isValid("ApAchE.Org"));
    67 
    68         assertTrue("single-character domain label should validate", validator.isValid("z.com"));
    69 
    70         assertTrue("i.have.an-example.domain.name should validate", validator.isValid("i.have.an-example.domain.name"));
     63        assertTrue(validator.isValid("apache.org"), "apache.org should validate");
     64        assertTrue(validator.isValid("www.google.com"), "www.google.com should validate");
     65
     66        assertTrue(validator.isValid("test-domain.com"), "test-domain.com should validate");
     67        assertTrue(validator.isValid("test---domain.com"), "test---domain.com should validate");
     68        assertTrue(validator.isValid("test-d-o-m-ain.com"), "test-d-o-m-ain.com should validate");
     69        assertTrue(validator.isValid("as.uk"), "two-letter domain label should validate");
     70
     71        assertTrue(validator.isValid("ApAchE.Org"), "case-insensitive ApAchE.Org should validate");
     72
     73        assertTrue(validator.isValid("z.com"), "single-character domain label should validate");
     74
     75        assertTrue(validator.isValid("i.have.an-example.domain.name"), "i.have.an-example.domain.name should validate");
    7176    }
    7277
     
    7681    @Test
    7782    void testInvalidDomains() {
    78         assertFalse("bare TLD .org shouldn't validate", validator.isValid(".org"));
    79         assertFalse("domain name with spaces shouldn't validate", validator.isValid(" apache.org "));
    80         assertFalse("domain name containing spaces shouldn't validate", validator.isValid("apa che.org"));
    81         assertFalse("domain name starting with dash shouldn't validate", validator.isValid("-testdomain.name"));
    82         assertFalse("domain name ending with dash shouldn't validate", validator.isValid("testdomain-.name"));
    83         assertFalse("domain name starting with multiple dashes shouldn't validate", validator.isValid("---c.com"));
    84         assertFalse("domain name ending with multiple dashes shouldn't validate", validator.isValid("c--.com"));
    85         assertFalse("domain name with invalid TLD shouldn't validate", validator.isValid("apache.rog"));
    86 
    87         assertFalse("URL shouldn't validate", validator.isValid("http://www.apache.org"));
    88         assertFalse("Empty string shouldn't validate as domain name", validator.isValid(" "));
    89         assertFalse("Null shouldn't validate as domain name", validator.isValid(null));
     83        assertFalse(validator.isValid(".org"), "bare TLD .org shouldn't validate");
     84        assertFalse(validator.isValid(" apache.org "), "domain name with spaces shouldn't validate");
     85        assertFalse(validator.isValid("apa che.org"), "domain name containing spaces shouldn't validate");
     86        assertFalse(validator.isValid("-testdomain.name"), "domain name starting with dash shouldn't validate");
     87        assertFalse(validator.isValid("testdomain-.name"), "domain name ending with dash shouldn't validate");
     88        assertFalse(validator.isValid("---c.com"), "domain name starting with multiple dashes shouldn't validate");
     89        assertFalse(validator.isValid("c--.com"), "domain name ending with multiple dashes shouldn't validate");
     90        assertFalse(validator.isValid("apache.rog"), "domain name with invalid TLD shouldn't validate");
     91
     92        assertFalse(validator.isValid("http://www.apache.org"), "URL shouldn't validate");
     93        assertFalse(validator.isValid(" "), "Empty string shouldn't validate as domain name");
     94        assertFalse(validator.isValid(null), "Null shouldn't validate as domain name");
    9095    }
    9196
     
    96101    void testTopLevelDomains() {
    97102        // infrastructure TLDs
    98         assertTrue(".arpa should validate as iTLD", validator.isValidInfrastructureTld(".arpa"));
    99         assertFalse(".com shouldn't validate as iTLD", validator.isValidInfrastructureTld(".com"));
     103        assertTrue(validator.isValidInfrastructureTld(".arpa"), ".arpa should validate as iTLD");
     104        assertFalse(validator.isValidInfrastructureTld(".com"), ".com shouldn't validate as iTLD");
    100105
    101106        // generic TLDs
    102         assertTrue(".name should validate as gTLD", validator.isValidGenericTld(".name"));
    103         assertFalse(".us shouldn't validate as gTLD", validator.isValidGenericTld(".us"));
     107        assertTrue(validator.isValidGenericTld(".name"), ".name should validate as gTLD");
     108        assertFalse(validator.isValidGenericTld(".us"), ".us shouldn't validate as gTLD");
    104109
    105110        // country code TLDs
    106         assertTrue(".uk should validate as ccTLD", validator.isValidCountryCodeTld(".uk"));
    107         assertFalse(".org shouldn't validate as ccTLD", validator.isValidCountryCodeTld(".org"));
     111        assertTrue(validator.isValidCountryCodeTld(".uk"), ".uk should validate as ccTLD");
     112        assertFalse(validator.isValidCountryCodeTld(".org"), ".org shouldn't validate as ccTLD");
    108113
    109114        // case-insensitive
    110         assertTrue(".COM should validate as TLD", validator.isValidTld(".COM"));
    111         assertTrue(".BiZ should validate as TLD", validator.isValidTld(".BiZ"));
     115        assertTrue(validator.isValidTld(".COM"), ".COM should validate as TLD");
     116        assertTrue(validator.isValidTld(".BiZ"), ".BiZ should validate as TLD");
    112117
    113118        // corner cases
    114         assertFalse("invalid TLD shouldn't validate", validator.isValid(".nope")); // TODO this is not guaranteed invalid forever
    115         assertFalse("empty string shouldn't validate as TLD", validator.isValid(""));
    116         assertFalse("null shouldn't validate as TLD", validator.isValid(null));
     119        assertFalse(validator.isValid(".nope"), "invalid TLD shouldn't validate"); // TODO this is not guaranteed invalid forever
     120        assertFalse(validator.isValid(""), "empty string shouldn't validate as TLD");
     121        assertFalse(validator.isValid(null), "null shouldn't validate as TLD");
    117122    }
    118123
     
    125130       DomainValidator allowLocal = DomainValidator.getInstance(true);
    126131
    127        // Default is false, and should use singletons
    128        assertEquals(noLocal, validator);
     132       // Should use singletons
     133       assertSame(noLocal, validator);
    129134
    130135       // Default won't allow local
    131        assertFalse("localhost.localdomain should validate", noLocal.isValid("localhost.localdomain"));
    132        assertFalse("localhost should validate", noLocal.isValid("localhost"));
     136       assertFalse(noLocal.isValid("localhost.localdomain"), "localhost.localdomain should validate");
     137       assertFalse(noLocal.isValid("localhost"), "localhost should validate");
    133138
    134139       // But it may be requested
    135        assertTrue("localhost.localdomain should validate", allowLocal.isValid("localhost.localdomain"));
    136        assertTrue("localhost should validate", allowLocal.isValid("localhost"));
    137        assertTrue("hostname should validate", allowLocal.isValid("hostname"));
    138        assertTrue("machinename should validate", allowLocal.isValid("machinename"));
     140       assertTrue(allowLocal.isValid("localhost.localdomain"), "localhost.localdomain should validate");
     141       assertTrue(allowLocal.isValid("localhost"), "localhost should validate");
     142       assertTrue(allowLocal.isValid("hostname"), "hostname should validate");
     143       assertTrue(allowLocal.isValid("machinename"), "machinename should validate");
    139144
    140145       // Check the localhost one with a few others
    141        assertTrue("apache.org should validate", allowLocal.isValid("apache.org"));
    142        assertFalse("domain name with spaces shouldn't validate", allowLocal.isValid(" apache.org "));
     146       assertTrue(allowLocal.isValid("apache.org"), "apache.org should validate");
     147       assertFalse(allowLocal.isValid(" apache.org "), "domain name with spaces shouldn't validate");
    143148    }
    144149
     
    148153    @Test
    149154    void testIDN() {
    150        assertTrue("b\u00fccher.ch in IDN should validate", validator.isValid("www.xn--bcher-kva.ch"));
    151     }
    152 
    153     /**
    154      * Test IDN with Java >= 6.
    155      */
    156     @Test
    157     void testIDNJava6OrLater() {
    158         String version = System.getProperty("java.version");
    159         if (version.compareTo("1.6") < 0) {
    160             System.out.println("Cannot run Unicode IDN tests");
    161             return; // Cannot run the test
    162         } // xn--d1abbgf6aiiy.xn--p1ai http://президент.рф
    163        assertTrue("b\u00fccher.ch should validate", validator.isValid("www.b\u00fccher.ch"));
    164        assertTrue("xn--d1abbgf6aiiy.xn--p1ai should validate", validator.isValid("xn--d1abbgf6aiiy.xn--p1ai"));
    165        assertTrue("президент.рф should validate", validator.isValid("президент.рф"));
    166        assertFalse("www.\uFFFD.ch FFFD should fail", validator.isValid("www.\uFFFD.ch"));
     155       assertTrue(validator.isValid("www.xn--bcher-kva.ch"), "b\u00fccher.ch in IDN should validate");
     156       assertTrue(validator.isValid("www.b\u00fccher.ch"), "b\u00fccher.ch should validate");
     157       // xn--d1abbgf6aiiy.xn--p1ai http://президент.рф
     158       assertTrue(validator.isValid("xn--d1abbgf6aiiy.xn--p1ai"), "xn--d1abbgf6aiiy.xn--p1ai should validate");
     159       assertTrue(validator.isValid("президент.рф"), "президент.рф should validate");
     160       assertFalse(validator.isValid("www.\uFFFD.ch"), "www.\uFFFD.ch FFFD should fail");
    167161    }
    168162
     
    172166    @Test
    173167    void testRFC2396domainlabel() { // use fixed valid TLD
    174         assertTrue("a.ch should validate", validator.isValid("a.ch"));
    175         assertTrue("9.ch should validate", validator.isValid("9.ch"));
    176         assertTrue("az.ch should validate", validator.isValid("az.ch"));
    177         assertTrue("09.ch should validate", validator.isValid("09.ch"));
    178         assertTrue("9-1.ch should validate", validator.isValid("9-1.ch"));
    179         assertFalse("91-.ch should not validate", validator.isValid("91-.ch"));
    180         assertFalse("-.ch should not validate", validator.isValid("-.ch"));
     168        assertTrue(validator.isValid("a.ch"), "a.ch should validate");
     169        assertTrue(validator.isValid("9.ch"), "9.ch should validate");
     170        assertTrue(validator.isValid("az.ch"), "az.ch should validate");
     171        assertTrue(validator.isValid("09.ch"), "09.ch should validate");
     172        assertTrue(validator.isValid("9-1.ch"), "9-1.ch should validate");
     173        assertFalse(validator.isValid("91-.ch"), "91-.ch should not validate");
     174        assertFalse(validator.isValid("-.ch"), "-.ch should not validate");
    181175    }
    182176
     
    187181    void testRFC2396toplabel() {
    188182        // These tests use non-existent TLDs so currently need to use a package protected method
    189         assertTrue("a.c (alpha) should validate", validator.isValidDomainSyntax("a.c"));
    190         assertTrue("a.cc (alpha alpha) should validate", validator.isValidDomainSyntax("a.cc"));
    191         assertTrue("a.c9 (alpha alphanum) should validate", validator.isValidDomainSyntax("a.c9"));
    192         assertTrue("a.c-9 (alpha - alphanum) should validate", validator.isValidDomainSyntax("a.c-9"));
    193         assertTrue("a.c-z (alpha - alpha) should validate", validator.isValidDomainSyntax("a.c-z"));
    194 
    195         assertFalse("a.9c (alphanum alpha) should fail", validator.isValidDomainSyntax("a.9c"));
    196         assertFalse("a.c- (alpha -) should fail", validator.isValidDomainSyntax("a.c-"));
    197         assertFalse("a.- (-) should fail", validator.isValidDomainSyntax("a.-"));
    198         assertFalse("a.-9 (- alphanum) should fail", validator.isValidDomainSyntax("a.-9"));
     183        assertTrue(validator.isValidDomainSyntax("a.c"), "a.c (alpha) should validate");
     184        assertTrue(validator.isValidDomainSyntax("a.cc"), "a.cc (alpha alpha) should validate");
     185        assertTrue(validator.isValidDomainSyntax("a.c9"), "a.c9 (alpha alphanum) should validate");
     186        assertTrue(validator.isValidDomainSyntax("a.c-9"), "a.c-9 (alpha - alphanum) should validate");
     187        assertTrue(validator.isValidDomainSyntax("a.c-z"), "a.c-z (alpha - alpha) should validate");
     188
     189        assertFalse(validator.isValidDomainSyntax("a.9c"), "a.9c (alphanum alpha) should fail");
     190        assertFalse(validator.isValidDomainSyntax("a.c-"), "a.c- (alpha -) should fail");
     191        assertFalse(validator.isValidDomainSyntax("a.-"), "a.- (-) should fail");
     192        assertFalse(validator.isValidDomainSyntax("a.-9"), "a.-9 (- alphanum) should fail");
    199193    }
    200194
     
    204198    @Test
    205199    void testDomainNoDots() {
    206         assertTrue("a (alpha) should validate", validator.isValidDomainSyntax("a"));
    207         assertTrue("9 (alphanum) should validate", validator.isValidDomainSyntax("9"));
    208         assertTrue("c-z (alpha - alpha) should validate", validator.isValidDomainSyntax("c-z"));
    209 
    210         assertFalse("c- (alpha -) should fail", validator.isValidDomainSyntax("c-"));
    211         assertFalse("-c (- alpha) should fail", validator.isValidDomainSyntax("-c"));
    212         assertFalse("- (-) should fail", validator.isValidDomainSyntax("-"));
     200        assertTrue(validator.isValidDomainSyntax("a"), "a (alpha) should validate");
     201        assertTrue(validator.isValidDomainSyntax("9"), "9 (alphanum) should validate");
     202        assertTrue(validator.isValidDomainSyntax("c-z"), "c-z (alpha - alpha) should validate");
     203
     204        assertFalse(validator.isValidDomainSyntax("c-"), "c- (alpha -) should fail");
     205        assertFalse(validator.isValidDomainSyntax("-c"), "-c (- alpha) should fail");
     206        assertFalse(validator.isValidDomainSyntax("-"), "- (-) should fail");
    213207    }
    214208
     
    218212    @Test
    219213    void testValidator297() {
    220         assertTrue("xn--d1abbgf6aiiy.xn--p1ai should validate", validator.isValid("xn--d1abbgf6aiiy.xn--p1ai")); // This uses a valid TLD
     214        assertTrue(validator.isValid("xn--d1abbgf6aiiy.xn--p1ai"), "xn--d1abbgf6aiiy.xn--p1ai should validate"); // This uses a valid TLD
    221215     }
    222216
     
    230224        assertEquals(63, longString.length()); // 26 * 2 + 11
    231225
    232         assertTrue("63 chars label should validate", validator.isValidDomainSyntax(longString+".com"));
    233         assertFalse("64 chars label should fail", validator.isValidDomainSyntax(longString+"x.com"));
    234 
    235         assertTrue("63 chars TLD should validate", validator.isValidDomainSyntax("test."+longString));
    236         assertFalse("64 chars TLD should fail", validator.isValidDomainSyntax("test.x"+longString));
     226        assertTrue(validator.isValidDomainSyntax(longString+".com"), "63 chars label should validate");
     227        assertFalse(validator.isValidDomainSyntax(longString+"x.com"), "64 chars label should fail");
     228
     229        assertTrue(validator.isValidDomainSyntax("test."+longString), "63 chars TLD should validate");
     230        assertFalse(validator.isValidDomainSyntax("test.x"+longString), "64 chars TLD should fail");
    237231
    238232        final String longDomain =
     
    242236                + "." + longString.substring(0, 61);
    243237        assertEquals(253, longDomain.length());
    244         assertTrue("253 chars domain should validate", validator.isValidDomainSyntax(longDomain));
    245         assertFalse("254 chars domain should fail", validator.isValidDomainSyntax(longDomain+"x"));
     238        assertTrue(validator.isValidDomainSyntax(longDomain), "253 chars domain should validate");
     239        assertFalse(validator.isValidDomainSyntax(longDomain+"x"), "254 chars domain should fail");
    246240    }
    247241
     
    288282     * @throws Exception if an error occurs
    289283     */
    290     @Test
    291     void test_INFRASTRUCTURE_TLDS_sortedAndLowerCase() throws Exception {
    292         final boolean sorted = isSortedLowerCase("INFRASTRUCTURE_TLDS");
    293         assertTrue(sorted);
    294     }
    295 
    296     /**
    297      * Check array is sorted and is lower-case
    298      * @throws Exception if an error occurs
    299      */
    300     @Test
    301     void test_COUNTRY_CODE_TLDS_sortedAndLowerCase() throws Exception {
    302         final boolean sorted = isSortedLowerCase("COUNTRY_CODE_TLDS");
    303         assertTrue(sorted);
    304     }
    305 
    306     /**
    307      * Check array is sorted and is lower-case
    308      * @throws Exception if an error occurs
    309      */
    310     @Test
    311     void test_GENERIC_TLDS_sortedAndLowerCase() throws Exception {
    312         final boolean sorted = isSortedLowerCase("GENERIC_TLDS");
    313         assertTrue(sorted);
    314     }
    315 
    316     /**
    317      * Check array is sorted and is lower-case
    318      * @throws Exception if an error occurs
    319      */
    320     @Test
    321     void test_LOCAL_TLDS_sortedAndLowerCase() throws Exception {
    322         final boolean sorted = isSortedLowerCase("LOCAL_TLDS");
     284    @ParameterizedTest
     285    @ValueSource(strings = {"COUNTRY_CODE_TLDS", "GENERIC_TLDS", "INFRASTRUCTURE_TLDS", "LOCAL_TLDS"})
     286    void testArraySortedAndLowerCase(String arrayName) throws Exception {
     287        final boolean sorted = isSortedLowerCase(arrayName);
    323288        assertTrue(sorted);
    324289    }
     
    335300     * Test update base arrays
    336301     */
    337     @Test
    338     void testUpdateBaseArrays() {
    339         try {
    340             DomainValidator.updateTLDOverride(ArrayType.COUNTRY_CODE_RO, new String[]{"com"});
    341             fail("Expected IllegalArgumentException");
    342         } catch (IllegalArgumentException iae) {
    343             // expected
    344             Logging.debug(iae.getMessage());
    345         }
    346         try {
    347             DomainValidator.updateTLDOverride(ArrayType.GENERIC_RO, new String[]{"com"});
    348             fail("Expected IllegalArgumentException");
    349         } catch (IllegalArgumentException iae) {
    350             // expected
    351             Logging.debug(iae.getMessage());
    352         }
    353         try {
    354             DomainValidator.updateTLDOverride(ArrayType.INFRASTRUCTURE_RO, new String[]{"com"});
    355             fail("Expected IllegalArgumentException");
    356         } catch (IllegalArgumentException iae) {
    357             // expected
    358             Logging.debug(iae.getMessage());
    359         }
    360         try {
    361             DomainValidator.updateTLDOverride(ArrayType.LOCAL_RO, new String[]{"com"});
    362             fail("Expected IllegalArgumentException");
    363         } catch (IllegalArgumentException iae) {
    364             // expected
    365             Logging.debug(iae.getMessage());
    366         }
     302    @ParameterizedTest
     303    @EnumSource(value = ArrayType.class, mode = EnumSource.Mode.MATCH_ALL, names = "^.*RO$")
     304    void testUpdateBaseArrays(ArrayType type) {
     305        Logging.debug(assertThrows(IllegalArgumentException.class, () -> DomainValidator.updateTLDOverride(type, "com")));
    367306    }
    368307
     
    370309     * Test get array.
    371310     */
    372     @Test
    373     void testGetArray() {
    374         assertNotNull(DomainValidator.getTLDEntries(ArrayType.COUNTRY_CODE_MINUS));
    375         assertNotNull(DomainValidator.getTLDEntries(ArrayType.COUNTRY_CODE_PLUS));
    376         assertNotNull(DomainValidator.getTLDEntries(ArrayType.GENERIC_MINUS));
    377         assertNotNull(DomainValidator.getTLDEntries(ArrayType.GENERIC_PLUS));
    378         assertNotNull(DomainValidator.getTLDEntries(ArrayType.COUNTRY_CODE_RO));
    379         assertNotNull(DomainValidator.getTLDEntries(ArrayType.GENERIC_RO));
    380         assertNotNull(DomainValidator.getTLDEntries(ArrayType.INFRASTRUCTURE_RO));
    381         assertNotNull(DomainValidator.getTLDEntries(ArrayType.LOCAL_RO));
     311    @ParameterizedTest
     312    @EnumSource(ArrayType.class)
     313    void testGetArray(ArrayType type) {
     314        assertNotNull(DomainValidator.getTLDEntries(type));
    382315    }
    383316
     
    388321    void testUpdateCountryCode() {
    389322        assertFalse(validator.isValidCountryCodeTld("com")); // cannot be valid
    390         DomainValidator.updateTLDOverride(ArrayType.COUNTRY_CODE_PLUS, new String[]{"com"});
     323        DomainValidator.updateTLDOverride(ArrayType.COUNTRY_CODE_PLUS, "com");
    391324        assertTrue(validator.isValidCountryCodeTld("com")); // it is now!
    392         DomainValidator.updateTLDOverride(ArrayType.COUNTRY_CODE_MINUS, new String[]{"com"});
     325        DomainValidator.updateTLDOverride(ArrayType.COUNTRY_CODE_MINUS, "com");
    393326        assertFalse(validator.isValidCountryCodeTld("com")); // show that minus overrides the rest
    394327
    395328        assertTrue(validator.isValidCountryCodeTld("ch"));
    396         DomainValidator.updateTLDOverride(ArrayType.COUNTRY_CODE_MINUS, new String[]{"ch"});
     329        DomainValidator.updateTLDOverride(ArrayType.COUNTRY_CODE_MINUS, "ch");
    397330        assertFalse(validator.isValidCountryCodeTld("ch"));
    398         DomainValidator.updateTLDOverride(ArrayType.COUNTRY_CODE_MINUS, new String[]{"xx"});
     331        DomainValidator.updateTLDOverride(ArrayType.COUNTRY_CODE_MINUS, "xx");
    399332        assertTrue(validator.isValidCountryCodeTld("ch"));
    400333    }
     
    406339    void testUpdateGeneric() {
    407340        assertFalse(validator.isValidGenericTld("ch")); // cannot be valid
    408         DomainValidator.updateTLDOverride(ArrayType.GENERIC_PLUS, new String[]{"ch"});
     341        DomainValidator.updateTLDOverride(ArrayType.GENERIC_PLUS, "ch");
    409342        assertTrue(validator.isValidGenericTld("ch")); // it is now!
    410         DomainValidator.updateTLDOverride(ArrayType.GENERIC_MINUS, new String[]{"ch"});
     343        DomainValidator.updateTLDOverride(ArrayType.GENERIC_MINUS, "ch");
    411344        assertFalse(validator.isValidGenericTld("ch")); // show that minus overrides the rest
    412345
    413346        assertTrue(validator.isValidGenericTld("com"));
    414         DomainValidator.updateTLDOverride(ArrayType.GENERIC_MINUS, new String[]{"com"});
     347        DomainValidator.updateTLDOverride(ArrayType.GENERIC_MINUS, "com");
    415348        assertFalse(validator.isValidGenericTld("com"));
    416         DomainValidator.updateTLDOverride(ArrayType.GENERIC_MINUS, new String[]{"xx"}); // change the minus list
     349        DomainValidator.updateTLDOverride(ArrayType.GENERIC_MINUS, "xx"); // change the minus list
    417350        assertTrue(validator.isValidGenericTld("com"));
    418351    }
     
    423356    @Test
    424357    void testCannotUpdate() {
    425         DomainValidator.updateTLDOverride(ArrayType.GENERIC_PLUS, new String[]{"ch"}); // OK
     358        DomainValidator.updateTLDOverride(ArrayType.GENERIC_PLUS, "ch"); // OK
    426359        DomainValidator dv = DomainValidator.getInstance();
    427360        assertNotNull(dv);
    428361        try {
    429             DomainValidator.updateTLDOverride(ArrayType.GENERIC_PLUS, new String[]{"ch"});
     362            DomainValidator.updateTLDOverride(ArrayType.GENERIC_PLUS, "ch");
    430363            fail("Expected IllegalStateException");
    431364        } catch (IllegalStateException ise) {
  • trunk/test/unit/org/openstreetmap/josm/data/validation/routines/DomainValidatorTestIT.java

    r17374 r18690  
    3535import java.net.URL;
    3636import java.nio.charset.StandardCharsets;
     37import java.nio.file.Files;
    3738import java.text.SimpleDateFormat;
    3839import java.util.Date;
    3940import java.util.HashMap;
    4041import java.util.HashSet;
    41 import java.util.Iterator;
    4242import java.util.Locale;
    4343import java.util.Map;
     
    102102        download(htmlFile, "http://www.iana.org/domains/root/db", timestamp);
    103103
    104         try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(txtFile), StandardCharsets.UTF_8))) {
     104        try (BufferedReader br = new BufferedReader(new InputStreamReader(Files.newInputStream(txtFile.toPath()), StandardCharsets.UTF_8))) {
    105105            String line;
    106106            final String header;
     
    186186            Logging.warn("        // Taken from " + header);
    187187        }
    188         Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
    189         while (it.hasNext()) {
    190             Map.Entry<String, String> me = it.next();
     188        for (Map.Entry<String, String> me : map.entrySet()) {
    191189            Logging.warn("        \"" + me.getKey() + "\", // " + me.getValue());
    192190        }
     
    202200        final Pattern comment = Pattern.compile("\\s+<td>([^<]+)</td>");
    203201
    204         try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(f), StandardCharsets.UTF_8))) {
     202        try (BufferedReader br = new BufferedReader(new InputStreamReader(Files.newInputStream(f.toPath()), StandardCharsets.UTF_8))) {
    205203            String line;
    206204            while ((line = br.readLine()) != null) {
     
    301299            File rootCheck = new File(System.getProperty("java.io.tmpdir"), "tld_" + domain + ".html");
    302300            download(rootCheck, tldurl, 0L);
    303             in = new BufferedReader(new InputStreamReader(new FileInputStream(rootCheck), StandardCharsets.UTF_8));
     301            in = new BufferedReader(new InputStreamReader(Files.newInputStream(rootCheck.toPath()), StandardCharsets.UTF_8));
    304302            String inputLine;
    305303            while ((inputLine = in.readLine()) != null) {
  • trunk/test/unit/org/openstreetmap/josm/data/validation/routines/EmailValidatorTest.java

    r17374 r18690  
    1717package org.openstreetmap.josm.data.validation.routines;
    1818
    19 import static org.junit.Assert.assertEquals;
    20 import static org.junit.Assert.assertFalse;
    21 import static org.junit.Assert.assertTrue;
     19import static org.junit.jupiter.api.Assertions.assertEquals;
     20import static org.junit.jupiter.api.Assertions.assertFalse;
     21import static org.junit.jupiter.api.Assertions.assertTrue;
    2222
    2323import org.junit.jupiter.api.BeforeEach;
     
    172172            return; // Cannot run the test
    173173        }
    174         assertTrue("xn--d1abbgf6aiiy.xn--p1ai should validate", validator.isValid("someone@xn--d1abbgf6aiiy.xn--p1ai"));
    175         assertTrue("президент.рф should validate", validator.isValid("someone@президент.рф"));
    176         assertTrue("www.b\u00fccher.ch should validate", validator.isValid("someone@www.b\u00fccher.ch"));
    177         assertFalse("www.\uFFFD.ch FFFD should fail", validator.isValid("someone@www.\uFFFD.ch"));
    178         assertTrue("www.b\u00fccher.ch should validate", validator.isValid("someone@www.b\u00fccher.ch"));
    179         assertFalse("www.\uFFFD.ch FFFD should fail", validator.isValid("someone@www.\uFFFD.ch"));
     174        assertTrue(validator.isValid("someone@xn--d1abbgf6aiiy.xn--p1ai"), "xn--d1abbgf6aiiy.xn--p1ai should validate");
     175        assertTrue(validator.isValid("someone@президент.рф"), "президент.рф should validate");
     176        assertTrue(validator.isValid("someone@www.b\u00fccher.ch"), "www.b\u00fccher.ch should validate");
     177        assertFalse(validator.isValid("someone@www.\uFFFD.ch"), "www.\uFFFD.ch FFFD should fail");
     178        assertTrue(validator.isValid("someone@www.b\u00fccher.ch"), "www.b\u00fccher.ch should validate");
     179        assertFalse(validator.isValid("someone@www.\uFFFD.ch"), "www.\uFFFD.ch FFFD should fail");
    180180    }
    181181
     
    217217    void testEmailWithControlChars() {
    218218        for (char c = 0; c < 32; c++) {
    219             assertFalse("Test control char " + ((int) c), validator.isValid("foo" + c + "bar@domain.com"));
     219            assertFalse(validator.isValid("foo" + c + "bar@domain.com"), "Test control char " + ((int) c));
    220220        }
    221         assertFalse("Test control char 127", validator.isValid("foo" + ((char) 127) + "bar@domain.com"));
     221        assertFalse(validator.isValid("foo" + ((char) 127) + "bar@domain.com"), "Test control char 127");
    222222    }
    223223
     
    234234
    235235       // Depends on the validator
    236        assertTrue(
    237              "@localhost.localdomain should be accepted but wasn't",
    238              allowLocal.isValid("joe@localhost.localdomain")
    239        );
    240        assertTrue(
    241              "@localhost should be accepted but wasn't",
    242              allowLocal.isValid("joe@localhost")
    243        );
    244 
    245        assertFalse(
    246              "@localhost.localdomain should be accepted but wasn't",
    247              noLocal.isValid("joe@localhost.localdomain")
    248        );
    249        assertFalse(
    250              "@localhost should be accepted but wasn't",
    251              noLocal.isValid("joe@localhost")
    252        );
     236       assertTrue(allowLocal.isValid("joe@localhost.localdomain"), "@localhost.localdomain should be accepted but wasn't");
     237       assertTrue(allowLocal.isValid("joe@localhost"), "@localhost should be accepted but wasn't");
     238
     239       assertFalse(noLocal.isValid("joe@localhost.localdomain"), "@localhost.localdomain should be accepted but wasn't");
     240       assertFalse(noLocal.isValid("joe@localhost"), "@localhost should be accepted but wasn't");
    253241    }
    254242
     
    259247    @Test
    260248    void testEmailWithSlashes() {
    261        assertTrue(
    262              "/ and ! valid in username",
    263              validator.isValid("joe!/blow@apache.org")
    264        );
    265        assertFalse(
    266              "/ not valid in domain",
    267              validator.isValid("joe@ap/ache.org")
    268        );
    269        assertFalse(
    270              "! not valid in domain",
    271              validator.isValid("joe@apac!he.org")
    272        );
     249       assertTrue(validator.isValid("joe!/blow@apache.org"), "/ and ! valid in username");
     250       assertFalse(validator.isValid("joe@ap/ache.org"), "/ not valid in domain");
     251       assertFalse(validator.isValid("joe@apac!he.org"), "! not valid in domain");
    273252    }
    274253
     
    496475            String item = resultPair.item;
    497476            if (resultPair.valid) {
    498                 assertTrue("Should be OK: " + item, validator.isValid(item));
     477                assertTrue(validator.isValid(item), "Should be OK: " + item);
    499478            } else {
    500                 assertFalse("Should fail: " + item, validator.isValid(item));
     479                assertFalse(validator.isValid(item), "Should fail: " + item);
    501480            }
    502481        }
  • trunk/test/unit/org/openstreetmap/josm/data/validation/routines/InetAddressValidatorTest.java

    r17275 r18690  
    1717package org.openstreetmap.josm.data.validation.routines;
    1818
    19 import static org.junit.Assert.assertFalse;
    20 import static org.junit.Assert.assertNull;
    21 import static org.junit.Assert.assertTrue;
     19import static org.junit.jupiter.api.Assertions.assertFalse;
     20import static org.junit.jupiter.api.Assertions.assertNull;
     21import static org.junit.jupiter.api.Assertions.assertTrue;
    2222
    2323import org.junit.jupiter.api.BeforeEach;
     
    4747    void testInetAddressesFromTheWild() {
    4848        // CHECKSTYLE.OFF: SingleSpaceSeparator
    49         assertTrue("www.apache.org IP should be valid",   validator.isValid("140.211.11.130"));
    50         assertTrue("www.l.google.com IP should be valid", validator.isValid("72.14.253.103"));
    51         assertTrue("fsf.org IP should be valid",          validator.isValid("199.232.41.5"));
    52         assertTrue("appscs.ign.com IP should be valid",   validator.isValid("216.35.123.87"));
     49        assertTrue(validator.isValid("140.211.11.130"), "www.apache.org IP should be valid");
     50        assertTrue(validator.isValid("72.14.253.103"), "www.l.google.com IP should be valid");
     51        assertTrue(validator.isValid("199.232.41.5"), "fsf.org IP should be valid");
     52        assertTrue(validator.isValid("216.35.123.87"), "appscs.ign.com IP should be valid");
    5353        // CHECKSTYLE.ON: SingleSpaceSeparator
    5454    }
     
    5959    @Test
    6060    void testVALIDATOR_335() {
    61         assertTrue("2001:0438:FFFE:0000:0000:0000:0000:0A35 should be valid",
    62                 validator.isValid("2001:0438:FFFE:0000:0000:0000:0000:0A35"));
     61        assertTrue(validator.isValid("2001:0438:FFFE:0000:0000:0000:0000:0A35"), "2001:0438:FFFE:0000:0000:0000:0000:0A35 should be valid");
    6362    }
    6463
     
    6968    void testInetAddressesByClass() {
    7069        // CHECKSTYLE.OFF: SingleSpaceSeparator
    71         assertTrue("class A IP should be valid",            validator.isValid("24.25.231.12"));
    72         assertFalse("illegal class A IP should be invalid", validator.isValid("2.41.32.324"));
    73 
    74         assertTrue("class B IP should be valid",            validator.isValid("135.14.44.12"));
    75         assertFalse("illegal class B IP should be invalid", validator.isValid("154.123.441.123"));
    76 
    77         assertTrue("class C IP should be valid",            validator.isValid("213.25.224.32"));
    78         assertFalse("illegal class C IP should be invalid", validator.isValid("201.543.23.11"));
    79 
    80         assertTrue("class D IP should be valid",            validator.isValid("229.35.159.6"));
    81         assertFalse("illegal class D IP should be invalid", validator.isValid("231.54.11.987"));
    82 
    83         assertTrue("class E IP should be valid",            validator.isValid("248.85.24.92"));
    84         assertFalse("illegal class E IP should be invalid", validator.isValid("250.21.323.48"));
     70        assertTrue(validator.isValid("24.25.231.12"), "class A IP should be valid");
     71        assertFalse(validator.isValid("2.41.32.324"), "illegal class A IP should be invalid");
     72
     73        assertTrue(validator.isValid("135.14.44.12"), "class B IP should be valid");
     74        assertFalse(validator.isValid("154.123.441.123"), "illegal class B IP should be invalid");
     75
     76        assertTrue(validator.isValid("213.25.224.32"), "class C IP should be valid");
     77        assertFalse(validator.isValid("201.543.23.11"), "illegal class C IP should be invalid");
     78
     79        assertTrue(validator.isValid("229.35.159.6"), "class D IP should be valid");
     80        assertFalse(validator.isValid("231.54.11.987"), "illegal class D IP should be invalid");
     81
     82        assertTrue(validator.isValid("248.85.24.92"), "class E IP should be valid");
     83        assertFalse(validator.isValid("250.21.323.48"), "illegal class E IP should be invalid");
    8584        // CHECKSTYLE.ON: SingleSpaceSeparator
    8685    }
     
    9190    @Test
    9291    void testReservedInetAddresses() {
    93         assertTrue("localhost IP should be valid", validator.isValid("127.0.0.1"));
    94         assertTrue("broadcast IP should be valid", validator.isValid("255.255.255.255"));
     92        assertTrue(validator.isValid("127.0.0.1"), "localhost IP should be valid");
     93        assertTrue(validator.isValid("255.255.255.255"), "broadcast IP should be valid");
    9594    }
    9695
     
    101100    void testBrokenInetAddresses() {
    102101        // CHECKSTYLE.OFF: SingleSpaceSeparator
    103         assertFalse("IP with characters should be invalid",     validator.isValid("124.14.32.abc"));
    104         assertFalse("IP with leading zeroes should be invalid", validator.isValid("124.14.32.01"));
    105         assertFalse("IP with three groups should be invalid",   validator.isValid("23.64.12"));
    106         assertFalse("IP with five groups should be invalid",    validator.isValid("26.34.23.77.234"));
     102        assertFalse(validator.isValid("124.14.32.abc"), "IP with characters should be invalid");
     103        assertFalse(validator.isValid("124.14.32.01"), "IP with leading zeroes should be invalid");
     104        assertFalse(validator.isValid("23.64.12"), "IP with three groups should be invalid");
     105        assertFalse(validator.isValid("26.34.23.77.234"), "IP with five groups should be invalid");
    107106        // CHECKSTYLE.ON: SingleSpaceSeparator
    108107    }
     
    121120        // The original Perl script contained a lot of duplicate tests.
    122121        // I removed the duplicates I noticed, but there may be more.
    123         assertFalse("IPV6 empty string should be invalid", validator.isValidInet6Address("")); // empty string
    124         assertTrue("IPV6 ::1 should be valid", validator.isValidInet6Address("::1")); // loopback, compressed, non-routable
    125         assertTrue("IPV6 :: should be valid", validator.isValidInet6Address("::")); // unspecified, compressed, non-routable
    126         assertTrue("IPV6 0:0:0:0:0:0:0:1 should be valid", validator.isValidInet6Address("0:0:0:0:0:0:0:1")); // loopback, full
    127         assertTrue("IPV6 0:0:0:0:0:0:0:0 should be valid", validator.isValidInet6Address("0:0:0:0:0:0:0:0")); // unspecified, full
    128         assertTrue("IPV6 2001:DB8:0:0:8:800:200C:417A should be valid", validator.isValidInet6Address("2001:DB8:0:0:8:800:200C:417A")); // unicast, full
    129         assertTrue("IPV6 FF01:0:0:0:0:0:0:101 should be valid", validator.isValidInet6Address("FF01:0:0:0:0:0:0:101")); // multicast, full
    130         assertTrue("IPV6 2001:DB8::8:800:200C:417A should be valid", validator.isValidInet6Address("2001:DB8::8:800:200C:417A")); // unicast, compressed
    131         assertTrue("IPV6 FF01::101 should be valid", validator.isValidInet6Address("FF01::101")); // multicast, compressed
    132         assertFalse("IPV6 2001:DB8:0:0:8:800:200C:417A:221 should be invalid", validator.isValidInet6Address("2001:DB8:0:0:8:800:200C:417A:221")); // unicast, full
    133         assertFalse("IPV6 FF01::101::2 should be invalid", validator.isValidInet6Address("FF01::101::2")); // multicast, compressed
    134         assertTrue("IPV6 fe80::217:f2ff:fe07:ed62 should be valid", validator.isValidInet6Address("fe80::217:f2ff:fe07:ed62"));
    135         assertTrue("IPV6 2001:0000:1234:0000:0000:C1C0:ABCD:0876 should be valid", validator.isValidInet6Address("2001:0000:1234:0000:0000:C1C0:ABCD:0876"));
    136         assertTrue("IPV6 3ffe:0b00:0000:0000:0001:0000:0000:000a should be valid", validator.isValidInet6Address("3ffe:0b00:0000:0000:0001:0000:0000:000a"));
    137         assertTrue("IPV6 FF02:0000:0000:0000:0000:0000:0000:0001 should be valid", validator.isValidInet6Address("FF02:0000:0000:0000:0000:0000:0000:0001"));
    138         assertTrue("IPV6 0000:0000:0000:0000:0000:0000:0000:0001 should be valid", validator.isValidInet6Address("0000:0000:0000:0000:0000:0000:0000:0001"));
    139         assertTrue("IPV6 0000:0000:0000:0000:0000:0000:0000:0000 should be valid", validator.isValidInet6Address("0000:0000:0000:0000:0000:0000:0000:0000"));
    140         assertFalse("IPV6 02001:0000:1234:0000:0000:C1C0:ABCD:0876 should be invalid", validator.isValidInet6Address("02001:0000:1234:0000:0000:C1C0:ABCD:0876")); // extra 0 not allowed!
    141         assertFalse("IPV6 2001:0000:1234:0000:00001:C1C0:ABCD:0876 should be invalid", validator.isValidInet6Address("2001:0000:1234:0000:00001:C1C0:ABCD:0876")); // extra 0 not allowed!
    142         assertFalse("IPV6 2001:0000:1234:0000:0000:C1C0:ABCD:0876 0 should be invalid", validator.isValidInet6Address("2001:0000:1234:0000:0000:C1C0:ABCD:0876 0")); // junk after valid address
    143         assertFalse("IPV6 2001:0000:1234: 0000:0000:C1C0:ABCD:0876 should be invalid", validator.isValidInet6Address("2001:0000:1234: 0000:0000:C1C0:ABCD:0876")); // internal space
    144         assertFalse("IPV6 3ffe:0b00:0000:0001:0000:0000:000a should be invalid", validator.isValidInet6Address("3ffe:0b00:0000:0001:0000:0000:000a")); // seven segments
    145         assertFalse("IPV6 FF02:0000:0000:0000:0000:0000:0000:0000:0001 should be invalid", validator.isValidInet6Address("FF02:0000:0000:0000:0000:0000:0000:0000:0001")); // nine segments
    146         assertFalse("IPV6 3ffe:b00::1::a should be invalid", validator.isValidInet6Address("3ffe:b00::1::a")); // double "::"
    147         assertFalse("IPV6 ::1111:2222:3333:4444:5555:6666:: should be invalid", validator.isValidInet6Address("::1111:2222:3333:4444:5555:6666::")); // double "::"
    148         assertTrue("IPV6 2::10 should be valid", validator.isValidInet6Address("2::10"));
    149         assertTrue("IPV6 ff02::1 should be valid", validator.isValidInet6Address("ff02::1"));
    150         assertTrue("IPV6 fe80:: should be valid", validator.isValidInet6Address("fe80::"));
    151         assertTrue("IPV6 2002:: should be valid", validator.isValidInet6Address("2002::"));
    152         assertTrue("IPV6 2001:db8:: should be valid", validator.isValidInet6Address("2001:db8::"));
    153         assertTrue("IPV6 2001:0db8:1234:: should be valid", validator.isValidInet6Address("2001:0db8:1234::"));
    154         assertTrue("IPV6 ::ffff:0:0 should be valid", validator.isValidInet6Address("::ffff:0:0"));
    155         assertTrue("IPV6 1:2:3:4:5:6:7:8 should be valid", validator.isValidInet6Address("1:2:3:4:5:6:7:8"));
    156         assertTrue("IPV6 1:2:3:4:5:6::8 should be valid", validator.isValidInet6Address("1:2:3:4:5:6::8"));
    157         assertTrue("IPV6 1:2:3:4:5::8 should be valid", validator.isValidInet6Address("1:2:3:4:5::8"));
    158         assertTrue("IPV6 1:2:3:4::8 should be valid", validator.isValidInet6Address("1:2:3:4::8"));
    159         assertTrue("IPV6 1:2:3::8 should be valid", validator.isValidInet6Address("1:2:3::8"));
    160         assertTrue("IPV6 1:2::8 should be valid", validator.isValidInet6Address("1:2::8"));
    161         assertTrue("IPV6 1::8 should be valid", validator.isValidInet6Address("1::8"));
    162         assertTrue("IPV6 1::2:3:4:5:6:7 should be valid", validator.isValidInet6Address("1::2:3:4:5:6:7"));
    163         assertTrue("IPV6 1::2:3:4:5:6 should be valid", validator.isValidInet6Address("1::2:3:4:5:6"));
    164         assertTrue("IPV6 1::2:3:4:5 should be valid", validator.isValidInet6Address("1::2:3:4:5"));
    165         assertTrue("IPV6 1::2:3:4 should be valid", validator.isValidInet6Address("1::2:3:4"));
    166         assertTrue("IPV6 1::2:3 should be valid", validator.isValidInet6Address("1::2:3"));
    167         assertTrue("IPV6 ::2:3:4:5:6:7:8 should be valid", validator.isValidInet6Address("::2:3:4:5:6:7:8"));
    168         assertTrue("IPV6 ::2:3:4:5:6:7 should be valid", validator.isValidInet6Address("::2:3:4:5:6:7"));
    169         assertTrue("IPV6 ::2:3:4:5:6 should be valid", validator.isValidInet6Address("::2:3:4:5:6"));
    170         assertTrue("IPV6 ::2:3:4:5 should be valid", validator.isValidInet6Address("::2:3:4:5"));
    171         assertTrue("IPV6 ::2:3:4 should be valid", validator.isValidInet6Address("::2:3:4"));
    172         assertTrue("IPV6 ::2:3 should be valid", validator.isValidInet6Address("::2:3"));
    173         assertTrue("IPV6 ::8 should be valid", validator.isValidInet6Address("::8"));
    174         assertTrue("IPV6 1:2:3:4:5:6:: should be valid", validator.isValidInet6Address("1:2:3:4:5:6::"));
    175         assertTrue("IPV6 1:2:3:4:5:: should be valid", validator.isValidInet6Address("1:2:3:4:5::"));
    176         assertTrue("IPV6 1:2:3:4:: should be valid", validator.isValidInet6Address("1:2:3:4::"));
    177         assertTrue("IPV6 1:2:3:: should be valid", validator.isValidInet6Address("1:2:3::"));
    178         assertTrue("IPV6 1:2:: should be valid", validator.isValidInet6Address("1:2::"));
    179         assertTrue("IPV6 1:: should be valid", validator.isValidInet6Address("1::"));
    180         assertTrue("IPV6 1:2:3:4:5::7:8 should be valid", validator.isValidInet6Address("1:2:3:4:5::7:8"));
    181         assertFalse("IPV6 1:2:3::4:5::7:8 should be invalid", validator.isValidInet6Address("1:2:3::4:5::7:8")); // Double "::"
    182         assertFalse("IPV6 12345::6:7:8 should be invalid", validator.isValidInet6Address("12345::6:7:8"));
    183         assertTrue("IPV6 1:2:3:4::7:8 should be valid", validator.isValidInet6Address("1:2:3:4::7:8"));
    184         assertTrue("IPV6 1:2:3::7:8 should be valid", validator.isValidInet6Address("1:2:3::7:8"));
    185         assertTrue("IPV6 1:2::7:8 should be valid", validator.isValidInet6Address("1:2::7:8"));
    186         assertTrue("IPV6 1::7:8 should be valid", validator.isValidInet6Address("1::7:8"));
     122        assertFalse(validator.isValidInet6Address(""), "IPV6 empty string should be invalid"); // empty string
     123        assertTrue(validator.isValidInet6Address("::1"), "IPV6 ::1 should be valid"); // loopback, compressed, non-routable
     124        assertTrue(validator.isValidInet6Address("::"), "IPV6 :: should be valid"); // unspecified, compressed, non-routable
     125        assertTrue(validator.isValidInet6Address("0:0:0:0:0:0:0:1"), "IPV6 0:0:0:0:0:0:0:1 should be valid"); // loopback, full
     126        assertTrue(validator.isValidInet6Address("0:0:0:0:0:0:0:0"), "IPV6 0:0:0:0:0:0:0:0 should be valid"); // unspecified, full
     127        assertTrue(validator.isValidInet6Address("2001:DB8:0:0:8:800:200C:417A"), "IPV6 2001:DB8:0:0:8:800:200C:417A should be valid"); // unicast, full
     128        assertTrue(validator.isValidInet6Address("FF01:0:0:0:0:0:0:101"), "IPV6 FF01:0:0:0:0:0:0:101 should be valid"); // multicast, full
     129        assertTrue(validator.isValidInet6Address("2001:DB8::8:800:200C:417A"), "IPV6 2001:DB8::8:800:200C:417A should be valid"); // unicast, compressed
     130        assertTrue(validator.isValidInet6Address("FF01::101"), "IPV6 FF01::101 should be valid"); // multicast, compressed
     131        assertFalse(validator.isValidInet6Address("2001:DB8:0:0:8:800:200C:417A:221"), "IPV6 2001:DB8:0:0:8:800:200C:417A:221 should be invalid"); // unicast, full
     132        assertFalse(validator.isValidInet6Address("FF01::101::2"), "IPV6 FF01::101::2 should be invalid"); // multicast, compressed
     133        assertTrue(validator.isValidInet6Address("fe80::217:f2ff:fe07:ed62"), "IPV6 fe80::217:f2ff:fe07:ed62 should be valid");
     134        assertTrue(validator.isValidInet6Address("2001:0000:1234:0000:0000:C1C0:ABCD:0876"), "IPV6 2001:0000:1234:0000:0000:C1C0:ABCD:0876 should be valid");
     135        assertTrue(validator.isValidInet6Address("3ffe:0b00:0000:0000:0001:0000:0000:000a"), "IPV6 3ffe:0b00:0000:0000:0001:0000:0000:000a should be valid");
     136        assertTrue(validator.isValidInet6Address("FF02:0000:0000:0000:0000:0000:0000:0001"), "IPV6 FF02:0000:0000:0000:0000:0000:0000:0001 should be valid");
     137        assertTrue(validator.isValidInet6Address("0000:0000:0000:0000:0000:0000:0000:0001"), "IPV6 0000:0000:0000:0000:0000:0000:0000:0001 should be valid");
     138        assertTrue(validator.isValidInet6Address("0000:0000:0000:0000:0000:0000:0000:0000"), "IPV6 0000:0000:0000:0000:0000:0000:0000:0000 should be valid");
     139        assertFalse(validator.isValidInet6Address("02001:0000:1234:0000:0000:C1C0:ABCD:0876"), "IPV6 02001:0000:1234:0000:0000:C1C0:ABCD:0876 should be invalid"); // extra 0 not allowed!
     140        assertFalse(validator.isValidInet6Address("2001:0000:1234:0000:00001:C1C0:ABCD:0876"), "IPV6 2001:0000:1234:0000:00001:C1C0:ABCD:0876 should be invalid"); // extra 0 not allowed!
     141        assertFalse(validator.isValidInet6Address("2001:0000:1234:0000:0000:C1C0:ABCD:0876 0"), "IPV6 2001:0000:1234:0000:0000:C1C0:ABCD:0876 0 should be invalid"); // junk after valid address
     142        assertFalse(validator.isValidInet6Address("2001:0000:1234: 0000:0000:C1C0:ABCD:0876"), "IPV6 2001:0000:1234: 0000:0000:C1C0:ABCD:0876 should be invalid"); // internal space
     143        assertFalse(validator.isValidInet6Address("3ffe:0b00:0000:0001:0000:0000:000a"), "IPV6 3ffe:0b00:0000:0001:0000:0000:000a should be invalid"); // seven segments
     144        assertFalse(validator.isValidInet6Address("FF02:0000:0000:0000:0000:0000:0000:0000:0001"), "IPV6 FF02:0000:0000:0000:0000:0000:0000:0000:0001 should be invalid"); // nine segments
     145        assertFalse(validator.isValidInet6Address("3ffe:b00::1::a"), "IPV6 3ffe:b00::1::a should be invalid"); // double "::"
     146        assertFalse(validator.isValidInet6Address("::1111:2222:3333:4444:5555:6666::"), "IPV6 ::1111:2222:3333:4444:5555:6666:: should be invalid"); // double "::"
     147        assertTrue(validator.isValidInet6Address("2::10"), "IPV6 2::10 should be valid");
     148        assertTrue(validator.isValidInet6Address("ff02::1"), "IPV6 ff02::1 should be valid");
     149        assertTrue(validator.isValidInet6Address("fe80::"), "IPV6 fe80:: should be valid");
     150        assertTrue(validator.isValidInet6Address("2002::"), "IPV6 2002:: should be valid");
     151        assertTrue(validator.isValidInet6Address("2001:db8::"), "IPV6 2001:db8:: should be valid");
     152        assertTrue(validator.isValidInet6Address("2001:0db8:1234::"), "IPV6 2001:0db8:1234:: should be valid");
     153        assertTrue(validator.isValidInet6Address("::ffff:0:0"), "IPV6 ::ffff:0:0 should be valid");
     154        assertTrue(validator.isValidInet6Address("1:2:3:4:5:6:7:8"), "IPV6 1:2:3:4:5:6:7:8 should be valid");
     155        assertTrue(validator.isValidInet6Address("1:2:3:4:5:6::8"), "IPV6 1:2:3:4:5:6::8 should be valid");
     156        assertTrue(validator.isValidInet6Address("1:2:3:4:5::8"), "IPV6 1:2:3:4:5::8 should be valid");
     157        assertTrue(validator.isValidInet6Address("1:2:3:4::8"), "IPV6 1:2:3:4::8 should be valid");
     158        assertTrue(validator.isValidInet6Address("1:2:3::8"), "IPV6 1:2:3::8 should be valid");
     159        assertTrue(validator.isValidInet6Address("1:2::8"), "IPV6 1:2::8 should be valid");
     160        assertTrue(validator.isValidInet6Address("1::8"), "IPV6 1::8 should be valid");
     161        assertTrue(validator.isValidInet6Address("1::2:3:4:5:6:7"), "IPV6 1::2:3:4:5:6:7 should be valid");
     162        assertTrue(validator.isValidInet6Address("1::2:3:4:5:6"), "IPV6 1::2:3:4:5:6 should be valid");
     163        assertTrue(validator.isValidInet6Address("1::2:3:4:5"), "IPV6 1::2:3:4:5 should be valid");
     164        assertTrue(validator.isValidInet6Address("1::2:3:4"), "IPV6 1::2:3:4 should be valid");
     165        assertTrue(validator.isValidInet6Address("1::2:3"), "IPV6 1::2:3 should be valid");
     166        assertTrue(validator.isValidInet6Address("::2:3:4:5:6:7:8"), "IPV6 ::2:3:4:5:6:7:8 should be valid");
     167        assertTrue(validator.isValidInet6Address("::2:3:4:5:6:7"), "IPV6 ::2:3:4:5:6:7 should be valid");
     168        assertTrue(validator.isValidInet6Address("::2:3:4:5:6"), "IPV6 ::2:3:4:5:6 should be valid");
     169        assertTrue(validator.isValidInet6Address("::2:3:4:5"), "IPV6 ::2:3:4:5 should be valid");
     170        assertTrue(validator.isValidInet6Address("::2:3:4"), "IPV6 ::2:3:4 should be valid");
     171        assertTrue(validator.isValidInet6Address("::2:3"), "IPV6 ::2:3 should be valid");
     172        assertTrue(validator.isValidInet6Address("::8"), "IPV6 ::8 should be valid");
     173        assertTrue(validator.isValidInet6Address("1:2:3:4:5:6::"), "IPV6 1:2:3:4:5:6:: should be valid");
     174        assertTrue(validator.isValidInet6Address("1:2:3:4:5::"), "IPV6 1:2:3:4:5:: should be valid");
     175        assertTrue(validator.isValidInet6Address("1:2:3:4::"), "IPV6 1:2:3:4:: should be valid");
     176        assertTrue(validator.isValidInet6Address("1:2:3::"), "IPV6 1:2:3:: should be valid");
     177        assertTrue(validator.isValidInet6Address("1:2::"), "IPV6 1:2:: should be valid");
     178        assertTrue(validator.isValidInet6Address("1::"), "IPV6 1:: should be valid");
     179        assertTrue(validator.isValidInet6Address("1:2:3:4:5::7:8"), "IPV6 1:2:3:4:5::7:8 should be valid");
     180        assertFalse(validator.isValidInet6Address("1:2:3::4:5::7:8"), "IPV6 1:2:3::4:5::7:8 should be invalid"); // Double "::"
     181        assertFalse(validator.isValidInet6Address("12345::6:7:8"), "IPV6 12345::6:7:8 should be invalid");
     182        assertTrue(validator.isValidInet6Address("1:2:3:4::7:8"), "IPV6 1:2:3:4::7:8 should be valid");
     183        assertTrue(validator.isValidInet6Address("1:2:3::7:8"), "IPV6 1:2:3::7:8 should be valid");
     184        assertTrue(validator.isValidInet6Address("1:2::7:8"), "IPV6 1:2::7:8 should be valid");
     185        assertTrue(validator.isValidInet6Address("1::7:8"), "IPV6 1::7:8 should be valid");
    187186        // IPv4 addresses as dotted-quads
    188         assertTrue("IPV6 1:2:3:4:5:6:1.2.3.4 should be valid", validator.isValidInet6Address("1:2:3:4:5:6:1.2.3.4"));
    189         assertTrue("IPV6 1:2:3:4:5::1.2.3.4 should be valid", validator.isValidInet6Address("1:2:3:4:5::1.2.3.4"));
    190         assertTrue("IPV6 1:2:3:4::1.2.3.4 should be valid", validator.isValidInet6Address("1:2:3:4::1.2.3.4"));
    191         assertTrue("IPV6 1:2:3::1.2.3.4 should be valid", validator.isValidInet6Address("1:2:3::1.2.3.4"));
    192         assertTrue("IPV6 1:2::1.2.3.4 should be valid", validator.isValidInet6Address("1:2::1.2.3.4"));
    193         assertTrue("IPV6 1::1.2.3.4 should be valid", validator.isValidInet6Address("1::1.2.3.4"));
    194         assertTrue("IPV6 1:2:3:4::5:1.2.3.4 should be valid", validator.isValidInet6Address("1:2:3:4::5:1.2.3.4"));
    195         assertTrue("IPV6 1:2:3::5:1.2.3.4 should be valid", validator.isValidInet6Address("1:2:3::5:1.2.3.4"));
    196         assertTrue("IPV6 1:2::5:1.2.3.4 should be valid", validator.isValidInet6Address("1:2::5:1.2.3.4"));
    197         assertTrue("IPV6 1::5:1.2.3.4 should be valid", validator.isValidInet6Address("1::5:1.2.3.4"));
    198         assertTrue("IPV6 1::5:11.22.33.44 should be valid", validator.isValidInet6Address("1::5:11.22.33.44"));
    199         assertFalse("IPV6 1::5:400.2.3.4 should be invalid", validator.isValidInet6Address("1::5:400.2.3.4"));
    200         assertFalse("IPV6 1::5:260.2.3.4 should be invalid", validator.isValidInet6Address("1::5:260.2.3.4"));
    201         assertFalse("IPV6 1::5:256.2.3.4 should be invalid", validator.isValidInet6Address("1::5:256.2.3.4"));
    202         assertFalse("IPV6 1::5:1.256.3.4 should be invalid", validator.isValidInet6Address("1::5:1.256.3.4"));
    203         assertFalse("IPV6 1::5:1.2.256.4 should be invalid", validator.isValidInet6Address("1::5:1.2.256.4"));
    204         assertFalse("IPV6 1::5:1.2.3.256 should be invalid", validator.isValidInet6Address("1::5:1.2.3.256"));
    205         assertFalse("IPV6 1::5:300.2.3.4 should be invalid", validator.isValidInet6Address("1::5:300.2.3.4"));
    206         assertFalse("IPV6 1::5:1.300.3.4 should be invalid", validator.isValidInet6Address("1::5:1.300.3.4"));
    207         assertFalse("IPV6 1::5:1.2.300.4 should be invalid", validator.isValidInet6Address("1::5:1.2.300.4"));
    208         assertFalse("IPV6 1::5:1.2.3.300 should be invalid", validator.isValidInet6Address("1::5:1.2.3.300"));
    209         assertFalse("IPV6 1::5:900.2.3.4 should be invalid", validator.isValidInet6Address("1::5:900.2.3.4"));
    210         assertFalse("IPV6 1::5:1.900.3.4 should be invalid", validator.isValidInet6Address("1::5:1.900.3.4"));
    211         assertFalse("IPV6 1::5:1.2.900.4 should be invalid", validator.isValidInet6Address("1::5:1.2.900.4"));
    212         assertFalse("IPV6 1::5:1.2.3.900 should be invalid", validator.isValidInet6Address("1::5:1.2.3.900"));
    213         assertFalse("IPV6 1::5:300.300.300.300 should be invalid", validator.isValidInet6Address("1::5:300.300.300.300"));
    214         assertFalse("IPV6 1::5:3000.30.30.30 should be invalid", validator.isValidInet6Address("1::5:3000.30.30.30"));
    215         assertFalse("IPV6 1::400.2.3.4 should be invalid", validator.isValidInet6Address("1::400.2.3.4"));
    216         assertFalse("IPV6 1::260.2.3.4 should be invalid", validator.isValidInet6Address("1::260.2.3.4"));
    217         assertFalse("IPV6 1::256.2.3.4 should be invalid", validator.isValidInet6Address("1::256.2.3.4"));
    218         assertFalse("IPV6 1::1.256.3.4 should be invalid", validator.isValidInet6Address("1::1.256.3.4"));
    219         assertFalse("IPV6 1::1.2.256.4 should be invalid", validator.isValidInet6Address("1::1.2.256.4"));
    220         assertFalse("IPV6 1::1.2.3.256 should be invalid", validator.isValidInet6Address("1::1.2.3.256"));
    221         assertFalse("IPV6 1::300.2.3.4 should be invalid", validator.isValidInet6Address("1::300.2.3.4"));
    222         assertFalse("IPV6 1::1.300.3.4 should be invalid", validator.isValidInet6Address("1::1.300.3.4"));
    223         assertFalse("IPV6 1::1.2.300.4 should be invalid", validator.isValidInet6Address("1::1.2.300.4"));
    224         assertFalse("IPV6 1::1.2.3.300 should be invalid", validator.isValidInet6Address("1::1.2.3.300"));
    225         assertFalse("IPV6 1::900.2.3.4 should be invalid", validator.isValidInet6Address("1::900.2.3.4"));
    226         assertFalse("IPV6 1::1.900.3.4 should be invalid", validator.isValidInet6Address("1::1.900.3.4"));
    227         assertFalse("IPV6 1::1.2.900.4 should be invalid", validator.isValidInet6Address("1::1.2.900.4"));
    228         assertFalse("IPV6 1::1.2.3.900 should be invalid", validator.isValidInet6Address("1::1.2.3.900"));
    229         assertFalse("IPV6 1::300.300.300.300 should be invalid", validator.isValidInet6Address("1::300.300.300.300"));
    230         assertFalse("IPV6 1::3000.30.30.30 should be invalid", validator.isValidInet6Address("1::3000.30.30.30"));
    231         assertFalse("IPV6 ::400.2.3.4 should be invalid", validator.isValidInet6Address("::400.2.3.4"));
    232         assertFalse("IPV6 ::260.2.3.4 should be invalid", validator.isValidInet6Address("::260.2.3.4"));
    233         assertFalse("IPV6 ::256.2.3.4 should be invalid", validator.isValidInet6Address("::256.2.3.4"));
    234         assertFalse("IPV6 ::1.256.3.4 should be invalid", validator.isValidInet6Address("::1.256.3.4"));
    235         assertFalse("IPV6 ::1.2.256.4 should be invalid", validator.isValidInet6Address("::1.2.256.4"));
    236         assertFalse("IPV6 ::1.2.3.256 should be invalid", validator.isValidInet6Address("::1.2.3.256"));
    237         assertFalse("IPV6 ::300.2.3.4 should be invalid", validator.isValidInet6Address("::300.2.3.4"));
    238         assertFalse("IPV6 ::1.300.3.4 should be invalid", validator.isValidInet6Address("::1.300.3.4"));
    239         assertFalse("IPV6 ::1.2.300.4 should be invalid", validator.isValidInet6Address("::1.2.300.4"));
    240         assertFalse("IPV6 ::1.2.3.300 should be invalid", validator.isValidInet6Address("::1.2.3.300"));
    241         assertFalse("IPV6 ::900.2.3.4 should be invalid", validator.isValidInet6Address("::900.2.3.4"));
    242         assertFalse("IPV6 ::1.900.3.4 should be invalid", validator.isValidInet6Address("::1.900.3.4"));
    243         assertFalse("IPV6 ::1.2.900.4 should be invalid", validator.isValidInet6Address("::1.2.900.4"));
    244         assertFalse("IPV6 ::1.2.3.900 should be invalid", validator.isValidInet6Address("::1.2.3.900"));
    245         assertFalse("IPV6 ::300.300.300.300 should be invalid", validator.isValidInet6Address("::300.300.300.300"));
    246         assertFalse("IPV6 ::3000.30.30.30 should be invalid", validator.isValidInet6Address("::3000.30.30.30"));
    247         assertTrue("IPV6 fe80::217:f2ff:254.7.237.98 should be valid", validator.isValidInet6Address("fe80::217:f2ff:254.7.237.98"));
    248         assertTrue("IPV6 ::ffff:192.168.1.26 should be valid", validator.isValidInet6Address("::ffff:192.168.1.26"));
    249         assertFalse("IPV6 2001:1:1:1:1:1:255Z255X255Y255 should be invalid", validator.isValidInet6Address("2001:1:1:1:1:1:255Z255X255Y255")); // garbage instead of "." in IPv4
    250         assertFalse("IPV6 ::ffff:192x168.1.26 should be invalid", validator.isValidInet6Address("::ffff:192x168.1.26")); // ditto
    251         assertTrue("IPV6 ::ffff:192.168.1.1 should be valid", validator.isValidInet6Address("::ffff:192.168.1.1"));
    252         assertTrue("IPV6 0:0:0:0:0:0:13.1.68.3 should be valid", validator.isValidInet6Address("0:0:0:0:0:0:13.1.68.3")); // IPv4-compatible IPv6 address, full, deprecated
    253         assertTrue("IPV6 0:0:0:0:0:FFFF:129.144.52.38 should be valid", validator.isValidInet6Address("0:0:0:0:0:FFFF:129.144.52.38")); // IPv4-mapped IPv6 address, full
    254         assertTrue("IPV6 ::13.1.68.3 should be valid", validator.isValidInet6Address("::13.1.68.3")); // IPv4-compatible IPv6 address, compressed, deprecated
    255         assertTrue("IPV6 ::FFFF:129.144.52.38 should be valid", validator.isValidInet6Address("::FFFF:129.144.52.38")); // IPv4-mapped IPv6 address, compressed
    256         assertTrue("IPV6 fe80:0:0:0:204:61ff:254.157.241.86 should be valid", validator.isValidInet6Address("fe80:0:0:0:204:61ff:254.157.241.86"));
    257         assertTrue("IPV6 fe80::204:61ff:254.157.241.86 should be valid", validator.isValidInet6Address("fe80::204:61ff:254.157.241.86"));
    258         assertTrue("IPV6 ::ffff:12.34.56.78 should be valid", validator.isValidInet6Address("::ffff:12.34.56.78"));
    259         assertFalse("IPV6 ::ffff:2.3.4 should be invalid", validator.isValidInet6Address("::ffff:2.3.4"));
    260         assertFalse("IPV6 ::ffff:257.1.2.3 should be invalid", validator.isValidInet6Address("::ffff:257.1.2.3"));
    261         assertFalse("IPV6 1.2.3.4 should be invalid", validator.isValidInet6Address("1.2.3.4"));
    262         assertFalse("IPV6 1.2.3.4:1111:2222:3333:4444::5555 should be invalid", validator.isValidInet6Address("1.2.3.4:1111:2222:3333:4444::5555"));
    263         assertFalse("IPV6 1.2.3.4:1111:2222:3333::5555 should be invalid", validator.isValidInet6Address("1.2.3.4:1111:2222:3333::5555"));
    264         assertFalse("IPV6 1.2.3.4:1111:2222::5555 should be invalid", validator.isValidInet6Address("1.2.3.4:1111:2222::5555"));
    265         assertFalse("IPV6 1.2.3.4:1111::5555 should be invalid", validator.isValidInet6Address("1.2.3.4:1111::5555"));
    266         assertFalse("IPV6 1.2.3.4::5555 should be invalid", validator.isValidInet6Address("1.2.3.4::5555"));
    267         assertFalse("IPV6 1.2.3.4:: should be invalid", validator.isValidInet6Address("1.2.3.4::"));
     187        assertTrue(validator.isValidInet6Address("1:2:3:4:5:6:1.2.3.4"), "IPV6 1:2:3:4:5:6:1.2.3.4 should be valid");
     188        assertTrue(validator.isValidInet6Address("1:2:3:4:5::1.2.3.4"), "IPV6 1:2:3:4:5::1.2.3.4 should be valid");
     189        assertTrue(validator.isValidInet6Address("1:2:3:4::1.2.3.4"), "IPV6 1:2:3:4::1.2.3.4 should be valid");
     190        assertTrue(validator.isValidInet6Address("1:2:3::1.2.3.4"), "IPV6 1:2:3::1.2.3.4 should be valid");
     191        assertTrue(validator.isValidInet6Address("1:2::1.2.3.4"), "IPV6 1:2::1.2.3.4 should be valid");
     192        assertTrue(validator.isValidInet6Address("1::1.2.3.4"), "IPV6 1::1.2.3.4 should be valid");
     193        assertTrue(validator.isValidInet6Address("1:2:3:4::5:1.2.3.4"), "IPV6 1:2:3:4::5:1.2.3.4 should be valid");
     194        assertTrue(validator.isValidInet6Address("1:2:3::5:1.2.3.4"), "IPV6 1:2:3::5:1.2.3.4 should be valid");
     195        assertTrue(validator.isValidInet6Address("1:2::5:1.2.3.4"), "IPV6 1:2::5:1.2.3.4 should be valid");
     196        assertTrue(validator.isValidInet6Address("1::5:1.2.3.4"), "IPV6 1::5:1.2.3.4 should be valid");
     197        assertTrue(validator.isValidInet6Address("1::5:11.22.33.44"), "IPV6 1::5:11.22.33.44 should be valid");
     198        assertFalse(validator.isValidInet6Address("1::5:400.2.3.4"), "IPV6 1::5:400.2.3.4 should be invalid");
     199        assertFalse(validator.isValidInet6Address("1::5:260.2.3.4"), "IPV6 1::5:260.2.3.4 should be invalid");
     200        assertFalse(validator.isValidInet6Address("1::5:256.2.3.4"), "IPV6 1::5:256.2.3.4 should be invalid");
     201        assertFalse(validator.isValidInet6Address("1::5:1.256.3.4"), "IPV6 1::5:1.256.3.4 should be invalid");
     202        assertFalse(validator.isValidInet6Address("1::5:1.2.256.4"), "IPV6 1::5:1.2.256.4 should be invalid");
     203        assertFalse(validator.isValidInet6Address("1::5:1.2.3.256"), "IPV6 1::5:1.2.3.256 should be invalid");
     204        assertFalse(validator.isValidInet6Address("1::5:300.2.3.4"), "IPV6 1::5:300.2.3.4 should be invalid");
     205        assertFalse(validator.isValidInet6Address("1::5:1.300.3.4"), "IPV6 1::5:1.300.3.4 should be invalid");
     206        assertFalse(validator.isValidInet6Address("1::5:1.2.300.4"), "IPV6 1::5:1.2.300.4 should be invalid");
     207        assertFalse(validator.isValidInet6Address("1::5:1.2.3.300"), "IPV6 1::5:1.2.3.300 should be invalid");
     208        assertFalse(validator.isValidInet6Address("1::5:900.2.3.4"), "IPV6 1::5:900.2.3.4 should be invalid");
     209        assertFalse(validator.isValidInet6Address("1::5:1.900.3.4"), "IPV6 1::5:1.900.3.4 should be invalid");
     210        assertFalse(validator.isValidInet6Address("1::5:1.2.900.4"), "IPV6 1::5:1.2.900.4 should be invalid");
     211        assertFalse(validator.isValidInet6Address("1::5:1.2.3.900"), "IPV6 1::5:1.2.3.900 should be invalid");
     212        assertFalse(validator.isValidInet6Address("1::5:300.300.300.300"), "IPV6 1::5:300.300.300.300 should be invalid");
     213        assertFalse(validator.isValidInet6Address("1::5:3000.30.30.30"), "IPV6 1::5:3000.30.30.30 should be invalid");
     214        assertFalse(validator.isValidInet6Address("1::400.2.3.4"), "IPV6 1::400.2.3.4 should be invalid");
     215        assertFalse(validator.isValidInet6Address("1::260.2.3.4"), "IPV6 1::260.2.3.4 should be invalid");
     216        assertFalse(validator.isValidInet6Address("1::256.2.3.4"), "IPV6 1::256.2.3.4 should be invalid");
     217        assertFalse(validator.isValidInet6Address("1::1.256.3.4"), "IPV6 1::1.256.3.4 should be invalid");
     218        assertFalse(validator.isValidInet6Address("1::1.2.256.4"), "IPV6 1::1.2.256.4 should be invalid");
     219        assertFalse(validator.isValidInet6Address("1::1.2.3.256"), "IPV6 1::1.2.3.256 should be invalid");
     220        assertFalse(validator.isValidInet6Address("1::300.2.3.4"), "IPV6 1::300.2.3.4 should be invalid");
     221        assertFalse(validator.isValidInet6Address("1::1.300.3.4"), "IPV6 1::1.300.3.4 should be invalid");
     222        assertFalse(validator.isValidInet6Address("1::1.2.300.4"), "IPV6 1::1.2.300.4 should be invalid");
     223        assertFalse(validator.isValidInet6Address("1::1.2.3.300"), "IPV6 1::1.2.3.300 should be invalid");
     224        assertFalse(validator.isValidInet6Address("1::900.2.3.4"), "IPV6 1::900.2.3.4 should be invalid");
     225        assertFalse(validator.isValidInet6Address("1::1.900.3.4"), "IPV6 1::1.900.3.4 should be invalid");
     226        assertFalse(validator.isValidInet6Address("1::1.2.900.4"), "IPV6 1::1.2.900.4 should be invalid");
     227        assertFalse(validator.isValidInet6Address("1::1.2.3.900"), "IPV6 1::1.2.3.900 should be invalid");
     228        assertFalse(validator.isValidInet6Address("1::300.300.300.300"), "IPV6 1::300.300.300.300 should be invalid");
     229        assertFalse(validator.isValidInet6Address("1::3000.30.30.30"), "IPV6 1::3000.30.30.30 should be invalid");
     230        assertFalse(validator.isValidInet6Address("::400.2.3.4"), "IPV6 ::400.2.3.4 should be invalid");
     231        assertFalse(validator.isValidInet6Address("::260.2.3.4"), "IPV6 ::260.2.3.4 should be invalid");
     232        assertFalse(validator.isValidInet6Address("::256.2.3.4"), "IPV6 ::256.2.3.4 should be invalid");
     233        assertFalse(validator.isValidInet6Address("::1.256.3.4"), "IPV6 ::1.256.3.4 should be invalid");
     234        assertFalse(validator.isValidInet6Address("::1.2.256.4"), "IPV6 ::1.2.256.4 should be invalid");
     235        assertFalse(validator.isValidInet6Address("::1.2.3.256"), "IPV6 ::1.2.3.256 should be invalid");
     236        assertFalse(validator.isValidInet6Address("::300.2.3.4"), "IPV6 ::300.2.3.4 should be invalid");
     237        assertFalse(validator.isValidInet6Address("::1.300.3.4"), "IPV6 ::1.300.3.4 should be invalid");
     238        assertFalse(validator.isValidInet6Address("::1.2.300.4"), "IPV6 ::1.2.300.4 should be invalid");
     239        assertFalse(validator.isValidInet6Address("::1.2.3.300"), "IPV6 ::1.2.3.300 should be invalid");
     240        assertFalse(validator.isValidInet6Address("::900.2.3.4"), "IPV6 ::900.2.3.4 should be invalid");
     241        assertFalse(validator.isValidInet6Address("::1.900.3.4"), "IPV6 ::1.900.3.4 should be invalid");
     242        assertFalse(validator.isValidInet6Address("::1.2.900.4"), "IPV6 ::1.2.900.4 should be invalid");
     243        assertFalse(validator.isValidInet6Address("::1.2.3.900"), "IPV6 ::1.2.3.900 should be invalid");
     244        assertFalse(validator.isValidInet6Address("::300.300.300.300"), "IPV6 ::300.300.300.300 should be invalid");
     245        assertFalse(validator.isValidInet6Address("::3000.30.30.30"), "IPV6 ::3000.30.30.30 should be invalid");
     246        assertTrue(validator.isValidInet6Address("fe80::217:f2ff:254.7.237.98"), "IPV6 fe80::217:f2ff:254.7.237.98 should be valid");
     247        assertTrue(validator.isValidInet6Address("::ffff:192.168.1.26"), "IPV6 ::ffff:192.168.1.26 should be valid");
     248        assertFalse(validator.isValidInet6Address("2001:1:1:1:1:1:255Z255X255Y255"), "IPV6 2001:1:1:1:1:1:255Z255X255Y255 should be invalid"); // garbage instead of "." in IPv4
     249        assertFalse(validator.isValidInet6Address("::ffff:192x168.1.26"), "IPV6 ::ffff:192x168.1.26 should be invalid"); // ditto
     250        assertTrue(validator.isValidInet6Address("::ffff:192.168.1.1"), "IPV6 ::ffff:192.168.1.1 should be valid");
     251        assertTrue(validator.isValidInet6Address("0:0:0:0:0:0:13.1.68.3"), "IPV6 0:0:0:0:0:0:13.1.68.3 should be valid"); // IPv4-compatible IPv6 address, full, deprecated
     252        assertTrue(validator.isValidInet6Address("0:0:0:0:0:FFFF:129.144.52.38"), "IPV6 0:0:0:0:0:FFFF:129.144.52.38 should be valid"); // IPv4-mapped IPv6 address, full
     253        assertTrue(validator.isValidInet6Address("::13.1.68.3"), "IPV6 ::13.1.68.3 should be valid"); // IPv4-compatible IPv6 address, compressed, deprecated
     254        assertTrue(validator.isValidInet6Address("::FFFF:129.144.52.38"), "IPV6 ::FFFF:129.144.52.38 should be valid"); // IPv4-mapped IPv6 address, compressed
     255        assertTrue(validator.isValidInet6Address("fe80:0:0:0:204:61ff:254.157.241.86"), "IPV6 fe80:0:0:0:204:61ff:254.157.241.86 should be valid");
     256        assertTrue(validator.isValidInet6Address("fe80::204:61ff:254.157.241.86"), "IPV6 fe80::204:61ff:254.157.241.86 should be valid");
     257        assertTrue(validator.isValidInet6Address("::ffff:12.34.56.78"), "IPV6 ::ffff:12.34.56.78 should be valid");
     258        assertFalse(validator.isValidInet6Address("::ffff:2.3.4"), "IPV6 ::ffff:2.3.4 should be invalid");
     259        assertFalse(validator.isValidInet6Address("::ffff:257.1.2.3"), "IPV6 ::ffff:257.1.2.3 should be invalid");
     260        assertFalse(validator.isValidInet6Address("1.2.3.4"), "IPV6 1.2.3.4 should be invalid");
     261        assertFalse(validator.isValidInet6Address("1.2.3.4:1111:2222:3333:4444::5555"), "IPV6 1.2.3.4:1111:2222:3333:4444::5555 should be invalid");
     262        assertFalse(validator.isValidInet6Address("1.2.3.4:1111:2222:3333::5555"), "IPV6 1.2.3.4:1111:2222:3333::5555 should be invalid");
     263        assertFalse(validator.isValidInet6Address("1.2.3.4:1111:2222::5555"), "IPV6 1.2.3.4:1111:2222::5555 should be invalid");
     264        assertFalse(validator.isValidInet6Address("1.2.3.4:1111::5555"), "IPV6 1.2.3.4:1111::5555 should be invalid");
     265        assertFalse(validator.isValidInet6Address("1.2.3.4::5555"), "IPV6 1.2.3.4::5555 should be invalid");
     266        assertFalse(validator.isValidInet6Address("1.2.3.4::"), "IPV6 1.2.3.4:: should be invalid");
    268267        // Testing IPv4 addresses represented as dotted-quads
    269268        // Leading zeroes in IPv4 addresses not allowed: some systems treat the leading "0" in ".086" as the start of an octal number
    270269        // Update: The BNF in RFC-3986 explicitly defines the dec-octet (for IPv4 addresses) not to have a leading zero
    271         assertFalse("IPV6 fe80:0000:0000:0000:0204:61ff:254.157.241.086 should be invalid", validator.isValidInet6Address("fe80:0000:0000:0000:0204:61ff:254.157.241.086"));
    272         assertTrue("IPV6 ::ffff:192.0.2.128 should be valid", validator.isValidInet6Address("::ffff:192.0.2.128")); // but this is OK, since there's a single digit
    273         assertFalse("IPV6 XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:1.2.3.4 should be invalid", validator.isValidInet6Address("XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:1.2.3.4"));
    274         assertFalse("IPV6 1111:2222:3333:4444:5555:6666:00.00.00.00 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:00.00.00.00"));
    275         assertFalse("IPV6 1111:2222:3333:4444:5555:6666:000.000.000.000 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:000.000.000.000"));
    276         assertFalse("IPV6 1111:2222:3333:4444:5555:6666:256.256.256.256 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:256.256.256.256"));
    277         assertTrue("IPV6 fe80:0000:0000:0000:0204:61ff:fe9d:f156 should be valid", validator.isValidInet6Address("fe80:0000:0000:0000:0204:61ff:fe9d:f156"));
    278         assertTrue("IPV6 fe80:0:0:0:204:61ff:fe9d:f156 should be valid", validator.isValidInet6Address("fe80:0:0:0:204:61ff:fe9d:f156"));
    279         assertTrue("IPV6 fe80::204:61ff:fe9d:f156 should be valid", validator.isValidInet6Address("fe80::204:61ff:fe9d:f156"));
    280         assertFalse("IPV6 : should be invalid", validator.isValidInet6Address(":"));
    281         assertTrue("IPV6 ::ffff:c000:280 should be valid", validator.isValidInet6Address("::ffff:c000:280"));
    282         assertFalse("IPV6 1111:2222:3333:4444::5555: should be invalid", validator.isValidInet6Address("1111:2222:3333:4444::5555:"));
    283         assertFalse("IPV6 1111:2222:3333::5555: should be invalid", validator.isValidInet6Address("1111:2222:3333::5555:"));
    284         assertFalse("IPV6 1111:2222::5555: should be invalid", validator.isValidInet6Address("1111:2222::5555:"));
    285         assertFalse("IPV6 1111::5555: should be invalid", validator.isValidInet6Address("1111::5555:"));
    286         assertFalse("IPV6 ::5555: should be invalid", validator.isValidInet6Address("::5555:"));
    287         assertFalse("IPV6 ::: should be invalid", validator.isValidInet6Address(":::"));
    288         assertFalse("IPV6 1111: should be invalid", validator.isValidInet6Address("1111:"));
    289         assertFalse("IPV6 :1111:2222:3333:4444::5555 should be invalid", validator.isValidInet6Address(":1111:2222:3333:4444::5555"));
    290         assertFalse("IPV6 :1111:2222:3333::5555 should be invalid", validator.isValidInet6Address(":1111:2222:3333::5555"));
    291         assertFalse("IPV6 :1111:2222::5555 should be invalid", validator.isValidInet6Address(":1111:2222::5555"));
    292         assertFalse("IPV6 :1111::5555 should be invalid", validator.isValidInet6Address(":1111::5555"));
    293         assertFalse("IPV6 :::5555 should be invalid", validator.isValidInet6Address(":::5555"));
    294         assertTrue("IPV6 2001:0db8:85a3:0000:0000:8a2e:0370:7334 should be valid", validator.isValidInet6Address("2001:0db8:85a3:0000:0000:8a2e:0370:7334"));
    295         assertTrue("IPV6 2001:db8:85a3:0:0:8a2e:370:7334 should be valid", validator.isValidInet6Address("2001:db8:85a3:0:0:8a2e:370:7334"));
    296         assertTrue("IPV6 2001:db8:85a3::8a2e:370:7334 should be valid", validator.isValidInet6Address("2001:db8:85a3::8a2e:370:7334"));
    297         assertTrue("IPV6 2001:0db8:0000:0000:0000:0000:1428:57ab should be valid", validator.isValidInet6Address("2001:0db8:0000:0000:0000:0000:1428:57ab"));
    298         assertTrue("IPV6 2001:0db8:0000:0000:0000::1428:57ab should be valid", validator.isValidInet6Address("2001:0db8:0000:0000:0000::1428:57ab"));
    299         assertTrue("IPV6 2001:0db8:0:0:0:0:1428:57ab should be valid", validator.isValidInet6Address("2001:0db8:0:0:0:0:1428:57ab"));
    300         assertTrue("IPV6 2001:0db8:0:0::1428:57ab should be valid", validator.isValidInet6Address("2001:0db8:0:0::1428:57ab"));
    301         assertTrue("IPV6 2001:0db8::1428:57ab should be valid", validator.isValidInet6Address("2001:0db8::1428:57ab"));
    302         assertTrue("IPV6 2001:db8::1428:57ab should be valid", validator.isValidInet6Address("2001:db8::1428:57ab"));
    303         assertTrue("IPV6 ::ffff:0c22:384e should be valid", validator.isValidInet6Address("::ffff:0c22:384e"));
    304         assertTrue("IPV6 2001:0db8:1234:0000:0000:0000:0000:0000 should be valid", validator.isValidInet6Address("2001:0db8:1234:0000:0000:0000:0000:0000"));
    305         assertTrue("IPV6 2001:0db8:1234:ffff:ffff:ffff:ffff:ffff should be valid", validator.isValidInet6Address("2001:0db8:1234:ffff:ffff:ffff:ffff:ffff"));
    306         assertTrue("IPV6 2001:db8:a::123 should be valid", validator.isValidInet6Address("2001:db8:a::123"));
    307         assertFalse("IPV6 123 should be invalid", validator.isValidInet6Address("123"));
    308         assertFalse("IPV6 ldkfj should be invalid", validator.isValidInet6Address("ldkfj"));
    309         assertFalse("IPV6 2001::FFD3::57ab should be invalid", validator.isValidInet6Address("2001::FFD3::57ab"));
    310         assertFalse("IPV6 2001:db8:85a3::8a2e:37023:7334 should be invalid", validator.isValidInet6Address("2001:db8:85a3::8a2e:37023:7334"));
    311         assertFalse("IPV6 2001:db8:85a3::8a2e:370k:7334 should be invalid", validator.isValidInet6Address("2001:db8:85a3::8a2e:370k:7334"));
    312         assertFalse("IPV6 1:2:3:4:5:6:7:8:9 should be invalid", validator.isValidInet6Address("1:2:3:4:5:6:7:8:9"));
    313         assertFalse("IPV6 1::2::3 should be invalid", validator.isValidInet6Address("1::2::3"));
    314         assertFalse("IPV6 1:::3:4:5 should be invalid", validator.isValidInet6Address("1:::3:4:5"));
    315         assertFalse("IPV6 1:2:3::4:5:6:7:8:9 should be invalid", validator.isValidInet6Address("1:2:3::4:5:6:7:8:9"));
    316         assertTrue("IPV6 1111:2222:3333:4444:5555:6666:7777:8888 should be valid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:7777:8888"));
    317         assertTrue("IPV6 1111:2222:3333:4444:5555:6666:7777:: should be valid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:7777::"));
    318         assertTrue("IPV6 1111:2222:3333:4444:5555:6666:: should be valid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666::"));
    319         assertTrue("IPV6 1111:2222:3333:4444:5555:: should be valid", validator.isValidInet6Address("1111:2222:3333:4444:5555::"));
    320         assertTrue("IPV6 1111:2222:3333:4444:: should be valid", validator.isValidInet6Address("1111:2222:3333:4444::"));
    321         assertTrue("IPV6 1111:2222:3333:: should be valid", validator.isValidInet6Address("1111:2222:3333::"));
    322         assertTrue("IPV6 1111:2222:: should be valid", validator.isValidInet6Address("1111:2222::"));
    323         assertTrue("IPV6 1111:: should be valid", validator.isValidInet6Address("1111::"));
    324         assertTrue("IPV6 1111:2222:3333:4444:5555:6666::8888 should be valid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666::8888"));
    325         assertTrue("IPV6 1111:2222:3333:4444:5555::8888 should be valid", validator.isValidInet6Address("1111:2222:3333:4444:5555::8888"));
    326         assertTrue("IPV6 1111:2222:3333:4444::8888 should be valid", validator.isValidInet6Address("1111:2222:3333:4444::8888"));
    327         assertTrue("IPV6 1111:2222:3333::8888 should be valid", validator.isValidInet6Address("1111:2222:3333::8888"));
    328         assertTrue("IPV6 1111:2222::8888 should be valid", validator.isValidInet6Address("1111:2222::8888"));
    329         assertTrue("IPV6 1111::8888 should be valid", validator.isValidInet6Address("1111::8888"));
    330         assertTrue("IPV6 ::8888 should be valid", validator.isValidInet6Address("::8888"));
    331         assertTrue("IPV6 1111:2222:3333:4444:5555::7777:8888 should be valid", validator.isValidInet6Address("1111:2222:3333:4444:5555::7777:8888"));
    332         assertTrue("IPV6 1111:2222:3333:4444::7777:8888 should be valid", validator.isValidInet6Address("1111:2222:3333:4444::7777:8888"));
    333         assertTrue("IPV6 1111:2222:3333::7777:8888 should be valid", validator.isValidInet6Address("1111:2222:3333::7777:8888"));
    334         assertTrue("IPV6 1111:2222::7777:8888 should be valid", validator.isValidInet6Address("1111:2222::7777:8888"));
    335         assertTrue("IPV6 1111::7777:8888 should be valid", validator.isValidInet6Address("1111::7777:8888"));
    336         assertTrue("IPV6 ::7777:8888 should be valid", validator.isValidInet6Address("::7777:8888"));
    337         assertTrue("IPV6 1111:2222:3333:4444::6666:7777:8888 should be valid", validator.isValidInet6Address("1111:2222:3333:4444::6666:7777:8888"));
    338         assertTrue("IPV6 1111:2222:3333::6666:7777:8888 should be valid", validator.isValidInet6Address("1111:2222:3333::6666:7777:8888"));
    339         assertTrue("IPV6 1111:2222::6666:7777:8888 should be valid", validator.isValidInet6Address("1111:2222::6666:7777:8888"));
    340         assertTrue("IPV6 1111::6666:7777:8888 should be valid", validator.isValidInet6Address("1111::6666:7777:8888"));
    341         assertTrue("IPV6 ::6666:7777:8888 should be valid", validator.isValidInet6Address("::6666:7777:8888"));
    342         assertTrue("IPV6 1111:2222:3333::5555:6666:7777:8888 should be valid", validator.isValidInet6Address("1111:2222:3333::5555:6666:7777:8888"));
    343         assertTrue("IPV6 1111:2222::5555:6666:7777:8888 should be valid", validator.isValidInet6Address("1111:2222::5555:6666:7777:8888"));
    344         assertTrue("IPV6 1111::5555:6666:7777:8888 should be valid", validator.isValidInet6Address("1111::5555:6666:7777:8888"));
    345         assertTrue("IPV6 ::5555:6666:7777:8888 should be valid", validator.isValidInet6Address("::5555:6666:7777:8888"));
    346         assertTrue("IPV6 1111:2222::4444:5555:6666:7777:8888 should be valid", validator.isValidInet6Address("1111:2222::4444:5555:6666:7777:8888"));
    347         assertTrue("IPV6 1111::4444:5555:6666:7777:8888 should be valid", validator.isValidInet6Address("1111::4444:5555:6666:7777:8888"));
    348         assertTrue("IPV6 ::4444:5555:6666:7777:8888 should be valid", validator.isValidInet6Address("::4444:5555:6666:7777:8888"));
    349         assertTrue("IPV6 1111::3333:4444:5555:6666:7777:8888 should be valid", validator.isValidInet6Address("1111::3333:4444:5555:6666:7777:8888"));
    350         assertTrue("IPV6 ::3333:4444:5555:6666:7777:8888 should be valid", validator.isValidInet6Address("::3333:4444:5555:6666:7777:8888"));
    351         assertTrue("IPV6 ::2222:3333:4444:5555:6666:7777:8888 should be valid", validator.isValidInet6Address("::2222:3333:4444:5555:6666:7777:8888"));
    352         assertTrue("IPV6 1111:2222:3333:4444:5555:6666:123.123.123.123 should be valid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:123.123.123.123"));
    353         assertTrue("IPV6 1111:2222:3333:4444:5555::123.123.123.123 should be valid", validator.isValidInet6Address("1111:2222:3333:4444:5555::123.123.123.123"));
    354         assertTrue("IPV6 1111:2222:3333:4444::123.123.123.123 should be valid", validator.isValidInet6Address("1111:2222:3333:4444::123.123.123.123"));
    355         assertTrue("IPV6 1111:2222:3333::123.123.123.123 should be valid", validator.isValidInet6Address("1111:2222:3333::123.123.123.123"));
    356         assertTrue("IPV6 1111:2222::123.123.123.123 should be valid", validator.isValidInet6Address("1111:2222::123.123.123.123"));
    357         assertTrue("IPV6 1111::123.123.123.123 should be valid", validator.isValidInet6Address("1111::123.123.123.123"));
    358         assertTrue("IPV6 ::123.123.123.123 should be valid", validator.isValidInet6Address("::123.123.123.123"));
    359         assertTrue("IPV6 1111:2222:3333:4444::6666:123.123.123.123 should be valid", validator.isValidInet6Address("1111:2222:3333:4444::6666:123.123.123.123"));
    360         assertTrue("IPV6 1111:2222:3333::6666:123.123.123.123 should be valid", validator.isValidInet6Address("1111:2222:3333::6666:123.123.123.123"));
    361         assertTrue("IPV6 1111:2222::6666:123.123.123.123 should be valid", validator.isValidInet6Address("1111:2222::6666:123.123.123.123"));
    362         assertTrue("IPV6 1111::6666:123.123.123.123 should be valid", validator.isValidInet6Address("1111::6666:123.123.123.123"));
    363         assertTrue("IPV6 ::6666:123.123.123.123 should be valid", validator.isValidInet6Address("::6666:123.123.123.123"));
    364         assertTrue("IPV6 1111:2222:3333::5555:6666:123.123.123.123 should be valid", validator.isValidInet6Address("1111:2222:3333::5555:6666:123.123.123.123"));
    365         assertTrue("IPV6 1111:2222::5555:6666:123.123.123.123 should be valid", validator.isValidInet6Address("1111:2222::5555:6666:123.123.123.123"));
    366         assertTrue("IPV6 1111::5555:6666:123.123.123.123 should be valid", validator.isValidInet6Address("1111::5555:6666:123.123.123.123"));
    367         assertTrue("IPV6 ::5555:6666:123.123.123.123 should be valid", validator.isValidInet6Address("::5555:6666:123.123.123.123"));
    368         assertTrue("IPV6 1111:2222::4444:5555:6666:123.123.123.123 should be valid", validator.isValidInet6Address("1111:2222::4444:5555:6666:123.123.123.123"));
    369         assertTrue("IPV6 1111::4444:5555:6666:123.123.123.123 should be valid", validator.isValidInet6Address("1111::4444:5555:6666:123.123.123.123"));
    370         assertTrue("IPV6 ::4444:5555:6666:123.123.123.123 should be valid", validator.isValidInet6Address("::4444:5555:6666:123.123.123.123"));
    371         assertTrue("IPV6 1111::3333:4444:5555:6666:123.123.123.123 should be valid", validator.isValidInet6Address("1111::3333:4444:5555:6666:123.123.123.123"));
    372         assertTrue("IPV6 ::2222:3333:4444:5555:6666:123.123.123.123 should be valid", validator.isValidInet6Address("::2222:3333:4444:5555:6666:123.123.123.123"));
     270        assertFalse(validator.isValidInet6Address("fe80:0000:0000:0000:0204:61ff:254.157.241.086"), "IPV6 fe80:0000:0000:0000:0204:61ff:254.157.241.086 should be invalid");
     271        assertTrue(validator.isValidInet6Address("::ffff:192.0.2.128"), "IPV6 ::ffff:192.0.2.128 should be valid"); // but this is OK, since there's a single digit
     272        assertFalse(validator.isValidInet6Address("XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:1.2.3.4"), "IPV6 XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:1.2.3.4 should be invalid");
     273        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:00.00.00.00"), "IPV6 1111:2222:3333:4444:5555:6666:00.00.00.00 should be invalid");
     274        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:000.000.000.000"), "IPV6 1111:2222:3333:4444:5555:6666:000.000.000.000 should be invalid");
     275        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:256.256.256.256"), "IPV6 1111:2222:3333:4444:5555:6666:256.256.256.256 should be invalid");
     276        assertTrue(validator.isValidInet6Address("fe80:0000:0000:0000:0204:61ff:fe9d:f156"), "IPV6 fe80:0000:0000:0000:0204:61ff:fe9d:f156 should be valid");
     277        assertTrue(validator.isValidInet6Address("fe80:0:0:0:204:61ff:fe9d:f156"), "IPV6 fe80:0:0:0:204:61ff:fe9d:f156 should be valid");
     278        assertTrue(validator.isValidInet6Address("fe80::204:61ff:fe9d:f156"), "IPV6 fe80::204:61ff:fe9d:f156 should be valid");
     279        assertFalse(validator.isValidInet6Address(":"), "IPV6 : should be invalid");
     280        assertTrue(validator.isValidInet6Address("::ffff:c000:280"), "IPV6 ::ffff:c000:280 should be valid");
     281        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444::5555:"), "IPV6 1111:2222:3333:4444::5555: should be invalid");
     282        assertFalse(validator.isValidInet6Address("1111:2222:3333::5555:"), "IPV6 1111:2222:3333::5555: should be invalid");
     283        assertFalse(validator.isValidInet6Address("1111:2222::5555:"), "IPV6 1111:2222::5555: should be invalid");
     284        assertFalse(validator.isValidInet6Address("1111::5555:"), "IPV6 1111::5555: should be invalid");
     285        assertFalse(validator.isValidInet6Address("::5555:"), "IPV6 ::5555: should be invalid");
     286        assertFalse(validator.isValidInet6Address(":::"), "IPV6 ::: should be invalid");
     287        assertFalse(validator.isValidInet6Address("1111:"), "IPV6 1111: should be invalid");
     288        assertFalse(validator.isValidInet6Address(":1111:2222:3333:4444::5555"), "IPV6 :1111:2222:3333:4444::5555 should be invalid");
     289        assertFalse(validator.isValidInet6Address(":1111:2222:3333::5555"), "IPV6 :1111:2222:3333::5555 should be invalid");
     290        assertFalse(validator.isValidInet6Address(":1111:2222::5555"), "IPV6 :1111:2222::5555 should be invalid");
     291        assertFalse(validator.isValidInet6Address(":1111::5555"), "IPV6 :1111::5555 should be invalid");
     292        assertFalse(validator.isValidInet6Address(":::5555"), "IPV6 :::5555 should be invalid");
     293        assertTrue(validator.isValidInet6Address("2001:0db8:85a3:0000:0000:8a2e:0370:7334"), "IPV6 2001:0db8:85a3:0000:0000:8a2e:0370:7334 should be valid");
     294        assertTrue(validator.isValidInet6Address("2001:db8:85a3:0:0:8a2e:370:7334"), "IPV6 2001:db8:85a3:0:0:8a2e:370:7334 should be valid");
     295        assertTrue(validator.isValidInet6Address("2001:db8:85a3::8a2e:370:7334"), "IPV6 2001:db8:85a3::8a2e:370:7334 should be valid");
     296        assertTrue(validator.isValidInet6Address("2001:0db8:0000:0000:0000:0000:1428:57ab"), "IPV6 2001:0db8:0000:0000:0000:0000:1428:57ab should be valid");
     297        assertTrue(validator.isValidInet6Address("2001:0db8:0000:0000:0000::1428:57ab"), "IPV6 2001:0db8:0000:0000:0000::1428:57ab should be valid");
     298        assertTrue(validator.isValidInet6Address("2001:0db8:0:0:0:0:1428:57ab"), "IPV6 2001:0db8:0:0:0:0:1428:57ab should be valid");
     299        assertTrue(validator.isValidInet6Address("2001:0db8:0:0::1428:57ab"), "IPV6 2001:0db8:0:0::1428:57ab should be valid");
     300        assertTrue(validator.isValidInet6Address("2001:0db8::1428:57ab"), "IPV6 2001:0db8::1428:57ab should be valid");
     301        assertTrue(validator.isValidInet6Address("2001:db8::1428:57ab"), "IPV6 2001:db8::1428:57ab should be valid");
     302        assertTrue(validator.isValidInet6Address("::ffff:0c22:384e"), "IPV6 ::ffff:0c22:384e should be valid");
     303        assertTrue(validator.isValidInet6Address("2001:0db8:1234:0000:0000:0000:0000:0000"), "IPV6 2001:0db8:1234:0000:0000:0000:0000:0000 should be valid");
     304        assertTrue(validator.isValidInet6Address("2001:0db8:1234:ffff:ffff:ffff:ffff:ffff"), "IPV6 2001:0db8:1234:ffff:ffff:ffff:ffff:ffff should be valid");
     305        assertTrue(validator.isValidInet6Address("2001:db8:a::123"), "IPV6 2001:db8:a::123 should be valid");
     306        assertFalse(validator.isValidInet6Address("123"), "IPV6 123 should be invalid");
     307        assertFalse(validator.isValidInet6Address("ldkfj"), "IPV6 ldkfj should be invalid");
     308        assertFalse(validator.isValidInet6Address("2001::FFD3::57ab"), "IPV6 2001::FFD3::57ab should be invalid");
     309        assertFalse(validator.isValidInet6Address("2001:db8:85a3::8a2e:37023:7334"), "IPV6 2001:db8:85a3::8a2e:37023:7334 should be invalid");
     310        assertFalse(validator.isValidInet6Address("2001:db8:85a3::8a2e:370k:7334"), "IPV6 2001:db8:85a3::8a2e:370k:7334 should be invalid");
     311        assertFalse(validator.isValidInet6Address("1:2:3:4:5:6:7:8:9"), "IPV6 1:2:3:4:5:6:7:8:9 should be invalid");
     312        assertFalse(validator.isValidInet6Address("1::2::3"), "IPV6 1::2::3 should be invalid");
     313        assertFalse(validator.isValidInet6Address("1:::3:4:5"), "IPV6 1:::3:4:5 should be invalid");
     314        assertFalse(validator.isValidInet6Address("1:2:3::4:5:6:7:8:9"), "IPV6 1:2:3::4:5:6:7:8:9 should be invalid");
     315        assertTrue(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:7777:8888"), "IPV6 1111:2222:3333:4444:5555:6666:7777:8888 should be valid");
     316        assertTrue(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:7777::"), "IPV6 1111:2222:3333:4444:5555:6666:7777:: should be valid");
     317        assertTrue(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666::"), "IPV6 1111:2222:3333:4444:5555:6666:: should be valid");
     318        assertTrue(validator.isValidInet6Address("1111:2222:3333:4444:5555::"), "IPV6 1111:2222:3333:4444:5555:: should be valid");
     319        assertTrue(validator.isValidInet6Address("1111:2222:3333:4444::"), "IPV6 1111:2222:3333:4444:: should be valid");
     320        assertTrue(validator.isValidInet6Address("1111:2222:3333::"), "IPV6 1111:2222:3333:: should be valid");
     321        assertTrue(validator.isValidInet6Address("1111:2222::"), "IPV6 1111:2222:: should be valid");
     322        assertTrue(validator.isValidInet6Address("1111::"), "IPV6 1111:: should be valid");
     323        assertTrue(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666::8888"), "IPV6 1111:2222:3333:4444:5555:6666::8888 should be valid");
     324        assertTrue(validator.isValidInet6Address("1111:2222:3333:4444:5555::8888"), "IPV6 1111:2222:3333:4444:5555::8888 should be valid");
     325        assertTrue(validator.isValidInet6Address("1111:2222:3333:4444::8888"), "IPV6 1111:2222:3333:4444::8888 should be valid");
     326        assertTrue(validator.isValidInet6Address("1111:2222:3333::8888"), "IPV6 1111:2222:3333::8888 should be valid");
     327        assertTrue(validator.isValidInet6Address("1111:2222::8888"), "IPV6 1111:2222::8888 should be valid");
     328        assertTrue(validator.isValidInet6Address("1111::8888"), "IPV6 1111::8888 should be valid");
     329        assertTrue(validator.isValidInet6Address("::8888"), "IPV6 ::8888 should be valid");
     330        assertTrue(validator.isValidInet6Address("1111:2222:3333:4444:5555::7777:8888"), "IPV6 1111:2222:3333:4444:5555::7777:8888 should be valid");
     331        assertTrue(validator.isValidInet6Address("1111:2222:3333:4444::7777:8888"), "IPV6 1111:2222:3333:4444::7777:8888 should be valid");
     332        assertTrue(validator.isValidInet6Address("1111:2222:3333::7777:8888"), "IPV6 1111:2222:3333::7777:8888 should be valid");
     333        assertTrue(validator.isValidInet6Address("1111:2222::7777:8888"), "IPV6 1111:2222::7777:8888 should be valid");
     334        assertTrue(validator.isValidInet6Address("1111::7777:8888"), "IPV6 1111::7777:8888 should be valid");
     335        assertTrue(validator.isValidInet6Address("::7777:8888"), "IPV6 ::7777:8888 should be valid");
     336        assertTrue(validator.isValidInet6Address("1111:2222:3333:4444::6666:7777:8888"), "IPV6 1111:2222:3333:4444::6666:7777:8888 should be valid");
     337        assertTrue(validator.isValidInet6Address("1111:2222:3333::6666:7777:8888"), "IPV6 1111:2222:3333::6666:7777:8888 should be valid");
     338        assertTrue(validator.isValidInet6Address("1111:2222::6666:7777:8888"), "IPV6 1111:2222::6666:7777:8888 should be valid");
     339        assertTrue(validator.isValidInet6Address("1111::6666:7777:8888"), "IPV6 1111::6666:7777:8888 should be valid");
     340        assertTrue(validator.isValidInet6Address("::6666:7777:8888"), "IPV6 ::6666:7777:8888 should be valid");
     341        assertTrue(validator.isValidInet6Address("1111:2222:3333::5555:6666:7777:8888"), "IPV6 1111:2222:3333::5555:6666:7777:8888 should be valid");
     342        assertTrue(validator.isValidInet6Address("1111:2222::5555:6666:7777:8888"), "IPV6 1111:2222::5555:6666:7777:8888 should be valid");
     343        assertTrue(validator.isValidInet6Address("1111::5555:6666:7777:8888"), "IPV6 1111::5555:6666:7777:8888 should be valid");
     344        assertTrue(validator.isValidInet6Address("::5555:6666:7777:8888"), "IPV6 ::5555:6666:7777:8888 should be valid");
     345        assertTrue(validator.isValidInet6Address("1111:2222::4444:5555:6666:7777:8888"), "IPV6 1111:2222::4444:5555:6666:7777:8888 should be valid");
     346        assertTrue(validator.isValidInet6Address("1111::4444:5555:6666:7777:8888"), "IPV6 1111::4444:5555:6666:7777:8888 should be valid");
     347        assertTrue(validator.isValidInet6Address("::4444:5555:6666:7777:8888"), "IPV6 ::4444:5555:6666:7777:8888 should be valid");
     348        assertTrue(validator.isValidInet6Address("1111::3333:4444:5555:6666:7777:8888"), "IPV6 1111::3333:4444:5555:6666:7777:8888 should be valid");
     349        assertTrue(validator.isValidInet6Address("::3333:4444:5555:6666:7777:8888"), "IPV6 ::3333:4444:5555:6666:7777:8888 should be valid");
     350        assertTrue(validator.isValidInet6Address("::2222:3333:4444:5555:6666:7777:8888"), "IPV6 ::2222:3333:4444:5555:6666:7777:8888 should be valid");
     351        assertTrue(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:123.123.123.123"), "IPV6 1111:2222:3333:4444:5555:6666:123.123.123.123 should be valid");
     352        assertTrue(validator.isValidInet6Address("1111:2222:3333:4444:5555::123.123.123.123"), "IPV6 1111:2222:3333:4444:5555::123.123.123.123 should be valid");
     353        assertTrue(validator.isValidInet6Address("1111:2222:3333:4444::123.123.123.123"), "IPV6 1111:2222:3333:4444::123.123.123.123 should be valid");
     354        assertTrue(validator.isValidInet6Address("1111:2222:3333::123.123.123.123"), "IPV6 1111:2222:3333::123.123.123.123 should be valid");
     355        assertTrue(validator.isValidInet6Address("1111:2222::123.123.123.123"), "IPV6 1111:2222::123.123.123.123 should be valid");
     356        assertTrue(validator.isValidInet6Address("1111::123.123.123.123"), "IPV6 1111::123.123.123.123 should be valid");
     357        assertTrue(validator.isValidInet6Address("::123.123.123.123"), "IPV6 ::123.123.123.123 should be valid");
     358        assertTrue(validator.isValidInet6Address("1111:2222:3333:4444::6666:123.123.123.123"), "IPV6 1111:2222:3333:4444::6666:123.123.123.123 should be valid");
     359        assertTrue(validator.isValidInet6Address("1111:2222:3333::6666:123.123.123.123"), "IPV6 1111:2222:3333::6666:123.123.123.123 should be valid");
     360        assertTrue(validator.isValidInet6Address("1111:2222::6666:123.123.123.123"), "IPV6 1111:2222::6666:123.123.123.123 should be valid");
     361        assertTrue(validator.isValidInet6Address("1111::6666:123.123.123.123"), "IPV6 1111::6666:123.123.123.123 should be valid");
     362        assertTrue(validator.isValidInet6Address("::6666:123.123.123.123"), "IPV6 ::6666:123.123.123.123 should be valid");
     363        assertTrue(validator.isValidInet6Address("1111:2222:3333::5555:6666:123.123.123.123"), "IPV6 1111:2222:3333::5555:6666:123.123.123.123 should be valid");
     364        assertTrue(validator.isValidInet6Address("1111:2222::5555:6666:123.123.123.123"), "IPV6 1111:2222::5555:6666:123.123.123.123 should be valid");
     365        assertTrue(validator.isValidInet6Address("1111::5555:6666:123.123.123.123"), "IPV6 1111::5555:6666:123.123.123.123 should be valid");
     366        assertTrue(validator.isValidInet6Address("::5555:6666:123.123.123.123"), "IPV6 ::5555:6666:123.123.123.123 should be valid");
     367        assertTrue(validator.isValidInet6Address("1111:2222::4444:5555:6666:123.123.123.123"), "IPV6 1111:2222::4444:5555:6666:123.123.123.123 should be valid");
     368        assertTrue(validator.isValidInet6Address("1111::4444:5555:6666:123.123.123.123"), "IPV6 1111::4444:5555:6666:123.123.123.123 should be valid");
     369        assertTrue(validator.isValidInet6Address("::4444:5555:6666:123.123.123.123"), "IPV6 ::4444:5555:6666:123.123.123.123 should be valid");
     370        assertTrue(validator.isValidInet6Address("1111::3333:4444:5555:6666:123.123.123.123"), "IPV6 1111::3333:4444:5555:6666:123.123.123.123 should be valid");
     371        assertTrue(validator.isValidInet6Address("::2222:3333:4444:5555:6666:123.123.123.123"), "IPV6 ::2222:3333:4444:5555:6666:123.123.123.123 should be valid");
    373372        // Trying combinations of "0" and "::"
    374373        // These are all syntactically correct, but are bad form
    375374        // because "0" adjacent to "::" should be combined into "::"
    376         assertTrue("IPV6 ::0:0:0:0:0:0:0 should be valid", validator.isValidInet6Address("::0:0:0:0:0:0:0"));
    377         assertTrue("IPV6 ::0:0:0:0:0:0 should be valid", validator.isValidInet6Address("::0:0:0:0:0:0"));
    378         assertTrue("IPV6 ::0:0:0:0:0 should be valid", validator.isValidInet6Address("::0:0:0:0:0"));
    379         assertTrue("IPV6 ::0:0:0:0 should be valid", validator.isValidInet6Address("::0:0:0:0"));
    380         assertTrue("IPV6 ::0:0:0 should be valid", validator.isValidInet6Address("::0:0:0"));
    381         assertTrue("IPV6 ::0:0 should be valid", validator.isValidInet6Address("::0:0"));
    382         assertTrue("IPV6 ::0 should be valid", validator.isValidInet6Address("::0"));
    383         assertTrue("IPV6 0:0:0:0:0:0:0:: should be valid", validator.isValidInet6Address("0:0:0:0:0:0:0::"));
    384         assertTrue("IPV6 0:0:0:0:0:0:: should be valid", validator.isValidInet6Address("0:0:0:0:0:0::"));
    385         assertTrue("IPV6 0:0:0:0:0:: should be valid", validator.isValidInet6Address("0:0:0:0:0::"));
    386         assertTrue("IPV6 0:0:0:0:: should be valid", validator.isValidInet6Address("0:0:0:0::"));
    387         assertTrue("IPV6 0:0:0:: should be valid", validator.isValidInet6Address("0:0:0::"));
    388         assertTrue("IPV6 0:0:: should be valid", validator.isValidInet6Address("0:0::"));
    389         assertTrue("IPV6 0:: should be valid", validator.isValidInet6Address("0::"));
     375        assertTrue(validator.isValidInet6Address("::0:0:0:0:0:0:0"), "IPV6 ::0:0:0:0:0:0:0 should be valid");
     376        assertTrue(validator.isValidInet6Address("::0:0:0:0:0:0"), "IPV6 ::0:0:0:0:0:0 should be valid");
     377        assertTrue(validator.isValidInet6Address("::0:0:0:0:0"), "IPV6 ::0:0:0:0:0 should be valid");
     378        assertTrue(validator.isValidInet6Address("::0:0:0:0"), "IPV6 ::0:0:0:0 should be valid");
     379        assertTrue(validator.isValidInet6Address("::0:0:0"), "IPV6 ::0:0:0 should be valid");
     380        assertTrue(validator.isValidInet6Address("::0:0"), "IPV6 ::0:0 should be valid");
     381        assertTrue(validator.isValidInet6Address("::0"), "IPV6 ::0 should be valid");
     382        assertTrue(validator.isValidInet6Address("0:0:0:0:0:0:0::"), "IPV6 0:0:0:0:0:0:0:: should be valid");
     383        assertTrue(validator.isValidInet6Address("0:0:0:0:0:0::"), "IPV6 0:0:0:0:0:0:: should be valid");
     384        assertTrue(validator.isValidInet6Address("0:0:0:0:0::"), "IPV6 0:0:0:0:0:: should be valid");
     385        assertTrue(validator.isValidInet6Address("0:0:0:0::"), "IPV6 0:0:0:0:: should be valid");
     386        assertTrue(validator.isValidInet6Address("0:0:0::"), "IPV6 0:0:0:: should be valid");
     387        assertTrue(validator.isValidInet6Address("0:0::"), "IPV6 0:0:: should be valid");
     388        assertTrue(validator.isValidInet6Address("0::"), "IPV6 0:: should be valid");
    390389        // Invalid data
    391         assertFalse("IPV6 XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX should be invalid", validator.isValidInet6Address("XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX"));
     390        assertFalse(validator.isValidInet6Address("XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX"), "IPV6 XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX:XXXX should be invalid");
    392391        // Too many components
    393         assertFalse("IPV6 1111:2222:3333:4444:5555:6666:7777:8888:9999 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:7777:8888:9999"));
    394         assertFalse("IPV6 1111:2222:3333:4444:5555:6666:7777:8888:: should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:7777:8888::"));
    395         assertFalse("IPV6 ::2222:3333:4444:5555:6666:7777:8888:9999 should be invalid", validator.isValidInet6Address("::2222:3333:4444:5555:6666:7777:8888:9999"));
     392        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:7777:8888:9999"), "IPV6 1111:2222:3333:4444:5555:6666:7777:8888:9999 should be invalid");
     393        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:7777:8888::"), "IPV6 1111:2222:3333:4444:5555:6666:7777:8888:: should be invalid");
     394        assertFalse(validator.isValidInet6Address("::2222:3333:4444:5555:6666:7777:8888:9999"), "IPV6 ::2222:3333:4444:5555:6666:7777:8888:9999 should be invalid");
    396395        // Too few components
    397         assertFalse("IPV6 1111:2222:3333:4444:5555:6666:7777 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:7777"));
    398         assertFalse("IPV6 1111:2222:3333:4444:5555:6666 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666"));
    399         assertFalse("IPV6 1111:2222:3333:4444:5555 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555"));
    400         assertFalse("IPV6 1111:2222:3333:4444 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444"));
    401         assertFalse("IPV6 1111:2222:3333 should be invalid", validator.isValidInet6Address("1111:2222:3333"));
    402         assertFalse("IPV6 1111:2222 should be invalid", validator.isValidInet6Address("1111:2222"));
    403         assertFalse("IPV6 1111 should be invalid", validator.isValidInet6Address("1111"));
     396        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:7777"), "IPV6 1111:2222:3333:4444:5555:6666:7777 should be invalid");
     397        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666"), "IPV6 1111:2222:3333:4444:5555:6666 should be invalid");
     398        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555"), "IPV6 1111:2222:3333:4444:5555 should be invalid");
     399        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444"), "IPV6 1111:2222:3333:4444 should be invalid");
     400        assertFalse(validator.isValidInet6Address("1111:2222:3333"), "IPV6 1111:2222:3333 should be invalid");
     401        assertFalse(validator.isValidInet6Address("1111:2222"), "IPV6 1111:2222 should be invalid");
     402        assertFalse(validator.isValidInet6Address("1111"), "IPV6 1111 should be invalid");
    404403        // Missing :
    405         assertFalse("IPV6 11112222:3333:4444:5555:6666:7777:8888 should be invalid", validator.isValidInet6Address("11112222:3333:4444:5555:6666:7777:8888"));
    406         assertFalse("IPV6 1111:22223333:4444:5555:6666:7777:8888 should be invalid", validator.isValidInet6Address("1111:22223333:4444:5555:6666:7777:8888"));
    407         assertFalse("IPV6 1111:2222:33334444:5555:6666:7777:8888 should be invalid", validator.isValidInet6Address("1111:2222:33334444:5555:6666:7777:8888"));
    408         assertFalse("IPV6 1111:2222:3333:44445555:6666:7777:8888 should be invalid", validator.isValidInet6Address("1111:2222:3333:44445555:6666:7777:8888"));
    409         assertFalse("IPV6 1111:2222:3333:4444:55556666:7777:8888 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:55556666:7777:8888"));
    410         assertFalse("IPV6 1111:2222:3333:4444:5555:66667777:8888 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:66667777:8888"));
    411         assertFalse("IPV6 1111:2222:3333:4444:5555:6666:77778888 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:77778888"));
     404        assertFalse(validator.isValidInet6Address("11112222:3333:4444:5555:6666:7777:8888"), "IPV6 11112222:3333:4444:5555:6666:7777:8888 should be invalid");
     405        assertFalse(validator.isValidInet6Address("1111:22223333:4444:5555:6666:7777:8888"), "IPV6 1111:22223333:4444:5555:6666:7777:8888 should be invalid");
     406        assertFalse(validator.isValidInet6Address("1111:2222:33334444:5555:6666:7777:8888"), "IPV6 1111:2222:33334444:5555:6666:7777:8888 should be invalid");
     407        assertFalse(validator.isValidInet6Address("1111:2222:3333:44445555:6666:7777:8888"), "IPV6 1111:2222:3333:44445555:6666:7777:8888 should be invalid");
     408        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:55556666:7777:8888"), "IPV6 1111:2222:3333:4444:55556666:7777:8888 should be invalid");
     409        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:66667777:8888"), "IPV6 1111:2222:3333:4444:5555:66667777:8888 should be invalid");
     410        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:77778888"), "IPV6 1111:2222:3333:4444:5555:6666:77778888 should be invalid");
    412411        // Missing : intended for ::
    413         assertFalse("IPV6 1111:2222:3333:4444:5555:6666:7777:8888: should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:7777:8888:"));
    414         assertFalse("IPV6 1111:2222:3333:4444:5555:6666:7777: should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:7777:"));
    415         assertFalse("IPV6 1111:2222:3333:4444:5555:6666: should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:"));
    416         assertFalse("IPV6 1111:2222:3333:4444:5555: should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:"));
    417         assertFalse("IPV6 1111:2222:3333:4444: should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:"));
    418         assertFalse("IPV6 1111:2222:3333: should be invalid", validator.isValidInet6Address("1111:2222:3333:"));
    419         assertFalse("IPV6 1111:2222: should be invalid", validator.isValidInet6Address("1111:2222:"));
    420         assertFalse("IPV6 :8888 should be invalid", validator.isValidInet6Address(":8888"));
    421         assertFalse("IPV6 :7777:8888 should be invalid", validator.isValidInet6Address(":7777:8888"));
    422         assertFalse("IPV6 :6666:7777:8888 should be invalid", validator.isValidInet6Address(":6666:7777:8888"));
    423         assertFalse("IPV6 :5555:6666:7777:8888 should be invalid", validator.isValidInet6Address(":5555:6666:7777:8888"));
    424         assertFalse("IPV6 :4444:5555:6666:7777:8888 should be invalid", validator.isValidInet6Address(":4444:5555:6666:7777:8888"));
    425         assertFalse("IPV6 :3333:4444:5555:6666:7777:8888 should be invalid", validator.isValidInet6Address(":3333:4444:5555:6666:7777:8888"));
    426         assertFalse("IPV6 :2222:3333:4444:5555:6666:7777:8888 should be invalid", validator.isValidInet6Address(":2222:3333:4444:5555:6666:7777:8888"));
    427         assertFalse("IPV6 :1111:2222:3333:4444:5555:6666:7777:8888 should be invalid", validator.isValidInet6Address(":1111:2222:3333:4444:5555:6666:7777:8888"));
     412        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:7777:8888:"), "IPV6 1111:2222:3333:4444:5555:6666:7777:8888: should be invalid");
     413        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:7777:"), "IPV6 1111:2222:3333:4444:5555:6666:7777: should be invalid");
     414        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:"), "IPV6 1111:2222:3333:4444:5555:6666: should be invalid");
     415        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:"), "IPV6 1111:2222:3333:4444:5555: should be invalid");
     416        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:"), "IPV6 1111:2222:3333:4444: should be invalid");
     417        assertFalse(validator.isValidInet6Address("1111:2222:3333:"), "IPV6 1111:2222:3333: should be invalid");
     418        assertFalse(validator.isValidInet6Address("1111:2222:"), "IPV6 1111:2222: should be invalid");
     419        assertFalse(validator.isValidInet6Address(":8888"), "IPV6 :8888 should be invalid");
     420        assertFalse(validator.isValidInet6Address(":7777:8888"), "IPV6 :7777:8888 should be invalid");
     421        assertFalse(validator.isValidInet6Address(":6666:7777:8888"), "IPV6 :6666:7777:8888 should be invalid");
     422        assertFalse(validator.isValidInet6Address(":5555:6666:7777:8888"), "IPV6 :5555:6666:7777:8888 should be invalid");
     423        assertFalse(validator.isValidInet6Address(":4444:5555:6666:7777:8888"), "IPV6 :4444:5555:6666:7777:8888 should be invalid");
     424        assertFalse(validator.isValidInet6Address(":3333:4444:5555:6666:7777:8888"), "IPV6 :3333:4444:5555:6666:7777:8888 should be invalid");
     425        assertFalse(validator.isValidInet6Address(":2222:3333:4444:5555:6666:7777:8888"), "IPV6 :2222:3333:4444:5555:6666:7777:8888 should be invalid");
     426        assertFalse(validator.isValidInet6Address(":1111:2222:3333:4444:5555:6666:7777:8888"), "IPV6 :1111:2222:3333:4444:5555:6666:7777:8888 should be invalid");
    428427        // :::
    429         assertFalse("IPV6 :::2222:3333:4444:5555:6666:7777:8888 should be invalid", validator.isValidInet6Address(":::2222:3333:4444:5555:6666:7777:8888"));
    430         assertFalse("IPV6 1111:::3333:4444:5555:6666:7777:8888 should be invalid", validator.isValidInet6Address("1111:::3333:4444:5555:6666:7777:8888"));
    431         assertFalse("IPV6 1111:2222:::4444:5555:6666:7777:8888 should be invalid", validator.isValidInet6Address("1111:2222:::4444:5555:6666:7777:8888"));
    432         assertFalse("IPV6 1111:2222:3333:::5555:6666:7777:8888 should be invalid", validator.isValidInet6Address("1111:2222:3333:::5555:6666:7777:8888"));
    433         assertFalse("IPV6 1111:2222:3333:4444:::6666:7777:8888 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:::6666:7777:8888"));
    434         assertFalse("IPV6 1111:2222:3333:4444:5555:::7777:8888 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:::7777:8888"));
    435         assertFalse("IPV6 1111:2222:3333:4444:5555:6666:::8888 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:::8888"));
    436         assertFalse("IPV6 1111:2222:3333:4444:5555:6666:7777::: should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:7777:::"));
     428        assertFalse(validator.isValidInet6Address(":::2222:3333:4444:5555:6666:7777:8888"), "IPV6 :::2222:3333:4444:5555:6666:7777:8888 should be invalid");
     429        assertFalse(validator.isValidInet6Address("1111:::3333:4444:5555:6666:7777:8888"), "IPV6 1111:::3333:4444:5555:6666:7777:8888 should be invalid");
     430        assertFalse(validator.isValidInet6Address("1111:2222:::4444:5555:6666:7777:8888"), "IPV6 1111:2222:::4444:5555:6666:7777:8888 should be invalid");
     431        assertFalse(validator.isValidInet6Address("1111:2222:3333:::5555:6666:7777:8888"), "IPV6 1111:2222:3333:::5555:6666:7777:8888 should be invalid");
     432        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:::6666:7777:8888"), "IPV6 1111:2222:3333:4444:::6666:7777:8888 should be invalid");
     433        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:::7777:8888"), "IPV6 1111:2222:3333:4444:5555:::7777:8888 should be invalid");
     434        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:::8888"), "IPV6 1111:2222:3333:4444:5555:6666:::8888 should be invalid");
     435        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:7777:::"), "IPV6 1111:2222:3333:4444:5555:6666:7777::: should be invalid");
    437436        // Double ::
    438         assertFalse("IPV6 ::2222::4444:5555:6666:7777:8888 should be invalid", validator.isValidInet6Address("::2222::4444:5555:6666:7777:8888"));
    439         assertFalse("IPV6 ::2222:3333::5555:6666:7777:8888 should be invalid", validator.isValidInet6Address("::2222:3333::5555:6666:7777:8888"));
    440         assertFalse("IPV6 ::2222:3333:4444::6666:7777:8888 should be invalid", validator.isValidInet6Address("::2222:3333:4444::6666:7777:8888"));
    441         assertFalse("IPV6 ::2222:3333:4444:5555::7777:8888 should be invalid", validator.isValidInet6Address("::2222:3333:4444:5555::7777:8888"));
    442         assertFalse("IPV6 ::2222:3333:4444:5555:7777::8888 should be invalid", validator.isValidInet6Address("::2222:3333:4444:5555:7777::8888"));
    443         assertFalse("IPV6 ::2222:3333:4444:5555:7777:8888:: should be invalid", validator.isValidInet6Address("::2222:3333:4444:5555:7777:8888::"));
    444         assertFalse("IPV6 1111::3333::5555:6666:7777:8888 should be invalid", validator.isValidInet6Address("1111::3333::5555:6666:7777:8888"));
    445         assertFalse("IPV6 1111::3333:4444::6666:7777:8888 should be invalid", validator.isValidInet6Address("1111::3333:4444::6666:7777:8888"));
    446         assertFalse("IPV6 1111::3333:4444:5555::7777:8888 should be invalid", validator.isValidInet6Address("1111::3333:4444:5555::7777:8888"));
    447         assertFalse("IPV6 1111::3333:4444:5555:6666::8888 should be invalid", validator.isValidInet6Address("1111::3333:4444:5555:6666::8888"));
    448         assertFalse("IPV6 1111::3333:4444:5555:6666:7777:: should be invalid", validator.isValidInet6Address("1111::3333:4444:5555:6666:7777::"));
    449         assertFalse("IPV6 1111:2222::4444::6666:7777:8888 should be invalid", validator.isValidInet6Address("1111:2222::4444::6666:7777:8888"));
    450         assertFalse("IPV6 1111:2222::4444:5555::7777:8888 should be invalid", validator.isValidInet6Address("1111:2222::4444:5555::7777:8888"));
    451         assertFalse("IPV6 1111:2222::4444:5555:6666::8888 should be invalid", validator.isValidInet6Address("1111:2222::4444:5555:6666::8888"));
    452         assertFalse("IPV6 1111:2222::4444:5555:6666:7777:: should be invalid", validator.isValidInet6Address("1111:2222::4444:5555:6666:7777::"));
    453         assertFalse("IPV6 1111:2222:3333::5555::7777:8888 should be invalid", validator.isValidInet6Address("1111:2222:3333::5555::7777:8888"));
    454         assertFalse("IPV6 1111:2222:3333::5555:6666::8888 should be invalid", validator.isValidInet6Address("1111:2222:3333::5555:6666::8888"));
    455         assertFalse("IPV6 1111:2222:3333::5555:6666:7777:: should be invalid", validator.isValidInet6Address("1111:2222:3333::5555:6666:7777::"));
    456         assertFalse("IPV6 1111:2222:3333:4444::6666::8888 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444::6666::8888"));
    457         assertFalse("IPV6 1111:2222:3333:4444::6666:7777:: should be invalid", validator.isValidInet6Address("1111:2222:3333:4444::6666:7777::"));
    458         assertFalse("IPV6 1111:2222:3333:4444:5555::7777:: should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555::7777::"));
     437        assertFalse(validator.isValidInet6Address("::2222::4444:5555:6666:7777:8888"), "IPV6 ::2222::4444:5555:6666:7777:8888 should be invalid");
     438        assertFalse(validator.isValidInet6Address("::2222:3333::5555:6666:7777:8888"), "IPV6 ::2222:3333::5555:6666:7777:8888 should be invalid");
     439        assertFalse(validator.isValidInet6Address("::2222:3333:4444::6666:7777:8888"), "IPV6 ::2222:3333:4444::6666:7777:8888 should be invalid");
     440        assertFalse(validator.isValidInet6Address("::2222:3333:4444:5555::7777:8888"), "IPV6 ::2222:3333:4444:5555::7777:8888 should be invalid");
     441        assertFalse(validator.isValidInet6Address("::2222:3333:4444:5555:7777::8888"), "IPV6 ::2222:3333:4444:5555:7777::8888 should be invalid");
     442        assertFalse(validator.isValidInet6Address("::2222:3333:4444:5555:7777:8888::"), "IPV6 ::2222:3333:4444:5555:7777:8888:: should be invalid");
     443        assertFalse(validator.isValidInet6Address("1111::3333::5555:6666:7777:8888"), "IPV6 1111::3333::5555:6666:7777:8888 should be invalid");
     444        assertFalse(validator.isValidInet6Address("1111::3333:4444::6666:7777:8888"), "IPV6 1111::3333:4444::6666:7777:8888 should be invalid");
     445        assertFalse(validator.isValidInet6Address("1111::3333:4444:5555::7777:8888"), "IPV6 1111::3333:4444:5555::7777:8888 should be invalid");
     446        assertFalse(validator.isValidInet6Address("1111::3333:4444:5555:6666::8888"), "IPV6 1111::3333:4444:5555:6666::8888 should be invalid");
     447        assertFalse(validator.isValidInet6Address("1111::3333:4444:5555:6666:7777::"), "IPV6 1111::3333:4444:5555:6666:7777:: should be invalid");
     448        assertFalse(validator.isValidInet6Address("1111:2222::4444::6666:7777:8888"), "IPV6 1111:2222::4444::6666:7777:8888 should be invalid");
     449        assertFalse(validator.isValidInet6Address("1111:2222::4444:5555::7777:8888"), "IPV6 1111:2222::4444:5555::7777:8888 should be invalid");
     450        assertFalse(validator.isValidInet6Address("1111:2222::4444:5555:6666::8888"), "IPV6 1111:2222::4444:5555:6666::8888 should be invalid");
     451        assertFalse(validator.isValidInet6Address("1111:2222::4444:5555:6666:7777::"), "IPV6 1111:2222::4444:5555:6666:7777:: should be invalid");
     452        assertFalse(validator.isValidInet6Address("1111:2222:3333::5555::7777:8888"), "IPV6 1111:2222:3333::5555::7777:8888 should be invalid");
     453        assertFalse(validator.isValidInet6Address("1111:2222:3333::5555:6666::8888"), "IPV6 1111:2222:3333::5555:6666::8888 should be invalid");
     454        assertFalse(validator.isValidInet6Address("1111:2222:3333::5555:6666:7777::"), "IPV6 1111:2222:3333::5555:6666:7777:: should be invalid");
     455        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444::6666::8888"), "IPV6 1111:2222:3333:4444::6666::8888 should be invalid");
     456        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444::6666:7777::"), "IPV6 1111:2222:3333:4444::6666:7777:: should be invalid");
     457        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555::7777::"), "IPV6 1111:2222:3333:4444:5555::7777:: should be invalid");
    459458        // Too many components"
    460         assertFalse("IPV6 1111:2222:3333:4444:5555:6666:7777:8888:1.2.3.4 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:7777:8888:1.2.3.4"));
    461         assertFalse("IPV6 1111:2222:3333:4444:5555:6666:7777:1.2.3.4 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:7777:1.2.3.4"));
    462         assertFalse("IPV6 1111:2222:3333:4444:5555:6666::1.2.3.4 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666::1.2.3.4"));
    463         assertFalse("IPV6 ::2222:3333:4444:5555:6666:7777:1.2.3.4 should be invalid", validator.isValidInet6Address("::2222:3333:4444:5555:6666:7777:1.2.3.4"));
    464         assertFalse("IPV6 1111:2222:3333:4444:5555:6666:1.2.3.4.5 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:1.2.3.4.5"));
     459        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:7777:8888:1.2.3.4"), "IPV6 1111:2222:3333:4444:5555:6666:7777:8888:1.2.3.4 should be invalid");
     460        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:7777:1.2.3.4"), "IPV6 1111:2222:3333:4444:5555:6666:7777:1.2.3.4 should be invalid");
     461        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666::1.2.3.4"), "IPV6 1111:2222:3333:4444:5555:6666::1.2.3.4 should be invalid");
     462        assertFalse(validator.isValidInet6Address("::2222:3333:4444:5555:6666:7777:1.2.3.4"), "IPV6 ::2222:3333:4444:5555:6666:7777:1.2.3.4 should be invalid");
     463        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:1.2.3.4.5"), "IPV6 1111:2222:3333:4444:5555:6666:1.2.3.4.5 should be invalid");
    465464        // Too few components
    466         assertFalse("IPV6 1111:2222:3333:4444:5555:1.2.3.4 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:1.2.3.4"));
    467         assertFalse("IPV6 1111:2222:3333:4444:1.2.3.4 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:1.2.3.4"));
    468         assertFalse("IPV6 1111:2222:3333:1.2.3.4 should be invalid", validator.isValidInet6Address("1111:2222:3333:1.2.3.4"));
    469         assertFalse("IPV6 1111:2222:1.2.3.4 should be invalid", validator.isValidInet6Address("1111:2222:1.2.3.4"));
    470         assertFalse("IPV6 1111:1.2.3.4 should be invalid", validator.isValidInet6Address("1111:1.2.3.4"));
    471         assertFalse("IPV6 1.2.3.4 should be invalid", validator.isValidInet6Address("1.2.3.4"));
     465        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:1.2.3.4"), "IPV6 1111:2222:3333:4444:5555:1.2.3.4 should be invalid");
     466        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:1.2.3.4"), "IPV6 1111:2222:3333:4444:1.2.3.4 should be invalid");
     467        assertFalse(validator.isValidInet6Address("1111:2222:3333:1.2.3.4"), "IPV6 1111:2222:3333:1.2.3.4 should be invalid");
     468        assertFalse(validator.isValidInet6Address("1111:2222:1.2.3.4"), "IPV6 1111:2222:1.2.3.4 should be invalid");
     469        assertFalse(validator.isValidInet6Address("1111:1.2.3.4"), "IPV6 1111:1.2.3.4 should be invalid");
     470        assertFalse(validator.isValidInet6Address("1.2.3.4"), "IPV6 1.2.3.4 should be invalid");
    472471        // Missing :
    473         assertFalse("IPV6 11112222:3333:4444:5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address("11112222:3333:4444:5555:6666:1.2.3.4"));
    474         assertFalse("IPV6 1111:22223333:4444:5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address("1111:22223333:4444:5555:6666:1.2.3.4"));
    475         assertFalse("IPV6 1111:2222:33334444:5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address("1111:2222:33334444:5555:6666:1.2.3.4"));
    476         assertFalse("IPV6 1111:2222:3333:44445555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address("1111:2222:3333:44445555:6666:1.2.3.4"));
    477         assertFalse("IPV6 1111:2222:3333:4444:55556666:1.2.3.4 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:55556666:1.2.3.4"));
    478         assertFalse("IPV6 1111:2222:3333:4444:5555:66661.2.3.4 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:66661.2.3.4"));
     472        assertFalse(validator.isValidInet6Address("11112222:3333:4444:5555:6666:1.2.3.4"), "IPV6 11112222:3333:4444:5555:6666:1.2.3.4 should be invalid");
     473        assertFalse(validator.isValidInet6Address("1111:22223333:4444:5555:6666:1.2.3.4"), "IPV6 1111:22223333:4444:5555:6666:1.2.3.4 should be invalid");
     474        assertFalse(validator.isValidInet6Address("1111:2222:33334444:5555:6666:1.2.3.4"), "IPV6 1111:2222:33334444:5555:6666:1.2.3.4 should be invalid");
     475        assertFalse(validator.isValidInet6Address("1111:2222:3333:44445555:6666:1.2.3.4"), "IPV6 1111:2222:3333:44445555:6666:1.2.3.4 should be invalid");
     476        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:55556666:1.2.3.4"), "IPV6 1111:2222:3333:4444:55556666:1.2.3.4 should be invalid");
     477        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:66661.2.3.4"), "IPV6 1111:2222:3333:4444:5555:66661.2.3.4 should be invalid");
    479478        // Missing .
    480         assertFalse("IPV6 1111:2222:3333:4444:5555:6666:255255.255.255 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:255255.255.255"));
    481         assertFalse("IPV6 1111:2222:3333:4444:5555:6666:255.255255.255 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:255.255255.255"));
    482         assertFalse("IPV6 1111:2222:3333:4444:5555:6666:255.255.255255 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:255.255.255255"));
     479        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:255255.255.255"), "IPV6 1111:2222:3333:4444:5555:6666:255255.255.255 should be invalid");
     480        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:255.255255.255"), "IPV6 1111:2222:3333:4444:5555:6666:255.255255.255 should be invalid");
     481        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:255.255.255255"), "IPV6 1111:2222:3333:4444:5555:6666:255.255.255255 should be invalid");
    483482        // Missing : intended for ::
    484         assertFalse("IPV6 :1.2.3.4 should be invalid", validator.isValidInet6Address(":1.2.3.4"));
    485         assertFalse("IPV6 :6666:1.2.3.4 should be invalid", validator.isValidInet6Address(":6666:1.2.3.4"));
    486         assertFalse("IPV6 :5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address(":5555:6666:1.2.3.4"));
    487         assertFalse("IPV6 :4444:5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address(":4444:5555:6666:1.2.3.4"));
    488         assertFalse("IPV6 :3333:4444:5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address(":3333:4444:5555:6666:1.2.3.4"));
    489         assertFalse("IPV6 :2222:3333:4444:5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address(":2222:3333:4444:5555:6666:1.2.3.4"));
    490         assertFalse("IPV6 :1111:2222:3333:4444:5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address(":1111:2222:3333:4444:5555:6666:1.2.3.4"));
     483        assertFalse(validator.isValidInet6Address(":1.2.3.4"), "IPV6 :1.2.3.4 should be invalid");
     484        assertFalse(validator.isValidInet6Address(":6666:1.2.3.4"), "IPV6 :6666:1.2.3.4 should be invalid");
     485        assertFalse(validator.isValidInet6Address(":5555:6666:1.2.3.4"), "IPV6 :5555:6666:1.2.3.4 should be invalid");
     486        assertFalse(validator.isValidInet6Address(":4444:5555:6666:1.2.3.4"), "IPV6 :4444:5555:6666:1.2.3.4 should be invalid");
     487        assertFalse(validator.isValidInet6Address(":3333:4444:5555:6666:1.2.3.4"), "IPV6 :3333:4444:5555:6666:1.2.3.4 should be invalid");
     488        assertFalse(validator.isValidInet6Address(":2222:3333:4444:5555:6666:1.2.3.4"), "IPV6 :2222:3333:4444:5555:6666:1.2.3.4 should be invalid");
     489        assertFalse(validator.isValidInet6Address(":1111:2222:3333:4444:5555:6666:1.2.3.4"), "IPV6 :1111:2222:3333:4444:5555:6666:1.2.3.4 should be invalid");
    491490        // :::
    492         assertFalse("IPV6 :::2222:3333:4444:5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address(":::2222:3333:4444:5555:6666:1.2.3.4"));
    493         assertFalse("IPV6 1111:::3333:4444:5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address("1111:::3333:4444:5555:6666:1.2.3.4"));
    494         assertFalse("IPV6 1111:2222:::4444:5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address("1111:2222:::4444:5555:6666:1.2.3.4"));
    495         assertFalse("IPV6 1111:2222:3333:::5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address("1111:2222:3333:::5555:6666:1.2.3.4"));
    496         assertFalse("IPV6 1111:2222:3333:4444:::6666:1.2.3.4 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:::6666:1.2.3.4"));
    497         assertFalse("IPV6 1111:2222:3333:4444:5555:::1.2.3.4 should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:::1.2.3.4"));
     491        assertFalse(validator.isValidInet6Address(":::2222:3333:4444:5555:6666:1.2.3.4"), "IPV6 :::2222:3333:4444:5555:6666:1.2.3.4 should be invalid");
     492        assertFalse(validator.isValidInet6Address("1111:::3333:4444:5555:6666:1.2.3.4"), "IPV6 1111:::3333:4444:5555:6666:1.2.3.4 should be invalid");
     493        assertFalse(validator.isValidInet6Address("1111:2222:::4444:5555:6666:1.2.3.4"), "IPV6 1111:2222:::4444:5555:6666:1.2.3.4 should be invalid");
     494        assertFalse(validator.isValidInet6Address("1111:2222:3333:::5555:6666:1.2.3.4"), "IPV6 1111:2222:3333:::5555:6666:1.2.3.4 should be invalid");
     495        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:::6666:1.2.3.4"), "IPV6 1111:2222:3333:4444:::6666:1.2.3.4 should be invalid");
     496        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:::1.2.3.4"), "IPV6 1111:2222:3333:4444:5555:::1.2.3.4 should be invalid");
    498497        // Double ::
    499         assertFalse("IPV6 ::2222::4444:5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address("::2222::4444:5555:6666:1.2.3.4"));
    500         assertFalse("IPV6 ::2222:3333::5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address("::2222:3333::5555:6666:1.2.3.4"));
    501         assertFalse("IPV6 ::2222:3333:4444::6666:1.2.3.4 should be invalid", validator.isValidInet6Address("::2222:3333:4444::6666:1.2.3.4"));
    502         assertFalse("IPV6 ::2222:3333:4444:5555::1.2.3.4 should be invalid", validator.isValidInet6Address("::2222:3333:4444:5555::1.2.3.4"));
    503         assertFalse("IPV6 1111::3333::5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address("1111::3333::5555:6666:1.2.3.4"));
    504         assertFalse("IPV6 1111::3333:4444::6666:1.2.3.4 should be invalid", validator.isValidInet6Address("1111::3333:4444::6666:1.2.3.4"));
    505         assertFalse("IPV6 1111::3333:4444:5555::1.2.3.4 should be invalid", validator.isValidInet6Address("1111::3333:4444:5555::1.2.3.4"));
    506         assertFalse("IPV6 1111:2222::4444::6666:1.2.3.4 should be invalid", validator.isValidInet6Address("1111:2222::4444::6666:1.2.3.4"));
    507         assertFalse("IPV6 1111:2222::4444:5555::1.2.3.4 should be invalid", validator.isValidInet6Address("1111:2222::4444:5555::1.2.3.4"));
    508         assertFalse("IPV6 1111:2222:3333::5555::1.2.3.4 should be invalid", validator.isValidInet6Address("1111:2222:3333::5555::1.2.3.4"));
     498        assertFalse(validator.isValidInet6Address("::2222::4444:5555:6666:1.2.3.4"), "IPV6 ::2222::4444:5555:6666:1.2.3.4 should be invalid");
     499        assertFalse(validator.isValidInet6Address("::2222:3333::5555:6666:1.2.3.4"), "IPV6 ::2222:3333::5555:6666:1.2.3.4 should be invalid");
     500        assertFalse(validator.isValidInet6Address("::2222:3333:4444::6666:1.2.3.4"), "IPV6 ::2222:3333:4444::6666:1.2.3.4 should be invalid");
     501        assertFalse(validator.isValidInet6Address("::2222:3333:4444:5555::1.2.3.4"), "IPV6 ::2222:3333:4444:5555::1.2.3.4 should be invalid");
     502        assertFalse(validator.isValidInet6Address("1111::3333::5555:6666:1.2.3.4"), "IPV6 1111::3333::5555:6666:1.2.3.4 should be invalid");
     503        assertFalse(validator.isValidInet6Address("1111::3333:4444::6666:1.2.3.4"), "IPV6 1111::3333:4444::6666:1.2.3.4 should be invalid");
     504        assertFalse(validator.isValidInet6Address("1111::3333:4444:5555::1.2.3.4"), "IPV6 1111::3333:4444:5555::1.2.3.4 should be invalid");
     505        assertFalse(validator.isValidInet6Address("1111:2222::4444::6666:1.2.3.4"), "IPV6 1111:2222::4444::6666:1.2.3.4 should be invalid");
     506        assertFalse(validator.isValidInet6Address("1111:2222::4444:5555::1.2.3.4"), "IPV6 1111:2222::4444:5555::1.2.3.4 should be invalid");
     507        assertFalse(validator.isValidInet6Address("1111:2222:3333::5555::1.2.3.4"), "IPV6 1111:2222:3333::5555::1.2.3.4 should be invalid");
    509508        // Missing parts
    510         assertFalse("IPV6 ::. should be invalid", validator.isValidInet6Address("::."));
    511         assertFalse("IPV6 ::.. should be invalid", validator.isValidInet6Address("::.."));
    512         assertFalse("IPV6 ::... should be invalid", validator.isValidInet6Address("::..."));
    513         assertFalse("IPV6 ::1... should be invalid", validator.isValidInet6Address("::1..."));
    514         assertFalse("IPV6 ::1.2.. should be invalid", validator.isValidInet6Address("::1.2.."));
    515         assertFalse("IPV6 ::1.2.3. should be invalid", validator.isValidInet6Address("::1.2.3."));
    516         assertFalse("IPV6 ::.2.. should be invalid", validator.isValidInet6Address("::.2.."));
    517         assertFalse("IPV6 ::.2.3. should be invalid", validator.isValidInet6Address("::.2.3."));
    518         assertFalse("IPV6 ::.2.3.4 should be invalid", validator.isValidInet6Address("::.2.3.4"));
    519         assertFalse("IPV6 ::..3. should be invalid", validator.isValidInet6Address("::..3."));
    520         assertFalse("IPV6 ::..3.4 should be invalid", validator.isValidInet6Address("::..3.4"));
    521         assertFalse("IPV6 ::...4 should be invalid", validator.isValidInet6Address("::...4"));
     509        assertFalse(validator.isValidInet6Address("::."), "IPV6 ::. should be invalid");
     510        assertFalse(validator.isValidInet6Address("::.."), "IPV6 ::.. should be invalid");
     511        assertFalse(validator.isValidInet6Address("::..."), "IPV6 ::... should be invalid");
     512        assertFalse(validator.isValidInet6Address("::1..."), "IPV6 ::1... should be invalid");
     513        assertFalse(validator.isValidInet6Address("::1.2.."), "IPV6 ::1.2.. should be invalid");
     514        assertFalse(validator.isValidInet6Address("::1.2.3."), "IPV6 ::1.2.3. should be invalid");
     515        assertFalse(validator.isValidInet6Address("::.2.."), "IPV6 ::.2.. should be invalid");
     516        assertFalse(validator.isValidInet6Address("::.2.3."), "IPV6 ::.2.3. should be invalid");
     517        assertFalse(validator.isValidInet6Address("::.2.3.4"), "IPV6 ::.2.3.4 should be invalid");
     518        assertFalse(validator.isValidInet6Address("::..3."), "IPV6 ::..3. should be invalid");
     519        assertFalse(validator.isValidInet6Address("::..3.4"), "IPV6 ::..3.4 should be invalid");
     520        assertFalse(validator.isValidInet6Address("::...4"), "IPV6 ::...4 should be invalid");
    522521        // Extra : in front
    523         assertFalse("IPV6 :1111:2222:3333:4444:5555:6666:7777:: should be invalid", validator.isValidInet6Address(":1111:2222:3333:4444:5555:6666:7777::"));
    524         assertFalse("IPV6 :1111:2222:3333:4444:5555:6666:: should be invalid", validator.isValidInet6Address(":1111:2222:3333:4444:5555:6666::"));
    525         assertFalse("IPV6 :1111:2222:3333:4444:5555:: should be invalid", validator.isValidInet6Address(":1111:2222:3333:4444:5555::"));
    526         assertFalse("IPV6 :1111:2222:3333:4444:: should be invalid", validator.isValidInet6Address(":1111:2222:3333:4444::"));
    527         assertFalse("IPV6 :1111:2222:3333:: should be invalid", validator.isValidInet6Address(":1111:2222:3333::"));
    528         assertFalse("IPV6 :1111:2222:: should be invalid", validator.isValidInet6Address(":1111:2222::"));
    529         assertFalse("IPV6 :1111:: should be invalid", validator.isValidInet6Address(":1111::"));
    530         assertFalse("IPV6 :1111:2222:3333:4444:5555:6666::8888 should be invalid", validator.isValidInet6Address(":1111:2222:3333:4444:5555:6666::8888"));
    531         assertFalse("IPV6 :1111:2222:3333:4444:5555::8888 should be invalid", validator.isValidInet6Address(":1111:2222:3333:4444:5555::8888"));
    532         assertFalse("IPV6 :1111:2222:3333:4444::8888 should be invalid", validator.isValidInet6Address(":1111:2222:3333:4444::8888"));
    533         assertFalse("IPV6 :1111:2222:3333::8888 should be invalid", validator.isValidInet6Address(":1111:2222:3333::8888"));
    534         assertFalse("IPV6 :1111:2222::8888 should be invalid", validator.isValidInet6Address(":1111:2222::8888"));
    535         assertFalse("IPV6 :1111::8888 should be invalid", validator.isValidInet6Address(":1111::8888"));
    536         assertFalse("IPV6 :::8888 should be invalid", validator.isValidInet6Address(":::8888"));
    537         assertFalse("IPV6 :1111:2222:3333:4444:5555::7777:8888 should be invalid", validator.isValidInet6Address(":1111:2222:3333:4444:5555::7777:8888"));
    538         assertFalse("IPV6 :1111:2222:3333:4444::7777:8888 should be invalid", validator.isValidInet6Address(":1111:2222:3333:4444::7777:8888"));
    539         assertFalse("IPV6 :1111:2222:3333::7777:8888 should be invalid", validator.isValidInet6Address(":1111:2222:3333::7777:8888"));
    540         assertFalse("IPV6 :1111:2222::7777:8888 should be invalid", validator.isValidInet6Address(":1111:2222::7777:8888"));
    541         assertFalse("IPV6 :1111::7777:8888 should be invalid", validator.isValidInet6Address(":1111::7777:8888"));
    542         assertFalse("IPV6 :::7777:8888 should be invalid", validator.isValidInet6Address(":::7777:8888"));
    543         assertFalse("IPV6 :1111:2222:3333:4444::6666:7777:8888 should be invalid", validator.isValidInet6Address(":1111:2222:3333:4444::6666:7777:8888"));
    544         assertFalse("IPV6 :1111:2222:3333::6666:7777:8888 should be invalid", validator.isValidInet6Address(":1111:2222:3333::6666:7777:8888"));
    545         assertFalse("IPV6 :1111:2222::6666:7777:8888 should be invalid", validator.isValidInet6Address(":1111:2222::6666:7777:8888"));
    546         assertFalse("IPV6 :1111::6666:7777:8888 should be invalid", validator.isValidInet6Address(":1111::6666:7777:8888"));
    547         assertFalse("IPV6 :::6666:7777:8888 should be invalid", validator.isValidInet6Address(":::6666:7777:8888"));
    548         assertFalse("IPV6 :1111:2222:3333::5555:6666:7777:8888 should be invalid", validator.isValidInet6Address(":1111:2222:3333::5555:6666:7777:8888"));
    549         assertFalse("IPV6 :1111:2222::5555:6666:7777:8888 should be invalid", validator.isValidInet6Address(":1111:2222::5555:6666:7777:8888"));
    550         assertFalse("IPV6 :1111::5555:6666:7777:8888 should be invalid", validator.isValidInet6Address(":1111::5555:6666:7777:8888"));
    551         assertFalse("IPV6 :::5555:6666:7777:8888 should be invalid", validator.isValidInet6Address(":::5555:6666:7777:8888"));
    552         assertFalse("IPV6 :1111:2222::4444:5555:6666:7777:8888 should be invalid", validator.isValidInet6Address(":1111:2222::4444:5555:6666:7777:8888"));
    553         assertFalse("IPV6 :1111::4444:5555:6666:7777:8888 should be invalid", validator.isValidInet6Address(":1111::4444:5555:6666:7777:8888"));
    554         assertFalse("IPV6 :::4444:5555:6666:7777:8888 should be invalid", validator.isValidInet6Address(":::4444:5555:6666:7777:8888"));
    555         assertFalse("IPV6 :1111::3333:4444:5555:6666:7777:8888 should be invalid", validator.isValidInet6Address(":1111::3333:4444:5555:6666:7777:8888"));
    556         assertFalse("IPV6 :::3333:4444:5555:6666:7777:8888 should be invalid", validator.isValidInet6Address(":::3333:4444:5555:6666:7777:8888"));
    557         assertFalse("IPV6 :::2222:3333:4444:5555:6666:7777:8888 should be invalid", validator.isValidInet6Address(":::2222:3333:4444:5555:6666:7777:8888"));
    558         assertFalse("IPV6 :1111:2222:3333:4444:5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address(":1111:2222:3333:4444:5555:6666:1.2.3.4"));
    559         assertFalse("IPV6 :1111:2222:3333:4444:5555::1.2.3.4 should be invalid", validator.isValidInet6Address(":1111:2222:3333:4444:5555::1.2.3.4"));
    560         assertFalse("IPV6 :1111:2222:3333:4444::1.2.3.4 should be invalid", validator.isValidInet6Address(":1111:2222:3333:4444::1.2.3.4"));
    561         assertFalse("IPV6 :1111:2222:3333::1.2.3.4 should be invalid", validator.isValidInet6Address(":1111:2222:3333::1.2.3.4"));
    562         assertFalse("IPV6 :1111:2222::1.2.3.4 should be invalid", validator.isValidInet6Address(":1111:2222::1.2.3.4"));
    563         assertFalse("IPV6 :1111::1.2.3.4 should be invalid", validator.isValidInet6Address(":1111::1.2.3.4"));
    564         assertFalse("IPV6 :::1.2.3.4 should be invalid", validator.isValidInet6Address(":::1.2.3.4"));
    565         assertFalse("IPV6 :1111:2222:3333:4444::6666:1.2.3.4 should be invalid", validator.isValidInet6Address(":1111:2222:3333:4444::6666:1.2.3.4"));
    566         assertFalse("IPV6 :1111:2222:3333::6666:1.2.3.4 should be invalid", validator.isValidInet6Address(":1111:2222:3333::6666:1.2.3.4"));
    567         assertFalse("IPV6 :1111:2222::6666:1.2.3.4 should be invalid", validator.isValidInet6Address(":1111:2222::6666:1.2.3.4"));
    568         assertFalse("IPV6 :1111::6666:1.2.3.4 should be invalid", validator.isValidInet6Address(":1111::6666:1.2.3.4"));
    569         assertFalse("IPV6 :::6666:1.2.3.4 should be invalid", validator.isValidInet6Address(":::6666:1.2.3.4"));
    570         assertFalse("IPV6 :1111:2222:3333::5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address(":1111:2222:3333::5555:6666:1.2.3.4"));
    571         assertFalse("IPV6 :1111:2222::5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address(":1111:2222::5555:6666:1.2.3.4"));
    572         assertFalse("IPV6 :1111::5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address(":1111::5555:6666:1.2.3.4"));
    573         assertFalse("IPV6 :::5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address(":::5555:6666:1.2.3.4"));
    574         assertFalse("IPV6 :1111:2222::4444:5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address(":1111:2222::4444:5555:6666:1.2.3.4"));
    575         assertFalse("IPV6 :1111::4444:5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address(":1111::4444:5555:6666:1.2.3.4"));
    576         assertFalse("IPV6 :::4444:5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address(":::4444:5555:6666:1.2.3.4"));
    577         assertFalse("IPV6 :1111::3333:4444:5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address(":1111::3333:4444:5555:6666:1.2.3.4"));
    578         assertFalse("IPV6 :::2222:3333:4444:5555:6666:1.2.3.4 should be invalid", validator.isValidInet6Address(":::2222:3333:4444:5555:6666:1.2.3.4"));
     522        assertFalse(validator.isValidInet6Address(":1111:2222:3333:4444:5555:6666:7777::"), "IPV6 :1111:2222:3333:4444:5555:6666:7777:: should be invalid");
     523        assertFalse(validator.isValidInet6Address(":1111:2222:3333:4444:5555:6666::"), "IPV6 :1111:2222:3333:4444:5555:6666:: should be invalid");
     524        assertFalse(validator.isValidInet6Address(":1111:2222:3333:4444:5555::"), "IPV6 :1111:2222:3333:4444:5555:: should be invalid");
     525        assertFalse(validator.isValidInet6Address(":1111:2222:3333:4444::"), "IPV6 :1111:2222:3333:4444:: should be invalid");
     526        assertFalse(validator.isValidInet6Address(":1111:2222:3333::"), "IPV6 :1111:2222:3333:: should be invalid");
     527        assertFalse(validator.isValidInet6Address(":1111:2222::"), "IPV6 :1111:2222:: should be invalid");
     528        assertFalse(validator.isValidInet6Address(":1111::"), "IPV6 :1111:: should be invalid");
     529        assertFalse(validator.isValidInet6Address(":1111:2222:3333:4444:5555:6666::8888"), "IPV6 :1111:2222:3333:4444:5555:6666::8888 should be invalid");
     530        assertFalse(validator.isValidInet6Address(":1111:2222:3333:4444:5555::8888"), "IPV6 :1111:2222:3333:4444:5555::8888 should be invalid");
     531        assertFalse(validator.isValidInet6Address(":1111:2222:3333:4444::8888"), "IPV6 :1111:2222:3333:4444::8888 should be invalid");
     532        assertFalse(validator.isValidInet6Address(":1111:2222:3333::8888"), "IPV6 :1111:2222:3333::8888 should be invalid");
     533        assertFalse(validator.isValidInet6Address(":1111:2222::8888"), "IPV6 :1111:2222::8888 should be invalid");
     534        assertFalse(validator.isValidInet6Address(":1111::8888"), "IPV6 :1111::8888 should be invalid");
     535        assertFalse(validator.isValidInet6Address(":::8888"), "IPV6 :::8888 should be invalid");
     536        assertFalse(validator.isValidInet6Address(":1111:2222:3333:4444:5555::7777:8888"), "IPV6 :1111:2222:3333:4444:5555::7777:8888 should be invalid");
     537        assertFalse(validator.isValidInet6Address(":1111:2222:3333:4444::7777:8888"), "IPV6 :1111:2222:3333:4444::7777:8888 should be invalid");
     538        assertFalse(validator.isValidInet6Address(":1111:2222:3333::7777:8888"), "IPV6 :1111:2222:3333::7777:8888 should be invalid");
     539        assertFalse(validator.isValidInet6Address(":1111:2222::7777:8888"), "IPV6 :1111:2222::7777:8888 should be invalid");
     540        assertFalse(validator.isValidInet6Address(":1111::7777:8888"), "IPV6 :1111::7777:8888 should be invalid");
     541        assertFalse(validator.isValidInet6Address(":::7777:8888"), "IPV6 :::7777:8888 should be invalid");
     542        assertFalse(validator.isValidInet6Address(":1111:2222:3333:4444::6666:7777:8888"), "IPV6 :1111:2222:3333:4444::6666:7777:8888 should be invalid");
     543        assertFalse(validator.isValidInet6Address(":1111:2222:3333::6666:7777:8888"), "IPV6 :1111:2222:3333::6666:7777:8888 should be invalid");
     544        assertFalse(validator.isValidInet6Address(":1111:2222::6666:7777:8888"), "IPV6 :1111:2222::6666:7777:8888 should be invalid");
     545        assertFalse(validator.isValidInet6Address(":1111::6666:7777:8888"), "IPV6 :1111::6666:7777:8888 should be invalid");
     546        assertFalse(validator.isValidInet6Address(":::6666:7777:8888"), "IPV6 :::6666:7777:8888 should be invalid");
     547        assertFalse(validator.isValidInet6Address(":1111:2222:3333::5555:6666:7777:8888"), "IPV6 :1111:2222:3333::5555:6666:7777:8888 should be invalid");
     548        assertFalse(validator.isValidInet6Address(":1111:2222::5555:6666:7777:8888"), "IPV6 :1111:2222::5555:6666:7777:8888 should be invalid");
     549        assertFalse(validator.isValidInet6Address(":1111::5555:6666:7777:8888"), "IPV6 :1111::5555:6666:7777:8888 should be invalid");
     550        assertFalse(validator.isValidInet6Address(":::5555:6666:7777:8888"), "IPV6 :::5555:6666:7777:8888 should be invalid");
     551        assertFalse(validator.isValidInet6Address(":1111:2222::4444:5555:6666:7777:8888"), "IPV6 :1111:2222::4444:5555:6666:7777:8888 should be invalid");
     552        assertFalse(validator.isValidInet6Address(":1111::4444:5555:6666:7777:8888"), "IPV6 :1111::4444:5555:6666:7777:8888 should be invalid");
     553        assertFalse(validator.isValidInet6Address(":::4444:5555:6666:7777:8888"), "IPV6 :::4444:5555:6666:7777:8888 should be invalid");
     554        assertFalse(validator.isValidInet6Address(":1111::3333:4444:5555:6666:7777:8888"), "IPV6 :1111::3333:4444:5555:6666:7777:8888 should be invalid");
     555        assertFalse(validator.isValidInet6Address(":::3333:4444:5555:6666:7777:8888"), "IPV6 :::3333:4444:5555:6666:7777:8888 should be invalid");
     556        assertFalse(validator.isValidInet6Address(":::2222:3333:4444:5555:6666:7777:8888"), "IPV6 :::2222:3333:4444:5555:6666:7777:8888 should be invalid");
     557        assertFalse(validator.isValidInet6Address(":1111:2222:3333:4444:5555:6666:1.2.3.4"), "IPV6 :1111:2222:3333:4444:5555:6666:1.2.3.4 should be invalid");
     558        assertFalse(validator.isValidInet6Address(":1111:2222:3333:4444:5555::1.2.3.4"), "IPV6 :1111:2222:3333:4444:5555::1.2.3.4 should be invalid");
     559        assertFalse(validator.isValidInet6Address(":1111:2222:3333:4444::1.2.3.4"), "IPV6 :1111:2222:3333:4444::1.2.3.4 should be invalid");
     560        assertFalse(validator.isValidInet6Address(":1111:2222:3333::1.2.3.4"), "IPV6 :1111:2222:3333::1.2.3.4 should be invalid");
     561        assertFalse(validator.isValidInet6Address(":1111:2222::1.2.3.4"), "IPV6 :1111:2222::1.2.3.4 should be invalid");
     562        assertFalse(validator.isValidInet6Address(":1111::1.2.3.4"), "IPV6 :1111::1.2.3.4 should be invalid");
     563        assertFalse(validator.isValidInet6Address(":::1.2.3.4"), "IPV6 :::1.2.3.4 should be invalid");
     564        assertFalse(validator.isValidInet6Address(":1111:2222:3333:4444::6666:1.2.3.4"), "IPV6 :1111:2222:3333:4444::6666:1.2.3.4 should be invalid");
     565        assertFalse(validator.isValidInet6Address(":1111:2222:3333::6666:1.2.3.4"), "IPV6 :1111:2222:3333::6666:1.2.3.4 should be invalid");
     566        assertFalse(validator.isValidInet6Address(":1111:2222::6666:1.2.3.4"), "IPV6 :1111:2222::6666:1.2.3.4 should be invalid");
     567        assertFalse(validator.isValidInet6Address(":1111::6666:1.2.3.4"), "IPV6 :1111::6666:1.2.3.4 should be invalid");
     568        assertFalse(validator.isValidInet6Address(":::6666:1.2.3.4"), "IPV6 :::6666:1.2.3.4 should be invalid");
     569        assertFalse(validator.isValidInet6Address(":1111:2222:3333::5555:6666:1.2.3.4"), "IPV6 :1111:2222:3333::5555:6666:1.2.3.4 should be invalid");
     570        assertFalse(validator.isValidInet6Address(":1111:2222::5555:6666:1.2.3.4"), "IPV6 :1111:2222::5555:6666:1.2.3.4 should be invalid");
     571        assertFalse(validator.isValidInet6Address(":1111::5555:6666:1.2.3.4"), "IPV6 :1111::5555:6666:1.2.3.4 should be invalid");
     572        assertFalse(validator.isValidInet6Address(":::5555:6666:1.2.3.4"), "IPV6 :::5555:6666:1.2.3.4 should be invalid");
     573        assertFalse(validator.isValidInet6Address(":1111:2222::4444:5555:6666:1.2.3.4"), "IPV6 :1111:2222::4444:5555:6666:1.2.3.4 should be invalid");
     574        assertFalse(validator.isValidInet6Address(":1111::4444:5555:6666:1.2.3.4"), "IPV6 :1111::4444:5555:6666:1.2.3.4 should be invalid");
     575        assertFalse(validator.isValidInet6Address(":::4444:5555:6666:1.2.3.4"), "IPV6 :::4444:5555:6666:1.2.3.4 should be invalid");
     576        assertFalse(validator.isValidInet6Address(":1111::3333:4444:5555:6666:1.2.3.4"), "IPV6 :1111::3333:4444:5555:6666:1.2.3.4 should be invalid");
     577        assertFalse(validator.isValidInet6Address(":::2222:3333:4444:5555:6666:1.2.3.4"), "IPV6 :::2222:3333:4444:5555:6666:1.2.3.4 should be invalid");
    579578        // Extra : at end
    580         assertFalse("IPV6 1111:2222:3333:4444:5555:6666:7777::: should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:7777:::"));
    581         assertFalse("IPV6 1111:2222:3333:4444:5555:6666::: should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:::"));
    582         assertFalse("IPV6 1111:2222:3333:4444:5555::: should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:::"));
    583         assertFalse("IPV6 1111:2222:3333:4444::: should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:::"));
    584         assertFalse("IPV6 1111:2222:3333::: should be invalid", validator.isValidInet6Address("1111:2222:3333:::"));
    585         assertFalse("IPV6 1111:2222::: should be invalid", validator.isValidInet6Address("1111:2222:::"));
    586         assertFalse("IPV6 1111::: should be invalid", validator.isValidInet6Address("1111:::"));
    587         assertFalse("IPV6 1111:2222:3333:4444:5555:6666::8888: should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555:6666::8888:"));
    588         assertFalse("IPV6 1111:2222:3333:4444:5555::8888: should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555::8888:"));
    589         assertFalse("IPV6 1111:2222:3333:4444::8888: should be invalid", validator.isValidInet6Address("1111:2222:3333:4444::8888:"));
    590         assertFalse("IPV6 1111:2222:3333::8888: should be invalid", validator.isValidInet6Address("1111:2222:3333::8888:"));
    591         assertFalse("IPV6 1111:2222::8888: should be invalid", validator.isValidInet6Address("1111:2222::8888:"));
    592         assertFalse("IPV6 1111::8888: should be invalid", validator.isValidInet6Address("1111::8888:"));
    593         assertFalse("IPV6 ::8888: should be invalid", validator.isValidInet6Address("::8888:"));
    594         assertFalse("IPV6 1111:2222:3333:4444:5555::7777:8888: should be invalid", validator.isValidInet6Address("1111:2222:3333:4444:5555::7777:8888:"));
    595         assertFalse("IPV6 1111:2222:3333:4444::7777:8888: should be invalid", validator.isValidInet6Address("1111:2222:3333:4444::7777:8888:"));
    596         assertFalse("IPV6 1111:2222:3333::7777:8888: should be invalid", validator.isValidInet6Address("1111:2222:3333::7777:8888:"));
    597         assertFalse("IPV6 1111:2222::7777:8888: should be invalid", validator.isValidInet6Address("1111:2222::7777:8888:"));
    598         assertFalse("IPV6 1111::7777:8888: should be invalid", validator.isValidInet6Address("1111::7777:8888:"));
    599         assertFalse("IPV6 ::7777:8888: should be invalid", validator.isValidInet6Address("::7777:8888:"));
    600         assertFalse("IPV6 1111:2222:3333:4444::6666:7777:8888: should be invalid", validator.isValidInet6Address("1111:2222:3333:4444::6666:7777:8888:"));
    601         assertFalse("IPV6 1111:2222:3333::6666:7777:8888: should be invalid", validator.isValidInet6Address("1111:2222:3333::6666:7777:8888:"));
    602         assertFalse("IPV6 1111:2222::6666:7777:8888: should be invalid", validator.isValidInet6Address("1111:2222::6666:7777:8888:"));
    603         assertFalse("IPV6 1111::6666:7777:8888: should be invalid", validator.isValidInet6Address("1111::6666:7777:8888:"));
    604         assertFalse("IPV6 ::6666:7777:8888: should be invalid", validator.isValidInet6Address("::6666:7777:8888:"));
    605         assertFalse("IPV6 1111:2222:3333::5555:6666:7777:8888: should be invalid", validator.isValidInet6Address("1111:2222:3333::5555:6666:7777:8888:"));
    606         assertFalse("IPV6 1111:2222::5555:6666:7777:8888: should be invalid", validator.isValidInet6Address("1111:2222::5555:6666:7777:8888:"));
    607         assertFalse("IPV6 1111::5555:6666:7777:8888: should be invalid", validator.isValidInet6Address("1111::5555:6666:7777:8888:"));
    608         assertFalse("IPV6 ::5555:6666:7777:8888: should be invalid", validator.isValidInet6Address("::5555:6666:7777:8888:"));
    609         assertFalse("IPV6 1111:2222::4444:5555:6666:7777:8888: should be invalid", validator.isValidInet6Address("1111:2222::4444:5555:6666:7777:8888:"));
    610         assertFalse("IPV6 1111::4444:5555:6666:7777:8888: should be invalid", validator.isValidInet6Address("1111::4444:5555:6666:7777:8888:"));
    611         assertFalse("IPV6 ::4444:5555:6666:7777:8888: should be invalid", validator.isValidInet6Address("::4444:5555:6666:7777:8888:"));
    612         assertFalse("IPV6 1111::3333:4444:5555:6666:7777:8888: should be invalid", validator.isValidInet6Address("1111::3333:4444:5555:6666:7777:8888:"));
    613         assertFalse("IPV6 ::3333:4444:5555:6666:7777:8888: should be invalid", validator.isValidInet6Address("::3333:4444:5555:6666:7777:8888:"));
    614         assertFalse("IPV6 ::2222:3333:4444:5555:6666:7777:8888: should be invalid", validator.isValidInet6Address("::2222:3333:4444:5555:6666:7777:8888:"));
    615         assertTrue("IPV6 0:a:b:c:d:e:f:: should be valid", validator.isValidInet6Address("0:a:b:c:d:e:f::"));
    616         assertTrue("IPV6 ::0:a:b:c:d:e:f should be valid", validator.isValidInet6Address("::0:a:b:c:d:e:f")); // syntactically correct, but bad form (::0:... could be combined)
    617         assertTrue("IPV6 a:b:c:d:e:f:0:: should be valid", validator.isValidInet6Address("a:b:c:d:e:f:0::"));
    618         assertFalse("IPV6 ':10.0.0.1 should be invalid", validator.isValidInet6Address("':10.0.0.1"));
     579        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:7777:::"), "IPV6 1111:2222:3333:4444:5555:6666:7777::: should be invalid");
     580        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666:::"), "IPV6 1111:2222:3333:4444:5555:6666::: should be invalid");
     581        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:::"), "IPV6 1111:2222:3333:4444:5555::: should be invalid");
     582        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:::"), "IPV6 1111:2222:3333:4444::: should be invalid");
     583        assertFalse(validator.isValidInet6Address("1111:2222:3333:::"), "IPV6 1111:2222:3333::: should be invalid");
     584        assertFalse(validator.isValidInet6Address("1111:2222:::"), "IPV6 1111:2222::: should be invalid");
     585        assertFalse(validator.isValidInet6Address("1111:::"), "IPV6 1111::: should be invalid");
     586        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555:6666::8888:"), "IPV6 1111:2222:3333:4444:5555:6666::8888: should be invalid");
     587        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555::8888:"), "IPV6 1111:2222:3333:4444:5555::8888: should be invalid");
     588        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444::8888:"), "IPV6 1111:2222:3333:4444::8888: should be invalid");
     589        assertFalse(validator.isValidInet6Address("1111:2222:3333::8888:"), "IPV6 1111:2222:3333::8888: should be invalid");
     590        assertFalse(validator.isValidInet6Address("1111:2222::8888:"), "IPV6 1111:2222::8888: should be invalid");
     591        assertFalse(validator.isValidInet6Address("1111::8888:"), "IPV6 1111::8888: should be invalid");
     592        assertFalse(validator.isValidInet6Address("::8888:"), "IPV6 ::8888: should be invalid");
     593        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444:5555::7777:8888:"), "IPV6 1111:2222:3333:4444:5555::7777:8888: should be invalid");
     594        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444::7777:8888:"), "IPV6 1111:2222:3333:4444::7777:8888: should be invalid");
     595        assertFalse(validator.isValidInet6Address("1111:2222:3333::7777:8888:"), "IPV6 1111:2222:3333::7777:8888: should be invalid");
     596        assertFalse(validator.isValidInet6Address("1111:2222::7777:8888:"), "IPV6 1111:2222::7777:8888: should be invalid");
     597        assertFalse(validator.isValidInet6Address("1111::7777:8888:"), "IPV6 1111::7777:8888: should be invalid");
     598        assertFalse(validator.isValidInet6Address("::7777:8888:"), "IPV6 ::7777:8888: should be invalid");
     599        assertFalse(validator.isValidInet6Address("1111:2222:3333:4444::6666:7777:8888:"), "IPV6 1111:2222:3333:4444::6666:7777:8888: should be invalid");
     600        assertFalse(validator.isValidInet6Address("1111:2222:3333::6666:7777:8888:"), "IPV6 1111:2222:3333::6666:7777:8888: should be invalid");
     601        assertFalse(validator.isValidInet6Address("1111:2222::6666:7777:8888:"), "IPV6 1111:2222::6666:7777:8888: should be invalid");
     602        assertFalse(validator.isValidInet6Address("1111::6666:7777:8888:"), "IPV6 1111::6666:7777:8888: should be invalid");
     603        assertFalse(validator.isValidInet6Address("::6666:7777:8888:"), "IPV6 ::6666:7777:8888: should be invalid");
     604        assertFalse(validator.isValidInet6Address("1111:2222:3333::5555:6666:7777:8888:"), "IPV6 1111:2222:3333::5555:6666:7777:8888: should be invalid");
     605        assertFalse(validator.isValidInet6Address("1111:2222::5555:6666:7777:8888:"), "IPV6 1111:2222::5555:6666:7777:8888: should be invalid");
     606        assertFalse(validator.isValidInet6Address("1111::5555:6666:7777:8888:"), "IPV6 1111::5555:6666:7777:8888: should be invalid");
     607        assertFalse(validator.isValidInet6Address("::5555:6666:7777:8888:"), "IPV6 ::5555:6666:7777:8888: should be invalid");
     608        assertFalse(validator.isValidInet6Address("1111:2222::4444:5555:6666:7777:8888:"), "IPV6 1111:2222::4444:5555:6666:7777:8888: should be invalid");
     609        assertFalse(validator.isValidInet6Address("1111::4444:5555:6666:7777:8888:"), "IPV6 1111::4444:5555:6666:7777:8888: should be invalid");
     610        assertFalse(validator.isValidInet6Address("::4444:5555:6666:7777:8888:"), "IPV6 ::4444:5555:6666:7777:8888: should be invalid");
     611        assertFalse(validator.isValidInet6Address("1111::3333:4444:5555:6666:7777:8888:"), "IPV6 1111::3333:4444:5555:6666:7777:8888: should be invalid");
     612        assertFalse(validator.isValidInet6Address("::3333:4444:5555:6666:7777:8888:"), "IPV6 ::3333:4444:5555:6666:7777:8888: should be invalid");
     613        assertFalse(validator.isValidInet6Address("::2222:3333:4444:5555:6666:7777:8888:"), "IPV6 ::2222:3333:4444:5555:6666:7777:8888: should be invalid");
     614        assertTrue(validator.isValidInet6Address("0:a:b:c:d:e:f::"), "IPV6 0:a:b:c:d:e:f:: should be valid");
     615        assertTrue(validator.isValidInet6Address("::0:a:b:c:d:e:f"), "IPV6 ::0:a:b:c:d:e:f should be valid"); // syntactically correct, but bad form (::0:... could be combined)
     616        assertTrue(validator.isValidInet6Address("a:b:c:d:e:f:0::"), "IPV6 a:b:c:d:e:f:0:: should be valid");
     617        assertFalse(validator.isValidInet6Address("':10.0.0.1"), "IPV6 ':10.0.0.1 should be invalid");
    619618    }
    620619    // CHECKSTYLE.ON: ExecutableStatementCount
  • trunk/test/unit/org/openstreetmap/josm/data/validation/routines/RegexValidatorTest.java

    r17275 r18690  
    1717package org.openstreetmap.josm.data.validation.routines;
    1818
    19 import static org.junit.Assert.assertEquals;
    20 import static org.junit.Assert.assertFalse;
    21 import static org.junit.Assert.assertNull;
    22 import static org.junit.Assert.assertTrue;
    23 import static org.junit.jupiter.api.Assertions.fail;
    24 
    25 import java.util.Arrays;
     19import static org.junit.jupiter.api.Assertions.assertArrayEquals;
     20import static org.junit.jupiter.api.Assertions.assertEquals;
     21import static org.junit.jupiter.api.Assertions.assertFalse;
     22import static org.junit.jupiter.api.Assertions.assertNull;
     23import static org.junit.jupiter.api.Assertions.assertThrows;
     24import static org.junit.jupiter.api.Assertions.assertTrue;
     25
    2626import java.util.regex.PatternSyntaxException;
    2727
     
    6060
    6161        // isValid()
    62         assertTrue("Sensitive isValid() valid",      sensitive.isValid("ac-DE-1"));
    63         assertFalse("Sensitive isValid() invalid",   sensitive.isValid("AB-de-1"));
    64         assertTrue("Insensitive isValid() valid",    insensitive.isValid("AB-de-1"));
    65         assertFalse("Insensitive isValid() invalid", insensitive.isValid("ABd-de-1"));
     62        assertTrue(sensitive.isValid("ac-DE-1"), "Sensitive isValid() valid");
     63        assertFalse(sensitive.isValid("AB-de-1"), "Sensitive isValid() invalid");
     64        assertTrue(insensitive.isValid("AB-de-1"), "Insensitive isValid() valid");
     65        assertFalse(insensitive.isValid("ABd-de-1"), "Insensitive isValid() invalid");
    6666
    6767        // validate()
    68         assertEquals("Sensitive validate() valid",   "acDE1", sensitive.validate("ac-DE-1"));
    69         assertNull("Sensitive validate() invalid",   sensitive.validate("AB-de-1"));
    70         assertEquals("Insensitive validate() valid", "ABde1", insensitive.validate("AB-de-1"));
    71         assertNull("Insensitive validate() invalid", insensitive.validate("ABd-de-1"));
     68        assertEquals("acDE1", sensitive.validate("ac-DE-1"), "Sensitive validate() valid");
     69        assertNull(sensitive.validate("AB-de-1"), "Sensitive validate() invalid");
     70        assertEquals("ABde1", insensitive.validate("AB-de-1"), "Insensitive validate() valid");
     71        assertNull(insensitive.validate("ABd-de-1"), "Insensitive validate() invalid");
    7272
    7373        // match()
    74         checkArray("Sensitive match() valid",     new String[] {"ac", "DE", "1"}, sensitive.match("ac-DE-1"));
    75         checkArray("Sensitive match() invalid",   null,                           sensitive.match("AB-de-1"));
    76         checkArray("Insensitive match() valid",   new String[] {"AB", "de", "1"}, insensitive.match("AB-de-1"));
    77         checkArray("Insensitive match() invalid", null,                           insensitive.match("ABd-de-1"));
    78         assertEquals("validate one", "ABC", (new RegexValidator("^([A-Z]*)$")).validate("ABC"));
    79         checkArray("match one", new String[] {"ABC"}, (new RegexValidator("^([A-Z]*)$")).match("ABC"));
     74        String[] result2 = sensitive.match("ac-DE-1");
     75        assertArrayEquals(new String[] {"ac", "DE", "1"}, result2, "Sensitive match() valid");
     76        assertNull(sensitive.match("AB-de-1"), "Sensitive match() invalid");
     77        String[] result1 = insensitive.match("AB-de-1");
     78        assertArrayEquals(new String[] {"AB", "de", "1"}, result1, "Insensitive match() valid");
     79        assertNull(insensitive.match("ABd-de-1"), "Insensitive match() invalid");
     80        assertEquals("ABC", (new RegexValidator("^([A-Z]*)$")).validate("ABC"), "validate one");
     81        String[] result = (new RegexValidator("^([A-Z]*)$")).match("ABC");
     82        assertArrayEquals(new String[] {"ABC"}, result, "match one");
    8083    }
    8184
     
    98101
    99102        // isValid()
    100         assertTrue("Sensitive isValid() Multiple", multiple.isValid(value));
    101         assertFalse("Sensitive isValid() 1st",     single1.isValid(value));
    102         assertTrue("Sensitive isValid() 2nd",      single2.isValid(value));
    103         assertFalse("Sensitive isValid() 3rd",     single3.isValid(value));
     103        assertTrue(multiple.isValid(value), "Sensitive isValid() Multiple");
     104        assertFalse(single1.isValid(value), "Sensitive isValid() 1st");
     105        assertTrue(single2.isValid(value), "Sensitive isValid() 2nd");
     106        assertFalse(single3.isValid(value), "Sensitive isValid() 3rd");
    104107
    105108        // validate()
    106         assertEquals("Sensitive validate() Multiple", expect, multiple.validate(value));
    107         assertNull("Sensitive validate() 1st",        single1.validate(value));
    108         assertEquals("Sensitive validate() 2nd",      expect, single2.validate(value));
    109         assertNull("Sensitive validate() 3rd",        single3.validate(value));
     109        assertEquals(expect, multiple.validate(value), "Sensitive validate() Multiple");
     110        assertNull(single1.validate(value), "Sensitive validate() 1st");
     111        assertEquals(expect, single2.validate(value), "Sensitive validate() 2nd");
     112        assertNull(single3.validate(value), "Sensitive validate() 3rd");
    110113
    111114        // match()
    112         checkArray("Sensitive match() Multiple", array, multiple.match(value));
    113         checkArray("Sensitive match() 1st",      null,  single1.match(value));
    114         checkArray("Sensitive match() 2nd",      array, single2.match(value));
    115         checkArray("Sensitive match() 3rd",      null,  single3.match(value));
     115        assertArrayEquals(array, multiple.match(value), "Sensitive match() Multiple");
     116        assertNull(single1.match(value), "Sensitive match() 1st");
     117        assertArrayEquals(array, single2.match(value), "Sensitive match() 2nd");
     118        assertNull(single3.match(value), "Sensitive match() 3rd");
    116119
    117120        // All invalid
    118121        value = "AAC*FDE*321";
    119         assertFalse("isValid() Invalid", multiple.isValid(value));
    120         assertNull("validate() Invalid", multiple.validate(value));
    121         assertNull("match() Multiple",   multiple.match(value));
     122        assertFalse(multiple.isValid(value), "isValid() Invalid");
     123        assertNull(multiple.validate(value), "validate() Invalid");
     124        assertNull(multiple.match(value), "match() Multiple");
    122125    }
    123126
     
    140143
    141144        // isValid()
    142         assertTrue("isValid() Multiple", multiple.isValid(value));
    143         assertFalse("isValid() 1st",     single1.isValid(value));
    144         assertTrue("isValid() 2nd",      single2.isValid(value));
    145         assertFalse("isValid() 3rd",     single3.isValid(value));
     145        assertTrue(multiple.isValid(value), "isValid() Multiple");
     146        assertFalse(single1.isValid(value), "isValid() 1st");
     147        assertTrue(single2.isValid(value), "isValid() 2nd");
     148        assertFalse(single3.isValid(value), "isValid() 3rd");
    146149
    147150        // validate()
    148         assertEquals("validate() Multiple", expect, multiple.validate(value));
    149         assertNull("validate() 1st",        single1.validate(value));
    150         assertEquals("validate() 2nd",      expect, single2.validate(value));
    151         assertNull("validate() 3rd",        single3.validate(value));
     151        assertEquals(expect, multiple.validate(value), "validate() Multiple");
     152        assertNull(single1.validate(value), "validate() 1st");
     153        assertEquals(expect, single2.validate(value), "validate() 2nd");
     154        assertNull(single3.validate(value), "validate() 3rd");
    152155
    153156        // match()
    154         checkArray("match() Multiple", array, multiple.match(value));
    155         checkArray("match() 1st",      null,  single1.match(value));
    156         checkArray("match() 2nd",      array, single2.match(value));
    157         checkArray("match() 3rd",      null,  single3.match(value));
     157        assertArrayEquals(array, multiple.match(value), "match() Multiple");
     158        assertNull(single1.match(value), "match() 1st");
     159        assertArrayEquals(array, single2.match(value), "match() 2nd");
     160        assertNull(single3.match(value), "match() 3rd");
    158161
    159162        // All invalid
    160163        value = "AAC*FDE*321";
    161         assertFalse("isValid() Invalid", multiple.isValid(value));
    162         assertNull("validate() Invalid", multiple.validate(value));
    163         assertNull("match() Multiple",   multiple.match(value));
     164        assertFalse(multiple.isValid(value), "isValid() Invalid");
     165        assertNull(multiple.validate(value), "validate() Invalid");
     166        assertNull(multiple.match(value), "match() Multiple");
    164167    }
    165168
     
    170173    void testNullValue() {
    171174        RegexValidator validator = new RegexValidator(REGEX);
    172         assertFalse("Instance isValid()", validator.isValid(null));
    173         assertNull("Instance validate()", validator.validate(null));
    174         assertNull("Instance match()",    validator.match(null));
     175        assertFalse(validator.isValid(null), "Instance isValid()");
     176        assertNull(validator.validate(null), "Instance validate()");
     177        assertNull(validator.match(null), "Instance match()");
    175178    }
    176179
     
    182185    @Test
    183186    void testMissingRegex() {
    184 
    185187        // Single Regular Expression - null
    186         try {
    187             new RegexValidator((String) null);
    188             fail("Single Null - expected IllegalArgumentException");
    189         } catch (IllegalArgumentException e) {
    190             assertEquals("Single Null", "Regular expression[0] is missing", e.getMessage());
    191         }
     188        IllegalArgumentException iae = assertThrows(IllegalArgumentException.class, () -> new RegexValidator((String) null),
     189                "Single Null - expected IllegalArgumentException");
     190        assertEquals("Regular expression[0] is missing", iae.getMessage(), "Single Null");
    192191
    193192        // Single Regular Expression - Zero Length
    194         try {
    195             new RegexValidator("");
    196             fail("Single Zero Length - expected IllegalArgumentException");
    197         } catch (IllegalArgumentException e) {
    198             assertEquals("Single Zero Length", "Regular expression[0] is missing", e.getMessage());
    199         }
     193        iae = assertThrows(IllegalArgumentException.class, () -> new RegexValidator(""),
     194                "Single Zero Length - expected IllegalArgumentException");
     195        assertEquals("Regular expression[0] is missing", iae.getMessage(), "Single Zero Length");
    200196
    201197        // Multiple Regular Expression - Null array
    202         try {
    203             new RegexValidator((String[]) null);
    204             fail("Null Array - expected IllegalArgumentException");
    205         } catch (IllegalArgumentException e) {
    206             assertEquals("Null Array", "Regular expressions are missing", e.getMessage());
    207         }
     198        iae = assertThrows(IllegalArgumentException.class, () -> new RegexValidator((String[]) null),
     199                "Null Array - expected IllegalArgumentException");
     200        assertEquals("Regular expressions are missing", iae.getMessage(), "Null Array");
    208201
    209202        // Multiple Regular Expression - Zero Length array
    210         try {
    211             new RegexValidator(new String[0]);
    212             fail("Zero Length Array - expected IllegalArgumentException");
    213         } catch (IllegalArgumentException e) {
    214             assertEquals("Zero Length Array", "Regular expressions are missing", e.getMessage());
    215         }
     203        iae = assertThrows(IllegalArgumentException.class, RegexValidator::new,
     204                "Zero Length Array - expected IllegalArgumentException");
     205        assertEquals("Regular expressions are missing", iae.getMessage(), "Zero Length Array");
    216206
    217207        // Multiple Regular Expression - Array has Null
    218         String[] expressions = new String[] {"ABC", null};
    219         try {
    220             new RegexValidator(expressions);
    221             fail("Array has Null - expected IllegalArgumentException");
    222         } catch (IllegalArgumentException e) {
    223             assertEquals("Array has Null", "Regular expression[1] is missing", e.getMessage());
    224         }
     208        iae = assertThrows(IllegalArgumentException.class, () -> new RegexValidator("ABC", null),
     209                "Array has Null - expected IllegalArgumentException");
     210        assertEquals("Regular expression[1] is missing", iae.getMessage(), "Array has Null");
    225211
    226212        // Multiple Regular Expression - Array has Zero Length
    227         expressions = new String[] {"", "ABC"};
    228         try {
    229             new RegexValidator(expressions);
    230             fail("Array has Zero Length - expected IllegalArgumentException");
    231         } catch (IllegalArgumentException e) {
    232             assertEquals("Array has Zero Length", "Regular expression[0] is missing", e.getMessage());
    233         }
     213        iae = assertThrows(IllegalArgumentException.class, () -> new RegexValidator("", "ABC"),
     214                "Array has Zero Length - expected IllegalArgumentException");
     215        assertEquals("Regular expression[0] is missing", iae.getMessage(), "Array has Zero Length");
    234216    }
    235217
     
    254236    void testToString() {
    255237        RegexValidator single = new RegexValidator(REGEX);
    256         assertEquals("Single", "RegexValidator{" + REGEX + "}", single.toString());
    257 
    258         RegexValidator multiple = new RegexValidator(new String[] {REGEX, REGEX});
    259         assertEquals("Multiple", "RegexValidator{" + REGEX + "," + REGEX + "}", multiple.toString());
     238        assertEquals("RegexValidator{" + REGEX + "}", single.toString(), "Single");
     239
     240        RegexValidator multiple = new RegexValidator(REGEX, REGEX);
     241        assertEquals("RegexValidator{" + REGEX + "," + REGEX + "}", multiple.toString(), "Multiple");
    260242    }
    261243
     
    268250    }
    269251
    270     /**
    271      * Compare two arrays
    272      * @param label Label for the test
    273      * @param expect Expected array
    274      * @param result Actual array
    275      */
    276     private void checkArray(String label, String[] expect, String[] result) {
    277 
    278         // Handle nulls
    279         if (expect == null || result == null) {
    280             if (expect == null && result == null) {
    281                 return; // valid, both null
    282             } else {
    283                 fail(label + " Null expect=" + Arrays.toString(expect) + " result=" + Arrays.toString(result));
    284             }
    285             return; // not strictly necessary, but prevents possible NPE below
    286         }
    287 
    288         // Check Length
    289         if (expect.length != result.length) {
    290             fail(label + " Length expect=" + expect.length + " result=" + result.length);
    291         }
    292 
    293         // Check Values
    294         for (int i = 0; i < expect.length; i++) {
    295             assertEquals(label +" value[" + i + "]", expect[i], result[i]);
    296         }
    297     }
    298252}
  • trunk/test/unit/org/openstreetmap/josm/data/validation/routines/UrlValidatorTest.java

    r17381 r18690  
    1717package org.openstreetmap.josm.data.validation.routines;
    1818
    19 import static org.junit.Assert.assertEquals;
    20 import static org.junit.Assert.assertFalse;
    21 import static org.junit.Assert.assertTrue;
     19import static org.junit.jupiter.api.Assertions.assertEquals;
     20import static org.junit.jupiter.api.Assertions.assertFalse;
     21import static org.junit.jupiter.api.Assertions.assertTrue;
    2222
    2323import org.junit.jupiter.api.BeforeEach;
     
    4848     */
    4949    @Test
    50     public void testIsValid() {
     50    void testIsValid() {
    5151        testIsValid(testUrlParts, UrlValidator.ALLOW_ALL_SCHEMES);
    5252        setUp();
     
    6363     */
    6464    @Test
    65     public void testIsValidScheme() {
     65    void testIsValidScheme() {
    6666        if (printStatus) {
    6767            System.out.print("\n testIsValidScheme() ");
     
    7171        for (ResultPair testPair : testScheme) {
    7272            boolean result = urlVal.isValidScheme(testPair.item);
    73             assertEquals(testPair.item, testPair.valid, result);
     73            assertEquals(testPair.valid, result, testPair.item);
    7474            if (printStatus) {
    7575                if (result == testPair.valid) {
     
    112112            String url = testBuffer.toString();
    113113            boolean result = urlVal.isValid(url);
    114             assertEquals(url, expected, result);
     114            assertEquals(expected, result, url);
    115115            if (printStatus) {
    116116                if (printIndex) {
     
    164164    void testValidator218() {
    165165        UrlValidator validator = new UrlValidator(UrlValidator.ALLOW_2_SLASHES);
    166         assertTrue("parentheses should be valid in URLs",
    167                 validator.isValid("http://somewhere.com/pathxyz/file(1).html"));
     166        assertTrue(validator.isValid("http://somewhere.com/pathxyz/file(1).html"), "parentheses should be valid in URLs");
    168167    }
    169168
     
    179178        }
    180179        UrlValidator validator = new UrlValidator();
    181         assertTrue("xn--d1abbgf6aiiy.xn--p1ai should validate", validator.isValid("http://xn--d1abbgf6aiiy.xn--p1ai"));
    182         assertTrue("президент.рф should validate", validator.isValid("http://президент.рф"));
    183         assertTrue("www.b\u00fccher.ch should validate", validator.isValid("http://www.b\u00fccher.ch"));
    184         assertFalse("www.\uFFFD.ch FFFD should fail", validator.isValid("http://www.\uFFFD.ch"));
    185         assertTrue("www.b\u00fccher.ch should validate", validator.isValid("ftp://www.b\u00fccher.ch"));
    186         assertFalse("www.\uFFFD.ch FFFD should fail", validator.isValid("ftp://www.\uFFFD.ch"));
     180        assertTrue(validator.isValid("http://xn--d1abbgf6aiiy.xn--p1ai"), "xn--d1abbgf6aiiy.xn--p1ai should validate");
     181        assertTrue(validator.isValid("http://президент.рф"), "президент.рф should validate");
     182        assertTrue(validator.isValid("http://www.b\u00fccher.ch"), "www.b\u00fccher.ch should validate");
     183        assertFalse(validator.isValid("http://www.\uFFFD.ch"), "www.\uFFFD.ch FFFD should fail");
     184        assertTrue(validator.isValid("ftp://www.b\u00fccher.ch"), "www.b\u00fccher.ch should validate");
     185        assertFalse(validator.isValid("ftp://www.\uFFFD.ch"), "www.\uFFFD.ch FFFD should fail");
    187186    }
    188187
     
    195194        UrlValidator validator = new UrlValidator(regex, 0);
    196195
    197         assertTrue("localhost URL should validate",
    198                 validator.isValid("http://localhost/test/index.html"));
    199         assertTrue("first.my-testing should validate",
    200                 validator.isValid("http://first.my-testing/test/index.html"));
    201         assertTrue("sup3r.my-testing should validate",
    202                 validator.isValid("http://sup3r.my-testing/test/index.html"));
    203 
    204         assertFalse("broke.my-test should not validate",
    205                 validator.isValid("http://broke.my-test/test/index.html"));
    206 
    207         assertTrue("www.apache.org should still validate",
    208                 validator.isValid("http://www.apache.org/test/index.html"));
     196        assertTrue(validator.isValid("http://localhost/test/index.html"), "localhost URL should validate");
     197        assertTrue(validator.isValid("http://first.my-testing/test/index.html"), "first.my-testing should validate");
     198        assertTrue(validator.isValid("http://sup3r.my-testing/test/index.html"), "sup3r.my-testing should validate");
     199
     200        assertFalse(validator.isValid("http://broke.my-test/test/index.html"), "broke.my-test should not validate");
     201
     202        assertTrue(validator.isValid("http://www.apache.org/test/index.html"), "www.apache.org should still validate");
    209203
    210204        // Now check using options
    211205        validator = new UrlValidator(UrlValidator.ALLOW_LOCAL_URLS);
    212206
    213         assertTrue("localhost URL should validate",
    214                 validator.isValid("http://localhost/test/index.html"));
    215 
    216         assertTrue("machinename URL should validate",
    217                 validator.isValid("http://machinename/test/index.html"));
    218 
    219         assertTrue("www.apache.org should still validate",
    220                 validator.isValid("http://www.apache.org/test/index.html"));
     207        assertTrue(validator.isValid("http://localhost/test/index.html"), "localhost URL should validate");
     208
     209        assertTrue(validator.isValid("http://machinename/test/index.html"), "machinename URL should validate");
     210
     211        assertTrue(validator.isValid("http://www.apache.org/test/index.html"), "www.apache.org should still validate");
    221212    }
    222213
     
    228219        UrlValidator validator = new UrlValidator(UrlValidator.ALLOW_LOCAL_URLS);
    229220
    230         assertTrue("hostname should validate",
    231                 validator.isValid("http://hostname"));
    232 
    233         assertTrue("hostname with path should validate",
    234                 validator.isValid("http://hostname/test/index.html"));
    235 
    236         assertTrue("localhost URL should validate",
    237                 validator.isValid("http://localhost/test/index.html"));
    238 
    239         assertFalse("first.my-testing should not validate",
    240                 validator.isValid("http://first.my-testing/test/index.html"));
    241 
    242         assertFalse("broke.hostname should not validate",
    243                 validator.isValid("http://broke.hostname/test/index.html"));
    244 
    245         assertTrue("www.apache.org should still validate",
    246                 validator.isValid("http://www.apache.org/test/index.html"));
     221        assertTrue(validator.isValid("http://hostname"), "hostname should validate");
     222
     223        assertTrue(validator.isValid("http://hostname/test/index.html"), "hostname with path should validate");
     224
     225        assertTrue(validator.isValid("http://localhost/test/index.html"), "localhost URL should validate");
     226
     227        assertFalse(validator.isValid("http://first.my-testing/test/index.html"), "first.my-testing should not validate");
     228
     229        assertFalse(validator.isValid("http://broke.hostname/test/index.html"), "broke.hostname should not validate");
     230
     231        assertTrue(validator.isValid("http://www.apache.org/test/index.html"), "www.apache.org should still validate");
    247232
    248233        // Turn it off, and check
    249234        validator = new UrlValidator(0);
    250235
    251         assertFalse("hostname should no longer validate",
    252                 validator.isValid("http://hostname"));
    253 
    254         assertFalse("localhost URL should no longer validate",
    255                 validator.isValid("http://localhost/test/index.html"));
    256 
    257         assertTrue("www.apache.org should still validate",
    258                 validator.isValid("http://www.apache.org/test/index.html"));
     236        assertFalse(validator.isValid("http://hostname"), "hostname should no longer validate");
     237
     238        assertFalse(validator.isValid("http://localhost/test/index.html"), "localhost URL should no longer validate");
     239
     240        assertTrue(validator.isValid("http://www.apache.org/test/index.html"), "www.apache.org should still validate");
    259241    }
    260242
     
    267249        UrlValidator validator = new UrlValidator();
    268250
    269         assertTrue("http://apache.org/ should be allowed by default",
    270                 validator.isValid("http://www.apache.org/test/index.html"));
    271 
    272         assertFalse("file:///c:/ shouldn't be allowed by default",
    273                 validator.isValid("file:///C:/some.file"));
    274 
    275         assertFalse("file:///c:\\ shouldn't be allowed by default",
    276                 validator.isValid("file:///C:\\some.file"));
    277 
    278         assertFalse("file:///etc/ shouldn't be allowed by default",
    279                 validator.isValid("file:///etc/hosts"));
    280 
    281         assertFalse("file://localhost/etc/ shouldn't be allowed by default",
    282                 validator.isValid("file://localhost/etc/hosts"));
    283 
    284         assertFalse("file://localhost/c:/ shouldn't be allowed by default",
    285                 validator.isValid("file://localhost/c:/some.file"));
     251        assertTrue(validator.isValid("http://www.apache.org/test/index.html"), "http://apache.org/ should be allowed by default");
     252
     253        assertFalse(validator.isValid("file:///C:/some.file"), "file:///c:/ shouldn't be allowed by default");
     254
     255        assertFalse(validator.isValid("file:///C:\\some.file"), "file:///c:\\ shouldn't be allowed by default");
     256
     257        assertFalse(validator.isValid("file:///etc/hosts"), "file:///etc/ shouldn't be allowed by default");
     258
     259        assertFalse(validator.isValid("file://localhost/etc/hosts"), "file://localhost/etc/ shouldn't be allowed by default");
     260
     261        assertFalse(validator.isValid("file://localhost/c:/some.file"), "file://localhost/c:/ shouldn't be allowed by default");
    286262
    287263        // Turn it on, and check
     
    289265        validator = new UrlValidator(new String[]{"http", "file"}, UrlValidator.ALLOW_LOCAL_URLS);
    290266
    291         assertTrue("http://apache.org/ should be allowed by default",
    292                 validator.isValid("http://www.apache.org/test/index.html"));
    293 
    294         assertTrue("file:///c:/ should now be allowed",
    295                 validator.isValid("file:///C:/some.file"));
     267        assertTrue(validator.isValid("http://www.apache.org/test/index.html"), "http://apache.org/ should be allowed by default");
     268
     269        assertTrue(validator.isValid("file:///C:/some.file"), "file:///c:/ should now be allowed");
    296270
    297271        // Currently, we don't support the c:\ form
    298         assertFalse("file:///c:\\ shouldn't be allowed",
    299                 validator.isValid("file:///C:\\some.file"));
    300 
    301         assertTrue("file:///etc/ should now be allowed",
    302                 validator.isValid("file:///etc/hosts"));
    303 
    304         assertTrue("file://localhost/etc/ should now be allowed",
    305                 validator.isValid("file://localhost/etc/hosts"));
    306 
    307         assertTrue("file://localhost/c:/ should now be allowed",
    308                 validator.isValid("file://localhost/c:/some.file"));
     272        assertFalse(validator.isValid("file:///C:\\some.file"), "file:///c:\\ shouldn't be allowed");
     273
     274        assertTrue(validator.isValid("file:///etc/hosts"), "file:///etc/ should now be allowed");
     275
     276        assertTrue(validator.isValid("file://localhost/etc/hosts"), "file://localhost/etc/ should now be allowed");
     277
     278        assertTrue(validator.isValid("file://localhost/c:/some.file"), "file://localhost/c:/ should now be allowed");
    309279
    310280        // These are never valid
    311         assertFalse("file://c:/ shouldn't ever be allowed, needs file:///c:/",
    312                 validator.isValid("file://C:/some.file"));
    313 
    314         assertFalse("file://c:\\ shouldn't ever be allowed, needs file:///c:/",
    315                 validator.isValid("file://C:\\some.file"));
     281        assertFalse(validator.isValid("file://C:/some.file"), "file://c:/ shouldn't ever be allowed, needs file:///c:/");
     282
     283        assertFalse(validator.isValid("file://C:\\some.file"), "file://c:\\ shouldn't ever be allowed, needs file:///c:/");
    316284    }
    317285
     
    406374     */
    407375    @Test
    408     public void testValidator290() {
     376    void testValidator290() {
    409377        UrlValidator validator = new UrlValidator();
    410378        assertTrue(validator.isValid("http://xn--h1acbxfam.idn.icann.org/"));
     
    447415     */
    448416    @Test
    449     public void testValidator361() {
     417    void testValidator361() {
    450418        UrlValidator validator = new UrlValidator();
    451419        assertTrue(validator.isValid("http://hello.tokyo/"));
     
    456424     */
    457425    @Test
    458     public void testValidator363() {
     426    void testValidator363() {
    459427        UrlValidator urlValidator = new UrlValidator();
    460428        assertTrue(urlValidator.isValid("http://www.example.org/a/b/hello..world"));
     
    480448     */
    481449    @Test
    482     public void testValidator375() {
     450    void testValidator375() {
    483451        UrlValidator validator = new UrlValidator();
    484452        String url = "http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html";
    485         assertTrue("IPv6 address URL should validate: " + url, validator.isValid(url));
     453        assertTrue(validator.isValid(url), "IPv6 address URL should validate: " + url);
    486454        url = "http://[::1]:80/index.html";
    487         assertTrue("IPv6 address URL should validate: " + url, validator.isValid(url));
     455        assertTrue(validator.isValid(url), "IPv6 address URL should validate: " + url);
    488456        url = "http://FEDC:BA98:7654:3210:FEDC:BA98:7654:3210:80/index.html";
    489         assertFalse("IPv6 address without [] should not validate: " + url, validator.isValid(url));
     457        assertFalse(validator.isValid(url), "IPv6 address without [] should not validate: " + url);
    490458    }
    491459
     
    494462     */
    495463    @Test
    496     public void testValidator353() { // userinfo
     464    void testValidator353() { // userinfo
    497465        UrlValidator validator = new UrlValidator();
    498466        assertTrue(validator.isValid("http://www.apache.org:80/path"));
     
    510478     */
    511479    @Test
    512     public void testValidator382() {
     480    void testValidator382() {
    513481        UrlValidator validator = new UrlValidator();
    514482        assertTrue(validator.isValid("ftp://username:password@example.com:8042/over/there/index.dtb?type=animal&name=narwhal#nose"));
     
    519487     */
    520488    @Test
    521     public void testValidator380() {
     489    void testValidator380() {
    522490        UrlValidator validator = new UrlValidator();
    523491        assertTrue(validator.isValid("http://www.apache.org:80/path"));
     
    530498     */
    531499    @Test
    532     public void testValidatorName() {
     500    void testValidatorName() {
    533501        assertEquals("URL validator", UrlValidator.getInstance().getValidatorName());
    534502    }
Note: See TracChangeset for help on using the changeset viewer.