|
|
// Copyright (C) 2009 The Libphonenumber Authors
|
|
|
//
|
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
// you may not use this file except in compliance with the License.
|
|
|
// You may obtain a copy of the License at
|
|
|
//
|
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
|
//
|
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
// See the License for the specific language governing permissions and
|
|
|
// limitations under the License.
|
|
|
|
|
|
// Author: David Yonge-Mallo
|
|
|
|
|
|
#include <gtest/gtest.h>
|
|
|
|
|
|
#include "phonenumbers/default_logger.h"
|
|
|
#include "phonenumbers/phonenumberutil.h"
|
|
|
#include "phonenumbers/shortnumberutil.h"
|
|
|
#include "phonenumbers/test_util.h"
|
|
|
|
|
|
namespace i18n {
|
|
|
namespace phonenumbers {
|
|
|
|
|
|
class ShortNumberUtilTest : public testing::Test {
|
|
|
protected:
|
|
|
ShortNumberUtilTest() : short_util_() {
|
|
|
PhoneNumberUtil::GetInstance()->SetLogger(new StdoutLogger());
|
|
|
}
|
|
|
|
|
|
const ShortNumberUtil short_util_;
|
|
|
|
|
|
private:
|
|
|
DISALLOW_COPY_AND_ASSIGN(ShortNumberUtilTest);
|
|
|
};
|
|
|
|
|
|
TEST_F(ShortNumberUtilTest, ConnectsToEmergencyNumber_US) {
|
|
|
EXPECT_TRUE(short_util_.ConnectsToEmergencyNumber("911", RegionCode::US()));
|
|
|
EXPECT_TRUE(short_util_.ConnectsToEmergencyNumber("119", RegionCode::US()));
|
|
|
EXPECT_FALSE(short_util_.ConnectsToEmergencyNumber("999", RegionCode::US()));
|
|
|
}
|
|
|
|
|
|
TEST_F(ShortNumberUtilTest, ConnectsToEmergencyNumberLongNumber_US) {
|
|
|
EXPECT_TRUE(short_util_.ConnectsToEmergencyNumber("9116666666",
|
|
|
RegionCode::US()));
|
|
|
EXPECT_TRUE(short_util_.ConnectsToEmergencyNumber("1196666666",
|
|
|
RegionCode::US()));
|
|
|
EXPECT_FALSE(short_util_.ConnectsToEmergencyNumber("9996666666",
|
|
|
RegionCode::US()));
|
|
|
}
|
|
|
|
|
|
TEST_F(ShortNumberUtilTest, ConnectsToEmergencyNumberWithFormatting_US) {
|
|
|
EXPECT_TRUE(short_util_.ConnectsToEmergencyNumber("9-1-1", RegionCode::US()));
|
|
|
EXPECT_TRUE(short_util_.ConnectsToEmergencyNumber("1-1-9", RegionCode::US()));
|
|
|
EXPECT_FALSE(short_util_.ConnectsToEmergencyNumber("9-9-9",
|
|
|
RegionCode::US()));
|
|
|
}
|
|
|
|
|
|
TEST_F(ShortNumberUtilTest, ConnectsToEmergencyNumberWithPlusSign_US) {
|
|
|
EXPECT_FALSE(short_util_.ConnectsToEmergencyNumber("+911", RegionCode::US()));
|
|
|
// This hex sequence is the full-width plus sign U+FF0B.
|
|
|
EXPECT_FALSE(short_util_.ConnectsToEmergencyNumber("\xEF\xBC\x8B" "911",
|
|
|
RegionCode::US()));
|
|
|
EXPECT_FALSE(short_util_.ConnectsToEmergencyNumber(" +911",
|
|
|
RegionCode::US()));
|
|
|
EXPECT_FALSE(short_util_.ConnectsToEmergencyNumber("+119", RegionCode::US()));
|
|
|
EXPECT_FALSE(short_util_.ConnectsToEmergencyNumber("+999", RegionCode::US()));
|
|
|
}
|
|
|
|
|
|
TEST_F(ShortNumberUtilTest, ConnectsToEmergencyNumber_BR) {
|
|
|
EXPECT_TRUE(short_util_.ConnectsToEmergencyNumber("911", RegionCode::BR()));
|
|
|
EXPECT_TRUE(short_util_.ConnectsToEmergencyNumber("190", RegionCode::BR()));
|
|
|
EXPECT_FALSE(short_util_.ConnectsToEmergencyNumber("999", RegionCode::BR()));
|
|
|
}
|
|
|
|
|
|
TEST_F(ShortNumberUtilTest, ConnectsToEmergencyNumberLongNumber_BR) {
|
|
|
// Brazilian emergency numbers don't work when additional digits are appended.
|
|
|
EXPECT_FALSE(short_util_.ConnectsToEmergencyNumber("9111", RegionCode::BR()));
|
|
|
EXPECT_FALSE(short_util_.ConnectsToEmergencyNumber("1900", RegionCode::BR()));
|
|
|
EXPECT_FALSE(short_util_.ConnectsToEmergencyNumber("9996", RegionCode::BR()));
|
|
|
}
|
|
|
|
|
|
TEST_F(ShortNumberUtilTest, ConnectsToEmergencyNumber_AO) {
|
|
|
// Angola doesn't have any metadata for emergency numbers in the test
|
|
|
// metadata.
|
|
|
EXPECT_FALSE(short_util_.ConnectsToEmergencyNumber("911", RegionCode::AO()));
|
|
|
EXPECT_FALSE(short_util_.ConnectsToEmergencyNumber("222123456",
|
|
|
RegionCode::AO()));
|
|
|
EXPECT_FALSE(short_util_.ConnectsToEmergencyNumber("923123456",
|
|
|
RegionCode::AO()));
|
|
|
}
|
|
|
|
|
|
TEST_F(ShortNumberUtilTest, ConnectsToEmergencyNumber_ZW) {
|
|
|
// Zimbabwe doesn't have any metadata in the test metadata.
|
|
|
EXPECT_FALSE(short_util_.ConnectsToEmergencyNumber("911", RegionCode::ZW()));
|
|
|
EXPECT_FALSE(short_util_.ConnectsToEmergencyNumber("01312345",
|
|
|
RegionCode::ZW()));
|
|
|
EXPECT_FALSE(short_util_.ConnectsToEmergencyNumber("0711234567",
|
|
|
RegionCode::ZW()));
|
|
|
}
|
|
|
|
|
|
TEST_F(ShortNumberUtilTest, IsEmergencyNumber_US) {
|
|
|
EXPECT_TRUE(short_util_.IsEmergencyNumber("911", RegionCode::US()));
|
|
|
EXPECT_TRUE(short_util_.IsEmergencyNumber("119", RegionCode::US()));
|
|
|
EXPECT_FALSE(short_util_.IsEmergencyNumber("999", RegionCode::US()));
|
|
|
}
|
|
|
|
|
|
TEST_F(ShortNumberUtilTest, IsEmergencyNumberLongNumber_US) {
|
|
|
EXPECT_FALSE(short_util_.IsEmergencyNumber("9116666666", RegionCode::US()));
|
|
|
EXPECT_FALSE(short_util_.IsEmergencyNumber("1196666666", RegionCode::US()));
|
|
|
EXPECT_FALSE(short_util_.IsEmergencyNumber("9996666666", RegionCode::US()));
|
|
|
}
|
|
|
|
|
|
TEST_F(ShortNumberUtilTest, IsEmergencyNumberWithFormatting_US) {
|
|
|
EXPECT_TRUE(short_util_.IsEmergencyNumber("9-1-1", RegionCode::US()));
|
|
|
EXPECT_TRUE(short_util_.IsEmergencyNumber("*911", RegionCode::US()));
|
|
|
EXPECT_TRUE(short_util_.IsEmergencyNumber("1-1-9", RegionCode::US()));
|
|
|
EXPECT_TRUE(short_util_.IsEmergencyNumber("*119", RegionCode::US()));
|
|
|
EXPECT_FALSE(short_util_.IsEmergencyNumber("9-9-9", RegionCode::US()));
|
|
|
EXPECT_FALSE(short_util_.IsEmergencyNumber("*999", RegionCode::US()));
|
|
|
}
|
|
|
|
|
|
TEST_F(ShortNumberUtilTest, IsEmergencyNumberWithPlusSign_US) {
|
|
|
EXPECT_FALSE(short_util_.IsEmergencyNumber("+911", RegionCode::US()));
|
|
|
// This hex sequence is the full-width plus sign U+FF0B.
|
|
|
EXPECT_FALSE(short_util_.IsEmergencyNumber("\xEF\xBC\x8B" "911",
|
|
|
RegionCode::US()));
|
|
|
EXPECT_FALSE(short_util_.IsEmergencyNumber(" +911", RegionCode::US()));
|
|
|
EXPECT_FALSE(short_util_.IsEmergencyNumber("+119", RegionCode::US()));
|
|
|
EXPECT_FALSE(short_util_.IsEmergencyNumber("+999", RegionCode::US()));
|
|
|
}
|
|
|
|
|
|
TEST_F(ShortNumberUtilTest, IsEmergencyNumber_BR) {
|
|
|
EXPECT_TRUE(short_util_.IsEmergencyNumber("911", RegionCode::BR()));
|
|
|
EXPECT_TRUE(short_util_.IsEmergencyNumber("190", RegionCode::BR()));
|
|
|
EXPECT_FALSE(short_util_.IsEmergencyNumber("999", RegionCode::BR()));
|
|
|
}
|
|
|
|
|
|
TEST_F(ShortNumberUtilTest, EmergencyNumberLongNumber_BR) {
|
|
|
EXPECT_FALSE(short_util_.IsEmergencyNumber("9111", RegionCode::BR()));
|
|
|
EXPECT_FALSE(short_util_.IsEmergencyNumber("1900", RegionCode::BR()));
|
|
|
EXPECT_FALSE(short_util_.IsEmergencyNumber("9996", RegionCode::BR()));
|
|
|
}
|
|
|
|
|
|
TEST_F(ShortNumberUtilTest, IsEmergencyNumber_AO) {
|
|
|
// Angola doesn't have any metadata for emergency numbers in the test
|
|
|
// metadata.
|
|
|
EXPECT_FALSE(short_util_.IsEmergencyNumber("911", RegionCode::AO()));
|
|
|
EXPECT_FALSE(short_util_.IsEmergencyNumber("222123456", RegionCode::AO()));
|
|
|
EXPECT_FALSE(short_util_.IsEmergencyNumber("923123456", RegionCode::AO()));
|
|
|
}
|
|
|
|
|
|
TEST_F(ShortNumberUtilTest, IsEmergencyNumber_ZW) {
|
|
|
// Zimbabwe doesn't have any metadata in the test metadata.
|
|
|
EXPECT_FALSE(short_util_.IsEmergencyNumber("911", RegionCode::ZW()));
|
|
|
EXPECT_FALSE(short_util_.IsEmergencyNumber("01312345", RegionCode::ZW()));
|
|
|
EXPECT_FALSE(short_util_.IsEmergencyNumber("0711234567", RegionCode::ZW()));
|
|
|
}
|
|
|
|
|
|
} // namespace phonenumbers
|
|
|
} // namespace i18n
|