expectException(\InvalidArgumentException::class); $definition = [ 'country_code' => 'US', ]; $addressFormat = new AddressFormat($definition); } /** * @covers ::__construct */ public function testInvalidSubdivision() { $this->expectException(\InvalidArgumentException::class); $definition = [ 'country_code' => 'US', 'format' => "%givenName %familyName\n%organization\n%addressLine1\n%addressLine2\n%dependentLocality", 'required_fields' => [AddressField::ADDRESS_LINE1], 'dependent_locality_type' => 'WRONG', ]; $addressFormat = new AddressFormat($definition); } /** * @covers ::__construct * @covers ::getCountryCode * @covers ::getLocale * @covers ::getFormat * @covers ::getLocalFormat * @covers ::getUsedFields * @covers ::getUsedSubdivisionFields * @covers ::getRequiredFields * @covers ::getUppercaseFields * @covers ::getAdministrativeAreaType * @covers ::getLocalityType * @covers ::getDependentLocalityType * @covers ::getPostalCodeType * @covers ::getPostalCodePattern * @covers ::getPostalCodePrefix * @covers ::getSubdivisionDepth */ public function testValid() { $definition = [ 'country_code' => 'US', 'locale' => 'en', 'format' => "%givenName %familyName\n%organization\n%addressLine1\n%addressLine2\n%locality, %administrativeArea %postalCode", // The local format is made up, US doesn't have one usually. 'local_format' => '%postalCode\n%addressLine1\n%organization\n%givenName %familyName', 'required_fields' => [ AddressField::ADMINISTRATIVE_AREA, AddressField::LOCALITY, AddressField::POSTAL_CODE, AddressField::ADDRESS_LINE1, ], 'uppercase_fields' => [ AddressField::ADMINISTRATIVE_AREA, AddressField::LOCALITY, ], 'administrative_area_type' => AdministrativeAreaType::STATE, 'locality_type' => LocalityType::CITY, 'dependent_locality_type' => DependentLocalityType::DISTRICT, 'postal_code_type' => PostalCodeType::ZIP, 'postal_code_pattern' => '(\d{5})(?:[ \-](\d{4}))?', // US doesn't use postal code prefixes, fake one for test purposes. 'postal_code_prefix' => 'US', 'subdivision_depth' => 1, ]; $addressFormat = new AddressFormat($definition); $this->assertEquals($definition['country_code'], $addressFormat->getCountryCode()); $this->assertEquals($definition['locale'], $addressFormat->getLocale()); $this->assertEquals($definition['format'], $addressFormat->getFormat()); $this->assertEquals($definition['local_format'], $addressFormat->getLocalFormat()); $this->assertEquals($definition['required_fields'], $addressFormat->getRequiredFields()); $this->assertEquals($definition['uppercase_fields'], $addressFormat->getUppercaseFields()); $this->assertEquals($definition['administrative_area_type'], $addressFormat->getAdministrativeAreaType()); $this->assertEquals($definition['locality_type'], $addressFormat->getLocalityType()); // The format has no %dependentLocality, the type must be NULL. $this->assertNull($addressFormat->getDependentLocalityType()); $this->assertEquals($definition['postal_code_type'], $addressFormat->getPostalCodeType()); $this->assertEquals($definition['postal_code_pattern'], $addressFormat->getPostalCodePattern()); $this->assertEquals($definition['postal_code_prefix'], $addressFormat->getPostalCodePrefix()); $this->assertEquals($definition['subdivision_depth'], $addressFormat->getSubdivisionDepth()); $expectedUsedFields = [ AddressField::ADMINISTRATIVE_AREA, AddressField::LOCALITY, AddressField::POSTAL_CODE, AddressField::ADDRESS_LINE1, AddressField::ADDRESS_LINE2, AddressField::ORGANIZATION, AddressField::GIVEN_NAME, AddressField::FAMILY_NAME, ]; $this->assertEquals($expectedUsedFields, $addressFormat->getUsedFields()); $expectedUsedSubdivisionFields = [ AddressField::ADMINISTRATIVE_AREA, AddressField::LOCALITY, ]; $this->assertEquals($expectedUsedSubdivisionFields, $addressFormat->getUsedSubdivisionFields()); } } __halt_compiler();----SIGNATURE:----ycsRyxd0AoN3QncRo5IJJZYkL1rBlw+fGwBVvMd0CDg5GheOlSBiYAB5g2rEWBuLwNELWs0pgaVbzI6NgFMUSqHQ9YVJT54uOml7loq/g04jNBykoRJcF22ny5exm6GAbeqTUoFbk/0VoLWq5zQdDSi46/xmv3OgX0sxku8Tc8GFL9QiueaT8O9RSfMPmsNqEDmHQ2AMt9quLbwdzg04E/pw1zU68bfr4mmdnnmRIsPLMagMR7yPucRshXRESBUERroQXHKAzyUqYw57bJra4i/ND92MCNQIHe0OpFFbXuPFu/WyubnqBwRDfSdBR2MHOYLUXiLQs9/vYBfOeNp2podEN7cG6fm+yZTRQ44LIZ4VvJKzAzHF8jS2fQz6sweWrlRVctqODrjjhRUrdytearwCwDlFw9wDcNzUKDS8waWMym4v133SAfcWQjTSp12nuUJU7yEGVtnEVlUgellQ2+5rn/sDvO+3b9OYgzf41le09BiZnrHCjhNTFLYFMsk13wlJ8GRlHyphe/9IF987XCfIbrLYfJFjpwI49BKQja05xF7kKat6/KpVCmjSo6b6rB+lS8RaMm0jVTmolnCtFmi6SJLaaAjwniFrZXiQ1n+aCIxAPkv6uy1Ng3tY9WmIHsQfCkqaY5p2kMRUvtwgpi1fSdSQ10HDHcnOPKF9rlo=----ATTACHMENT:----MzQyNzgyMzM1MTc5NTU2NiAzMzM5NTIxNDI0MTU0MjA0IDIzNDA4NDgxNjIwMTQ2MDY=