This method takes into account cases where the number might contain formatting, but doesn't allow additional digits to be appended. Note that {@code isEmergencyNumber(number, region)} implies {@code connectsToEmergencyNumber(number, region)}.
public function testOverlappingNANPANumber() { // 211 is an emergency number in Barbados, while it is a toll-free information line in Canada // and the USA. $this->assertTrue($this->shortInfo->isEmergencyNumber("211", RegionCode::BB)); $this->assertEquals(ShortNumberCost::TOLL_FREE, $this->shortInfo->getExpectedCostForRegion($this->parse("211", RegionCode::BB), RegionCode::BB)); $this->assertFalse($this->shortInfo->isEmergencyNumber("211", RegionCode::US)); $this->assertEquals(ShortNumberCost::UNKNOWN_COST, $this->shortInfo->getExpectedCostForRegion($this->parse("211", RegionCode::US), RegionCode::US)); $this->assertFalse($this->shortInfo->isEmergencyNumber("211", RegionCode::CA)); $this->assertEquals(ShortNumberCost::UNKNOWN_COST, $this->shortInfo->getExpectedCostForRegion($this->parse("211", RegionCode::CA), RegionCode::CA)); }
/** * @dataProvider shortNumberRegionList */ public function testEmergency($regionCode) { $desc = $this->shortNumberInfo->getMetadataForRegion($regionCode)->getEmergency(); if ($desc->hasExampleNumber()) { $exampleNumber = $desc->getExampleNumber(); $possibleNumberPattern = new Matcher($desc->getPossibleNumberPattern(), $exampleNumber); if (!$possibleNumberPattern->matches() || !$this->shortNumberInfo->isEmergencyNumber($exampleNumber, $regionCode)) { $this->fail("Emergency example number test failed for " . $regionCode); } elseif ($this->shortNumberInfo->getExpectedCostForRegion($exampleNumber, $regionCode) !== ShortNumberCost::TOLL_FREE) { $this->fail("Emergency example number not toll free for " . $regionCode); } } }
/** * @dataProvider shortNumberRegionList */ public function testEmergency($regionCode) { $desc = $this->shortNumberInfo->getMetadataForRegion($regionCode)->getEmergency(); if ($desc->hasExampleNumber()) { $exampleNumber = $desc->getExampleNumber(); $phoneNumber = $this->phoneNumberUtil->parse($exampleNumber, $regionCode); if (!$this->shortNumberInfo->isPossibleShortNumberForRegion($phoneNumber, $regionCode) || !$this->shortNumberInfo->isEmergencyNumber($exampleNumber, $regionCode)) { $this->fail("Emergency example number test failed for " . $regionCode); } elseif ($this->shortNumberInfo->getExpectedCostForRegion($phoneNumber, $regionCode) !== ShortNumberCost::TOLL_FREE) { $this->fail("Emergency example number not toll free for " . $regionCode); } } }