@Parameterized.Parameters
    public static Collection<Object[]> data() {
        return Arrays.asList(
            new Object[][] {
                new Object[] { null, false },
                // too short
                { "abc123", false },
                // too long
                { RandomStringUtils.randomAlphabetic(129), false },
                // only 2 categories
                { UPPER_CASE_LETTERS + NUMBERS, false },
                { UPPER_CASE_LETTERS + SPECIAL_CHARS, false },
                { LOWER_CASE_LETTERS + NUMBERS, false },
                { LOWER_CASE_LETTERS + SPECIAL_CHARS, false },
                { NUMBERS + SPECIAL_CHARS, false },
                // 3 categories
                { UPPER_CASE_LETTERS + LOWER_CASE_LETTERS + NUMBERS, true },
                { UPPER_CASE_LETTERS + LOWER_CASE_LETTERS + SPECIAL_CHARS, true },
                { UPPER_CASE_LETTERS + NUMBERS + SPECIAL_CHARS, true },
                { LOWER_CASE_LETTERS + NUMBERS + SPECIAL_CHARS, true },
                // 4 categories
                { UPPER_CASE_LETTERS + LOWER_CASE_LETTERS + NUMBERS + SPECIAL_CHARS, true },
            }
        );
    }
Tests if the password passed to the container satisfied the password policy described at
https://docs.microsoft.com/en-us/sql/relational-databases/security/password-policy?view=sql-server-2017
modules/mssqlserver/src/test/java/org/testcontainers/junit/mssqlserver/CustomPasswordMSSQLServerTest.java