Exemplo n.º 1
0
        public void TestMatchesMultiplePhoneNumbersSeparatedByPhoneNumberPunctuation()
        {
            const string text   = "Call 650-253-4561 -- 455-234-3451";
            const string region = "US";

            var number1 = new PhoneNumber.Builder()
                          .SetCountryCode(phoneUtil.GetCountryCodeForRegion(region))
                          .SetNationalNumber(6502534561L)
                          .Build();
            var match1 = new PhoneNumberMatch(5, "650-253-4561", number1);

            var number2 = new PhoneNumber.Builder()
                          .SetCountryCode(phoneUtil.GetCountryCodeForRegion(region))
                          .SetNationalNumber(4552343451L)
                          .Build();
            var match2 = new PhoneNumberMatch(21, "455-234-3451", number2);

            var matches = phoneUtil.FindNumbers(text, region).GetEnumerator();

            matches.MoveNext();
            Assert.Equal(match1, matches.Current);
            matches.MoveNext();
            Assert.Equal(match2, matches.Current);
            matches.Dispose();
        }
        private void doTestNumberMatchesForLeniency(List <NumberTest> TestCases,
                                                    PhoneNumberUtil.Leniency leniency)
        {
            int noMatchFoundCount    = 0;
            int wrongMatchFoundCount = 0;

            foreach (NumberTest Test in TestCases)
            {
                var iterator =
                    findNumbersForLeniency(Test.rawString, Test.region, leniency);
                PhoneNumberMatch match = iterator.FirstOrDefault();
                if (match == null)
                {
                    noMatchFoundCount++;
                    Console.WriteLine("No match found in " + Test.ToString() + " for leniency: " + leniency);
                }
                else
                {
                    if (!Test.rawString.Equals(match.RawString))
                    {
                        wrongMatchFoundCount++;
                        Console.WriteLine("Found wrong match in Test " + Test.ToString() +
                                          ". Found " + match.RawString);
                    }
                }
            }
            Assert.Equal(0, noMatchFoundCount);
            Assert.Equal(0, wrongMatchFoundCount);
        }
        public void TestMatchWithSurroundingZipcodes()
        {
            String      number         = "415-666-7777";
            String      zipPreceding   = "My address is CA 34215 - " + number + " is my number.";
            PhoneNumber expectedResult = phoneUtil.Parse(number, "US");

            var iterator           = phoneUtil.FindNumbers(zipPreceding, "US").GetEnumerator();
            PhoneNumberMatch match = iterator.MoveNext() ? iterator.Current : null;

            Assert.NotNull(match);
            Assert.Equal(expectedResult, match.Number);
            Assert.Equal(number, match.RawString);

            // Now repeat, but this time the phone number has spaces in it. It should still be found.
            number = "(415) 666 7777";

            String zipFollowing = "My number is " + number + ". 34215 is my zip-code.";

            iterator = phoneUtil.FindNumbers(zipFollowing, "US").GetEnumerator();

            PhoneNumberMatch matchWithSpaces = iterator.MoveNext() ? iterator.Current : null;

            Assert.NotNull(matchWithSpaces);
            Assert.Equal(expectedResult, matchWithSpaces.Number);
            Assert.Equal(number, matchWithSpaces.RawString);
        }
        /**
         * Asserts that another number can be found in {@code text} starting at {@code index}, and that
         * its corresponding range is {@code [start, end)}.
         */
        private void AssertEqualRange(String text, int index, int start, int end)
        {
            String sub     = text.Substring(index);
            var    matches =
                phoneUtil.FindNumbers(sub, "NZ", PhoneNumberUtil.Leniency.POSSIBLE, long.MaxValue).GetEnumerator();

            Assert.True(matches.MoveNext());
            PhoneNumberMatch match = matches.Current;

            Assert.Equal(start - index, match.Start);
            Assert.Equal(end - start, match.Length);
            Assert.Equal(sub.Substring(match.Start, match.Length), match.RawString);
        }
        public void TestValueTypeSemantics()
        {
            PhoneNumber      number = new PhoneNumber();
            PhoneNumberMatch match1 = new PhoneNumberMatch(10, "1 800 234 45 67", number);
            PhoneNumberMatch match2 = new PhoneNumberMatch(10, "1 800 234 45 67", number);

            Assert.AreEqual(match1, match2);
            Assert.AreEqual(match1.GetHashCode(), match2.GetHashCode());
            Assert.AreEqual(match1.Start, match2.Start);
            Assert.AreEqual(match1.Length, match2.Length);
            Assert.AreEqual(match1.Number, match2.Number);
            Assert.AreEqual(match1.RawString, match2.RawString);
            Assert.AreEqual("1 800 234 45 67", match1.RawString);
        }
Exemplo n.º 6
0
        public void testValueTypeSemantics()
        {
            PhoneNumber      number = new PhoneNumber();
            PhoneNumberMatch match1 = new PhoneNumberMatch(10, "1 800 234 45 67", number);
            PhoneNumberMatch match2 = new PhoneNumberMatch(10, "1 800 234 45 67", number);

            Assert.AreEqual(match1, match2);
            Assert.AreEqual(match1.GetHashCode(), match2.GetHashCode());
            Assert.AreEqual(match1.start(), match2.start());
            Assert.AreEqual(match1.end(), match2.end());
            Assert.AreEqual(match1.number(), match2.number());
            Assert.AreEqual(match1.rawString(), match2.rawString());
            Assert.AreEqual("1 800 234 45 67", match1.rawString());
        }
        public void TestValueTypeSemantics()
        {
            PhoneNumber number = new PhoneNumber();
            PhoneNumberMatch match1 = new PhoneNumberMatch(10, "1 800 234 45 67", number);
            PhoneNumberMatch match2 = new PhoneNumberMatch(10, "1 800 234 45 67", number);

            Assert.AreEqual(match1, match2);
            Assert.AreEqual(match1.GetHashCode(), match2.GetHashCode());
            Assert.AreEqual(match1.Start, match2.Start);
            Assert.AreEqual(match1.Length, match2.Length);
            Assert.AreEqual(match1.Number, match2.Number);
            Assert.AreEqual(match1.RawString, match2.RawString);
            Assert.AreEqual("1 800 234 45 67", match1.RawString);
        }
        private void doTestNumberNonMatchesForLeniency(List <NumberTest> TestCases,
                                                       PhoneNumberUtil.Leniency leniency)
        {
            int matchFoundCount = 0;

            foreach (NumberTest Test in TestCases)
            {
                var iterator =
                    findNumbersForLeniency(Test.rawString, Test.region, leniency);
                PhoneNumberMatch match = iterator.FirstOrDefault();
                if (match != null)
                {
                    matchFoundCount++;
                    Console.WriteLine("Match found in " + Test.ToString() + " for leniency: " + leniency);
                }
            }
            Assert.Equal(0, matchFoundCount);
        }
        public void TestSequences()
        {
            // Test multiple occurrences.
            String text   = "Call 033316005  or 032316005!";
            String region = "NZ";

            PhoneNumber number1 = new PhoneNumber.Builder()
                                  .SetCountryCode(phoneUtil.GetCountryCodeForRegion(region))
                                  .SetNationalNumber(33316005).Build();
            PhoneNumberMatch match1 = new PhoneNumberMatch(5, "033316005", number1);

            PhoneNumber number2 = new PhoneNumber.Builder()
                                  .SetCountryCode(phoneUtil.GetCountryCodeForRegion(region))
                                  .SetNationalNumber(32316005).Build();
            PhoneNumberMatch match2 = new PhoneNumberMatch(19, "032316005", number2);

            var matches = phoneUtil.FindNumbers(text, region, PhoneNumberUtil.Leniency.POSSIBLE, long.MaxValue).GetEnumerator();

            matches.MoveNext();
            Assert.Equal(match1, matches.Current);
            matches.MoveNext();
            Assert.Equal(match2, matches.Current);
        }
        private void doTestInContext(String number, String defaultCountry,
                                     List <NumberContext> contextPairs, PhoneNumberUtil.Leniency leniency)
        {
            foreach (var context in contextPairs)
            {
                String prefix = context.leadingText;
                String text   = prefix + number + context.trailingText;

                int start    = prefix.Length;
                int length   = number.Length;
                var iterator = phoneUtil.FindNumbers(text, defaultCountry, leniency, long.MaxValue);

                PhoneNumberMatch match = iterator.First();
                Assert.NotNull(match);

                String extracted = text.Substring(match.Start, match.Length);
                Assert.True(start == match.Start && length == match.Length,
                            "Unexpected phone region in '" + text + "'; extracted '" + extracted + "'");
                Assert.Equal(number, extracted);
                Assert.Equal(match.RawString, extracted);

                EnsureTermination(text, defaultCountry, leniency);
            }
        }
        public void TestSequences()
        {
            // Test multiple occurrences.
            String text = "Call 033316005  or 032316005!";
            String region = "NZ";

            PhoneNumber number1 = new PhoneNumber.Builder()
                .SetCountryCode(phoneUtil.GetCountryCodeForRegion(region))
                .SetNationalNumber(33316005).Build();
            PhoneNumberMatch match1 = new PhoneNumberMatch(5, "033316005", number1);

            PhoneNumber number2 = new PhoneNumber.Builder()
                .SetCountryCode(phoneUtil.GetCountryCodeForRegion(region))
                .SetNationalNumber(32316005).Build();
            PhoneNumberMatch match2 = new PhoneNumberMatch(19, "032316005", number2);

            var matches = phoneUtil.FindNumbers(text, region, PhoneNumberUtil.Leniency.POSSIBLE, long.MaxValue).GetEnumerator();
            matches.MoveNext();
            Assert.AreEqual(match1, matches.Current);
            matches.MoveNext();
            Assert.AreEqual(match2, matches.Current);
        }
        public void TestMatchesMultiplePhoneNumbersSeparatedByPhoneNumberPunctuation()
        {
            String text = "Call 650-253-4561 -- 455-234-3451";
            String region = "US";

            PhoneNumber number1 = new PhoneNumber.Builder()
                .SetCountryCode(phoneUtil.GetCountryCodeForRegion(region))
                .SetNationalNumber(6502534561L)
                .Build();
            PhoneNumberMatch match1 = new PhoneNumberMatch(5, "650-253-4561", number1);

            PhoneNumber number2 = new PhoneNumber.Builder()
                .SetCountryCode(phoneUtil.GetCountryCodeForRegion(region))
                .SetNationalNumber(4552343451L)
                .Build();
            PhoneNumberMatch match2 = new PhoneNumberMatch(21, "455-234-3451", number2);

            var matches = phoneUtil.FindNumbers(text, region).GetEnumerator();
            matches.MoveNext();
            Assert.AreEqual(match1, matches.Current);
            matches.MoveNext();
            Assert.AreEqual(match2, matches.Current);
        }