public function testExtractPossibleNumber()
{
// Removes preceding funky punctuation and letters but leaves the rest untouched.
$this->assertEquals("0800-345-600", PhoneNumberUtil::extractPossibleNumber("Tel:0800-345-600"));
$this->assertEquals("0800 FOR PIZZA", PhoneNumberUtil::extractPossibleNumber("Tel:0800 FOR PIZZA"));
// Should not remove plus sign
$this->assertEquals("+800-345-600", PhoneNumberUtil::extractPossibleNumber("Tel:+800-345-600"));
// Should recognise wide digits as possible start values.
$this->assertEquals(pack("H*", 'efbc90') . pack("H*", 'efbc92') . pack("H*", 'efbc93'), PhoneNumberUtil::extractPossibleNumber(pack("H*", 'efbc90') . pack("H*", 'efbc92') . pack("H*", 'efbc93')));
// Dashes are not possible start values and should be removed.
$this->assertEquals(pack("H*", 'efbc91') . pack("H*", 'efbc92') . pack("H*", 'efbc93'), PhoneNumberUtil::extractPossibleNumber("Num-" . pack("H*", 'efbc91') . pack("H*", 'efbc92') . pack("H*", 'efbc93')));
// If not possible number present, return empty string.
$this->assertEquals("", PhoneNumberUtil::extractPossibleNumber("Num-...."));
// Leading brackets are stripped - these are not used when parsing.
$this->assertEquals("650) 253-0000", PhoneNumberUtil::extractPossibleNumber("(650) 253-0000"));
// Trailing non-alpha-numeric characters should be removed.
$this->assertEquals("650) 253-0000", PhoneNumberUtil::extractPossibleNumber("(650) 253-0000..- .."));
$this->assertEquals("650) 253-0000", PhoneNumberUtil::extractPossibleNumber("(650) 253-0000."));
// This case has a trailing RTL char.
$this->assertEquals("650) 253-0000", PhoneNumberUtil::extractPossibleNumber("(650) 253-0000" . pack("H*", 'e2808f')));
}