You are here

public function PostalCodeValidationTestCase::test in Postal Code Validation 7

The tests.

File

tests/PostalCodeValidationTestCase.test, line 27
Tests for postal_code_validation.

Class

PostalCodeValidationTestCase
Tests for postal_code_validation.

Code

public function test() {
  include_once __DIR__ . '/../postal_code_validation.module';
  $supported_countries = postal_code_validation_get_supported_countries();
  $countries_without_codes = postal_code_validation_get_countries_without_codes();
  $dependencies = postal_code_validation_get_dependencies();
  $array_intersect = array_intersect($countries_without_codes, $supported_countries);
  $this
    ->assertTrue(count($array_intersect) === 0, 'No countries are listed as supported if they do not have a postal code system.' . implode(', ', $array_intersect));
  $array_intersect = array_intersect($countries_without_codes, array_keys($dependencies));
  $this
    ->assertTrue(count($array_intersect) === 0, 'No countries are listed as having no postal code system if they use the system of another country.' . implode(', ', $array_intersect));
  $array_intersect = array_intersect($supported_countries, array_keys($dependencies));
  $this
    ->assertTrue(count($array_intersect) === 0, 'No countries are listed as supported if they use the system of another country.' . implode(', ', $array_intersect));
  $array_unique = array_unique($dependencies);
  $array_intersect = array_intersect($supported_countries, $array_unique);
  $this
    ->assertTrue(count($array_intersect) === count($array_unique), 'Only supported countries are listed as being the postal code system used by another country.' . implode(', ', array_diff($array_unique, $supported_countries)));
  $missing_country_files = array();
  $missing_country_functions = array();
  foreach ($supported_countries as $country) {
    $filename = __DIR__ . '/../countries/' . drupal_strtolower($country) . '.inc';
    if (is_file($filename)) {
      include_once $filename;
    }
    else {
      $missing_country_files[] = $country;
    }
    if (!function_exists('_postal_code_validation_validate_' . $country)) {
      $missing_country_functions[] = $country;
    }
  }
  $this
    ->assertTrue(count($missing_country_files) === 0, 'Every supported country has a file in the countries directory.' . implode(', ', $missing_country_files));
  $this
    ->assertTrue(count($missing_country_functions) === 0, 'Every supported country implements _postal_code_validation_validate_COUNTRYCODE().' . implode(', ', $missing_country_functions));
}