Пример #1
0
        public void TestRuleStatus()
        {
            BreakIterator bi = BreakIterator.GetWordInstance(ULocale.ENGLISH);

            bi.SetText("# ");
            assertEquals(null, bi.Next(), 1);
            assertTrue(null, bi.RuleStatus >= RuleBasedBreakIterator.WORD_NONE);
            assertTrue(null, bi.RuleStatus < RuleBasedBreakIterator.WORD_NONE_LIMIT);

            bi.SetText("3 ");
            assertEquals(null, bi.Next(), 1);
            assertTrue(null, bi.RuleStatus >= RuleBasedBreakIterator.WORD_NUMBER);
            assertTrue(null, bi.RuleStatus < RuleBasedBreakIterator.WORD_NUMBER_LIMIT);

            bi.SetText("a ");
            assertEquals(null, bi.Next(), 1);
            assertTrue(null, bi.RuleStatus >= RuleBasedBreakIterator.WORD_LETTER);
            assertTrue(null, bi.RuleStatus < RuleBasedBreakIterator.WORD_LETTER_LIMIT);


            bi.SetText("イ  ");
            assertEquals(null, bi.Next(), 1);
            assertTrue(null, bi.RuleStatus >= RuleBasedBreakIterator.WORD_KANA);
            // TODO: ticket #10261, Kana is not returning the correct status.
            // assertTrue(null, bi.getRuleStatus() < RuleBasedBreakIterator.WORD_KANA_LIMIT);
            // System.out.println("\n" + bi.getRuleStatus());

            bi.SetText("退 ");
            assertEquals(null, bi.Next(), 1);
            assertTrue(null, bi.RuleStatus >= RuleBasedBreakIterator.WORD_IDEO);
            assertTrue(null, bi.RuleStatus < RuleBasedBreakIterator.WORD_IDEO_LIMIT);
        }
Пример #2
0
        public void TestRuleStatus()
        {
            BreakIterator bi = BreakIterator.GetWordInstance(new UCultureInfo("en"));

            bi.SetText("# ");
            assertEquals(null, bi.Next(), 1);
            assertTrue(null, bi.RuleStatus >= BreakIterator.WordNone);
            assertTrue(null, bi.RuleStatus < BreakIterator.WordNoneLimit);

            bi.SetText("3 ");
            assertEquals(null, bi.Next(), 1);
            assertTrue(null, bi.RuleStatus >= BreakIterator.WordNumber);
            assertTrue(null, bi.RuleStatus < BreakIterator.WordNumberLimit);

            bi.SetText("a ");
            assertEquals(null, bi.Next(), 1);
            assertTrue(null, bi.RuleStatus >= BreakIterator.WordLetter);
            assertTrue(null, bi.RuleStatus < BreakIterator.WordLetterLimit);


            bi.SetText("イ  ");
            assertEquals(null, bi.Next(), 1);
            assertTrue(null, bi.RuleStatus >= BreakIterator.WordKana);
            // TODO: ticket #10261, Kana is not returning the correct status.
            // assertTrue(null, bi.RuleStatus < RuleStatus.WordKanaLimit);
            // Console.Out.WriteLine("\n" + bi.RuleStatus);

            bi.SetText("退 ");
            assertEquals(null, bi.Next(), 1);
            assertTrue(null, bi.RuleStatus >= BreakIterator.WordIdeo);
            assertTrue(null, bi.RuleStatus < BreakIterator.WordIdeoLimit);
        }
Пример #3
0
 public override void Reset()
 {
     base.Reset();
     wrapper.SetText(m_buffer, 0, 0);
     iterator.SetText(new string(wrapper.Text, wrapper.Start, wrapper.Length));
     length = usableLength = m_offset = 0;
 }
Пример #4
0
 public override void Reset()
 {
     base.Reset();
     wrapper.SetText(buffer, 0, 0);
     iterator.SetText(new string(buffer, 0, 0));
     length = usableLength = offset = 0;
 }
Пример #5
0
        public void TestRuleStatus()
        {
            BreakIterator bi = BreakIterator.GetWordInstance(ULocale.ENGLISH);

            bi.SetText("# ");
            assertEquals(null, bi.Next(), 1);
            assertTrue(null, bi.RuleStatus >= RuleStatus.WordNone);
            assertTrue(null, bi.RuleStatus < RuleStatus.WordNoneLimit);

            bi.SetText("3 ");
            assertEquals(null, bi.Next(), 1);
            assertTrue(null, bi.RuleStatus >= RuleStatus.WordNumber);
            assertTrue(null, bi.RuleStatus < RuleStatus.WordNumberLimit);

            bi.SetText("a ");
            assertEquals(null, bi.Next(), 1);
            assertTrue(null, bi.RuleStatus >= RuleStatus.WordLetter);
            assertTrue(null, bi.RuleStatus < RuleStatus.WordLetterLimit);


            bi.SetText("イ  ");
            assertEquals(null, bi.Next(), 1);
            assertTrue(null, bi.RuleStatus >= RuleStatus.WordKana);
            // TODO: ticket #10261, Kana is not returning the correct status.
            // assertTrue(null, bi.getRuleStatus() < RuleStatus.WordKanaLimit);
            // System.out.println("\n" + bi.getRuleStatus());

            bi.SetText("退 ");
            assertEquals(null, bi.Next(), 1);
            assertTrue(null, bi.RuleStatus >= RuleStatus.WordIdeo);
            assertTrue(null, bi.RuleStatus < RuleStatus.WordIdeoLimit);
        }
 public virtual int FindStartOffset(StringBuilder buffer, int start)
 {
     // avoid illegal start offset
     if (start > buffer.Length || start < 1) return start;
     bi.SetText(buffer.ToString(0, start - 0));
     bi.Last();
     return bi.Previous();
 }
Пример #7
0
        /// <summary>
        /// Updates this <code>LineBreakMeasurer</code> after a single
        /// character is inserted into the text, and sets the current
        /// position to the beginning of the paragraph.
        /// </summary>
        /// <param name="newParagraph"> the text after the insertion </param>
        /// <param name="insertPos"> the position in the text at which the character
        ///    is inserted </param>
        /// <exception cref="IndexOutOfBoundsException"> if <code>insertPos</code> is less
        ///         than the start of <code>newParagraph</code> or greater than
        ///         or equal to the end of <code>newParagraph</code> </exception>
        /// <exception cref="NullPointerException"> if <code>newParagraph</code> is
        ///         <code>null</code> </exception>
        /// <seealso cref= #deleteChar </seealso>
        public void InsertChar(AttributedCharacterIterator newParagraph, int insertPos)
        {
            Measurer.InsertChar(newParagraph, insertPos);

            Limit = newParagraph.EndIndex;
            Pos   = Start = newParagraph.BeginIndex;

            CharIter.Reset(Measurer.Chars, newParagraph.BeginIndex);
            BreakIter.SetText(CharIter);
        }
        /// <summary>
        /// Implements the "Final_Cased" condition
        ///
        /// Specification: Within the closest word boundaries containing C, there is a cased
        /// letter before C, and there is no cased letter after C.
        ///
        /// Regular Expression:
        ///   Before C: [{cased==true}][{wordBoundary!=true}]*
        ///   After C: !([{wordBoundary!=true}]*[{cased}])
        /// </summary>
        private static bool IsFinalCased(String src, int index, Locale locale)
        {
            BreakIterator wordBoundary = BreakIterator.GetWordInstance(locale);

            wordBoundary.SetText(src);
            int ch;

            // Look for a preceding 'cased' letter
            for (int i = index; (i >= 0) && !wordBoundary.IsBoundary(i); i -= Character.CharCount(ch))
            {
                ch = src.CodePointBefore(i);
                if (IsCased(ch))
                {
                    int len = src.Length();
                    // Check that there is no 'cased' letter after the index
                    for (i = index + Character.CharCount(src.CodePointAt(index)); (i < len) && !wordBoundary.IsBoundary(i); i += Character.CharCount(ch))
                    {
                        ch = src.CodePointAt(i);
                        if (IsCased(ch))
                        {
                            return(false);
                        }
                    }

                    return(true);
                }
            }

            return(false);
        }
Пример #9
0
        public void TestBug4153072()
        {
            BreakIterator iter  = BreakIterator.GetWordInstance();
            String        str   = "...Hello, World!...";
            int           begin = 3;
            int           end   = str.Length - 3;

            // not used boolean gotException = false;


            iter.SetText(new StringCharacterIterator(str, begin, end, begin));
            for (int index = -1; index < begin + 1; ++index)
            {
                try
                {
                    iter.IsBoundary(index);
                    if (index < begin)
                    {
                        Errln("Didn't get exception with offset = " + index +
                              " and begin index = " + begin);
                    }
                }
                catch (ArgumentException e)
                {
                    if (index >= begin)
                    {
                        Errln("Got exception with offset = " + index +
                              " and begin index = " + begin);
                    }
                }
            }
        }
Пример #10
0
 private void Consume(BreakIterator bi, CharacterIterator ci)
 {
     bi.SetText(ci);
     while (bi.Next() != BreakIterator.Done)
     {
     }
 }
Пример #11
0
        public void TestGetTitleInstance()
        {
            BreakIterator bi = BreakIterator.GetTitleInstance(new CultureInfo("en-CA"));

            TestFmwk.assertNotEquals("Title instance break iterator not correctly instantiated", bi.First(), null);
            bi.SetText("Here is some Text");
            TestFmwk.assertEquals("Title instance break iterator not correctly instantiated", bi.First(), 0);
        }
Пример #12
0
 /**
  * @param filteredBI
  * @param text
  */
 private void assertFrenchBreakBehavior(BreakIterator filteredBI, String text)
 {
     Logln("Testing French behavior:");
     filteredBI.SetText(text);
     assertEquals("6th next", 20, filteredBI.Next());
     assertEquals("6th next", 84, filteredBI.Next());
     filteredBI.First();
 }
Пример #13
0
 private void Consume(BreakIterator bi, CharacterIterator ci)
 {
     bi.SetText(ci.toString());
     while (bi.Next() != BreakIterator.DONE)
     {
         ;
     }
 }
Пример #14
0
        /**
         * @param filteredBI
         * @param text
         */
        private void assertEnglishBreakBehavior(BreakIterator filteredBI, String text)
        {
            Logln("Testing English filtered behavior:");
            filteredBI.SetText(text);

            assertEquals("5th next", 84, filteredBI.Next());
            assertEquals("5th next", 278, filteredBI.Next());
            filteredBI.First();
        }
Пример #15
0
 /**
  * @param filteredBI
  * @param text
  */
 private void assertDefaultBreakBehavior(BreakIterator filteredBI, String text)
 {
     Logln("Testing Default Behavior:");
     filteredBI.SetText(text);
     assertEquals("1st next", 20, filteredBI.Next());
     assertEquals("1st next", 84, filteredBI.Next());
     assertEquals("1st next", 90, filteredBI.Next());
     assertEquals("1st next", 181, filteredBI.Next());
     assertEquals("1st next", 278, filteredBI.Next());
     filteredBI.First();
 }
Пример #16
0
        private void UxBreakClick(object sender, EventArgs e)
        {
            using (BreakIterator bi = BreakIterator.CreateWordInstance(Locale.GetUS()))
            {
                bi.SetText(this.uxText.Text);

                var words = bi.Enumerate().ToList();

                MessageBox.Show(string.Join("-", words.ToArray()));
            }
        }
Пример #17
0
        public void TestFilteredJapanese()
        {
            ULocale       loc = ULocale.JAPANESE;
            BreakIterator brk = FilteredBreakIteratorBuilder
                                .GetInstance(loc)
                                .WrapIteratorWithFilter(BreakIterator.GetSentenceInstance(loc));

            brk.SetText("OKです。");
            assertEquals("Starting point", 0, brk.Current);
            assertEquals("Next point", 5, brk.Next());
            assertEquals("Last point", BreakIterator.Done, brk.Next());
        }
Пример #18
0
        /** Asserts that two breakiterators break the text the same way */
        public void assertSameBreaks(CharacterIterator one, CharacterIterator two, BreakIterator expected, BreakIterator actual)
        {
            expected.SetText(one);
            actual.SetText(two);

            assertEquals(expected.Current, actual.Current);

            // next()
            int v = expected.Current;

            while (v != BreakIterator.DONE)
            {
                assertEquals(v = expected.Next(), actual.Next());
                assertEquals(expected.Current, actual.Current);
            }

            // first()
            assertEquals(expected.First(), actual.First());
            assertEquals(expected.Current, actual.Current);
            // last()
            assertEquals(expected.Last(), actual.Last());
            assertEquals(expected.Current, actual.Current);

            // previous()
            v = expected.Current;
            while (v != BreakIterator.DONE)
            {
                assertEquals(v = expected.Previous(), actual.Previous());
                assertEquals(expected.Current, actual.Current);
            }

            // following()
            for (int i = one.BeginIndex; i <= one.EndIndex; i++)
            {
                expected.First();
                actual.First();
                assertEquals(expected.Following(i), actual.Following(i));
                assertEquals(expected.Current, actual.Current);
            }

            // preceding()
            for (int i = one.BeginIndex; i <= one.EndIndex; i++)
            {
                expected.Last();
                actual.Last();
                assertEquals(expected.Preceding(i), actual.Preceding(i));
                assertEquals(expected.Current, actual.Current);
            }
        }
Пример #19
0
        private void UxOccurrenceCountClick(object sender, EventArgs e)
        {
            using (BreakIterator bi = BreakIterator.CreateWordInstance(Locale.GetUS()))
            {
                bi.SetText(this.uxText.Text);

                var words = bi.Enumerate()
                            .GroupBy(w => w)
                            .OrderBy(x => x.Count())
                            .Reverse()
                            .Select(x => x.Key + " : " + x.Count())
                            .Take(10)
                            .ToArray();

                MessageBox.Show(string.Join(Environment.NewLine, words));
            }
        }
Пример #20
0
        private void MakeLayoutWindow(int localStart)
        {
            int compStart = localStart;
            int compLimit = FChars.Length;

            // If we've already gone past the layout window, format to end of paragraph
            if (LayoutCount > 0 && !HaveLayoutWindow)
            {
                float avgLineLength = System.Math.Max(LayoutCharCount / LayoutCount, 1);
                compLimit = System.Math.Min(localStart + (int)(avgLineLength * EST_LINES), FChars.Length);
            }

            if (localStart > 0 || compLimit < FChars.Length)
            {
                if (CharIter == null)
                {
                    CharIter = new CharArrayIterator(FChars);
                }
                else
                {
                    CharIter.Reset(FChars);
                }
                if (FLineBreak == null)
                {
                    FLineBreak = BreakIterator.LineInstance;
                }
                FLineBreak.SetText(CharIter);
                if (localStart > 0)
                {
                    if (!FLineBreak.IsBoundary(localStart))
                    {
                        compStart = FLineBreak.Preceding(localStart);
                    }
                }
                if (compLimit < FChars.Length)
                {
                    if (!FLineBreak.IsBoundary(compLimit))
                    {
                        compLimit = FLineBreak.Following(compLimit);
                    }
                }
            }

            EnsureComponents(compStart, compLimit);
            HaveLayoutWindow = true;
        }
        public void IsBoundary(BreakIterator.UBreakIteratorType type,
                               string text,
                               int[] offsetsToTest,
                               bool[] expectedIsBoundary,
                               int[] expectedOffsets) // expected BreakIterator.Current after calling IsBoundary.
        {
            var locale = new Locale("zh");

            BreakIterator bi = default(BreakIterator);

            try
            {
                switch (type)
                {
                case BreakIterator.UBreakIteratorType.SENTENCE:
                    bi = BreakIterator.CreateSentenceInstance(locale);
                    break;

                case BreakIterator.UBreakIteratorType.WORD:
                    bi = BreakIterator.CreateWordInstance(locale);
                    break;

                default:
                    throw new NotSupportedException("This iterator type is not supported in this test yet. [" + type + "]");
                }

                bi.SetText(text);

                for (int i = 0; i < offsetsToTest.Length; i++)
                {
                    var isBoundary = bi.IsBoundary(offsetsToTest[i]);

                    Assert.AreEqual(expectedIsBoundary[i], isBoundary, "Expected IsBoundary was not equal at i: {0}, offset: {1}", i, offsetsToTest[i]);
                    Assert.AreEqual(expectedOffsets[i], bi.Current);
                }
            }
            finally
            {
                if (bi != default(BreakIterator))
                {
                    bi.Dispose();
                }
            }
        }
Пример #22
0
        public void TestGetSetText()
        {
            Logln("Testing getText setText ");
            String str1 = "first string.";
            String str2 = "Second string.";
            //RuleBasedBreakIterator charIter1 = (RuleBasedBreakIterator) BreakIterator.getCharacterInstance(Locale.getDefault());
            RuleBasedBreakIterator wordIter1 = (RuleBasedBreakIterator)BreakIterator.GetWordInstance(CultureInfo.CurrentCulture);
            CharacterIterator      text1     = new StringCharacterIterator(str1);

            //CharacterIterator text1Clone = (CharacterIterator) text1.Clone();
            //CharacterIterator text2 = new StringCharacterIterator(str2);
            wordIter1.SetText(str1);
            if (!wordIter1.Text.Equals(text1))
            {
                Errln("ERROR:1 error in setText or getText ");
            }
            if (wordIter1.Current != 0)
            {
                Errln("ERROR:1 setText did not set the iteration position to the beginning of the text, it is"
                      + wordIter1.Current + "\n");
            }
            wordIter1.Next(2);
            wordIter1.SetText(str2);
            if (wordIter1.Current != 0)
            {
                Errln("ERROR:2 setText did not reset the iteration position to the beginning of the text, it is"
                      + wordIter1.Current + "\n");
            }

            // Test the CharSequence overload of setText() for a simple case.
            BreakIterator lineIter = BreakIterator.GetLineInstance(new CultureInfo("en"));
            ICharSequence csText   = "Hello, World. ".ToCharSequence();
            // Expected Line Brks  ^      ^      ^
            //                     0123456789012345
            List <int> expected = new List <int>();

            expected.Add(0); expected.Add(7); expected.Add(14);
            lineIter.SetText(csText);
            for (int pos = lineIter.First(); pos != BreakIterator.Done; pos = lineIter.Next())
            {
                assertTrue("", expected.Contains(pos));
            }
            assertEquals("", csText.Length, lineIter.Current);
        }
Пример #23
0
        public void TestEndBehavior()
        {
            String        testString = "boo.";
            BreakIterator wb         = BreakIterator.GetWordInstance();

            wb.SetText(testString);

            if (wb.First() != 0)
            {
                Errln("Didn't get break at beginning of string.");
            }
            if (wb.Next() != 3)
            {
                Errln("Didn't get break before period in \"boo.\"");
            }
            if (wb.Current != 4 && wb.Next() != 4)
            {
                Errln("Didn't get break at end of string.");
            }
        }
Пример #24
0
        public void TestPreceding()
        {
            String        words3 = "aaa bbb ccc";
            BreakIterator e      = BreakIterator.GetWordInstance(CultureInfo.CurrentCulture);

            e.SetText(words3);
            e.First();
            int p1 = e.Next();
            int p2 = e.Next();
            int p3 = e.Next();
            int p4 = e.Next();

            int f = e.Following(p2 + 1);
            int p = e.Preceding(p2 + 1);

            if (f != p3)
            {
                Errln("IntlTestTextBoundary::TestPreceding: f!=p3");
            }
            if (p != p2)
            {
                Errln("IntlTestTextBoundary::TestPreceding: p!=p2");
            }

            if (p1 + 1 != p2)
            {
                Errln("IntlTestTextBoundary::TestPreceding: p1+1!=p2");
            }

            if (p3 + 1 != p4)
            {
                Errln("IntlTestTextBoundary::TestPreceding: p3+1!=p4");
            }

            if (!e.IsBoundary(p2) || e.IsBoundary(p2 + 1) || !e.IsBoundary(p3))
            {
                Errln("IntlTestTextBoundary::TestPreceding: isBoundary err");
            }
        }
Пример #25
0
        public void TestBug12918()
        {
            // This test triggered an assertion failure in ICU4C, in dictbe.cpp
            // The equivalent code in ICU4J is structured slightly differently,
            // and does not appear vulnerable to the same issue.
            //
            // \u3325 decomposes with normalization, then the CJK dictionary
            // finds a break within the decomposition.

            String        crasherString = "\u3325\u4a16";
            BreakIterator iter          = BreakIterator.GetWordInstance(ULocale.ENGLISH);

            iter.SetText(crasherString);
            iter.First();
            int pos     = 0;
            int lastPos = -1;

            while ((pos = iter.Next()) != BreakIterator.Done)
            {
                assertTrue("", pos > lastPos);
            }
        }
Пример #26
0
 public void SetText(string text)
 {
     this.text = text;
     wordBreaker.SetText(text);
 }
Пример #27
0
        public void TestLineIteration()
        {
            BreakIterator bi = GetLineInstance(System.Globalization.CultureInfo.InvariantCulture);

            // Test empty
            Assert.AreEqual(0, bi.Current);
            Assert.AreEqual(BreakIterator.Done, bi.Next());
            Assert.AreEqual(0, bi.Current);

            bi.SetText(LINE_TEXT);

            // Ensure position starts at 0 when initialized
            Assert.AreEqual(0, bi.Current);

            // Check first boundary (Apache\t^Lucene) - Ensure we break on \t
            Assert.AreEqual(7, bi.Next());

            // Ensure Current returns the most recent boundary
            Assert.AreEqual(7, bi.Current);

            // Check next boundary (Lucene^(TM))
            Assert.AreEqual(13, bi.Next());

            // Ensure Current returns the most recent boundary
            Assert.AreEqual(13, bi.Current);

            // Check next boundary (Lucene(TM) ^is a)
            Assert.AreEqual(18, bi.Next());

            // Ensure Current returns the most recent boundary
            Assert.AreEqual(18, bi.Current);

            // Move to start of high-performance
            bi.Next();
            bi.Next();

            // Check next boundary (high-\n^performance)
            Assert.AreEqual(29, bi.Next());


            // Check last boundary (in Java.^)
            Assert.AreEqual(108, bi.Last());


            // Check move past last boundary
            Assert.AreEqual(BreakIterator.Done, bi.Next());

            // Ensure we are still at last boundary
            Assert.AreEqual(108, bi.Current);


            // Check MovePrevious
            Assert.AreEqual(103, bi.Previous());

            // Ensure we get the same value for Current as the last move
            Assert.AreEqual(103, bi.Current);


            // Check MoveFirst
            Assert.AreEqual(0, bi.First());

            // Ensure we get the same value for Current as the last move
            Assert.AreEqual(0, bi.Current);


            // Check moving beyond first boundary
            Assert.AreEqual(BreakIterator.Done, bi.Previous());

            // Ensure we are still at first boundary
            Assert.AreEqual(0, bi.Current);


            // Check MoveLast()
            Assert.AreEqual(108, bi.Last());
        }
Пример #28
0
        public void TestWordIteration()
        {
            BreakIterator bi = GetWordInstance(System.Globalization.CultureInfo.InvariantCulture);

            bi.SetText("");

            // Test empty
            Assert.AreEqual(0, bi.Current);
            Assert.AreEqual(BreakIterator.Done, bi.Next());
            Assert.AreEqual(0, bi.Current);

            bi.SetText(TEXT);

            // Ensure position starts at 0 when initialized
            Assert.AreEqual(0, bi.Current);

            // Check first boundary (Apache^)
            Assert.AreEqual(6, bi.Next());

            // Ensure Current returns the last boundary iterated to
            Assert.AreEqual(6, bi.Current);

            // Check second boundary (^Lucene)
            Assert.AreEqual(7, bi.Next());

            // Ensure Current returns the last boundary iterated to
            Assert.AreEqual(7, bi.Current);

            // Check third boundary (Lucene^)
            Assert.AreEqual(13, bi.Next());

            // Ensure Current returns the last boundary iterated to
            Assert.AreEqual(13, bi.Current);

            // Check fourth boundary (^TM)
            Assert.AreEqual(14, bi.Next());

            // Check fifth boundary (TM^)
            Assert.AreEqual(16, bi.Next());

            // Check sixth boundary (TM)^
            Assert.AreEqual(17, bi.Next());

            // Check seventh boundary (^is)
            Assert.AreEqual(18, bi.Next());

            // Move to (^high-performance)
            bi.Next();
            bi.Next();
            bi.Next();

            // Check next boundary (^high-performance)
            Assert.AreEqual(23, bi.Next());

            // Ensure we don't break on hyphen (high-performance^)
            Assert.AreEqual(39, bi.Next());


            // Check MoveLast()
            Assert.AreEqual(107, bi.Last());

            // Check going past last boundary
            Assert.AreEqual(BreakIterator.Done, bi.Next());

            // Check we are still at last boundary
            Assert.AreEqual(107, bi.Current);


            // Check MoveFirst()
            Assert.AreEqual(0, bi.First());

            // Check going past first boundary
            Assert.AreEqual(BreakIterator.Done, bi.Previous());

            // Check we are still at first boundary
            Assert.AreEqual(0, bi.Current);
        }
Пример #29
0
        public void TestSentenceIteration()
        {
            BreakIterator bi = GetSentenceInstance(System.Globalization.CultureInfo.InvariantCulture);

            bi.SetText("");

            // Test empty
            Assert.AreEqual(0, bi.Current);
            Assert.AreEqual(BreakIterator.Done, bi.Next());
            Assert.AreEqual(0, bi.Current);

            bi.SetText(SENTENCE_TEXT);

            // Ensure position starts at 0 when initialized
            Assert.AreEqual(0, bi.Current);

            // Check first boundary (in Java.^) - Ensure we don't break on \n
            Assert.AreEqual(108, bi.Next());

            // Ensure Current returns the most recent boundary
            Assert.AreEqual(108, bi.Current);

            // Check next boundary (especially cross-platform.^)
            Assert.AreEqual(221, bi.Next());

            // Check next boundary (free download.^)
            Assert.AreEqual(290, bi.Next());

            // Check next boundary (things easy.^)
            Assert.AreEqual(324, bi.Next());

            // Check next boundary (is powerful.^)
            Assert.AreEqual(344, bi.Next());

            // Check next boundary (is exciting.^)
            Assert.AreEqual(364, bi.Next());

            // Check next boundary (is cool.^)
            Assert.AreEqual(380, bi.Next());

            // Check last boundary (Lucene now?^)
            Assert.AreEqual(400, bi.Next());

            // Check move past last boundary
            Assert.AreEqual(BreakIterator.Done, bi.Next());

            // Ensure we are still at last boundary
            Assert.AreEqual(400, bi.Current);


            // Check MovePrevious
            Assert.AreEqual(380, bi.Previous());

            // Ensure we get the same value for Current as the last move
            Assert.AreEqual(380, bi.Current);


            // Check MoveFirst
            Assert.AreEqual(0, bi.First());

            // Ensure we get the same value for Current as the last move
            Assert.AreEqual(0, bi.Current);

            // Check moving beyond first boundary
            Assert.AreEqual(BreakIterator.Done, bi.Previous());

            // Ensure we are still at first boundary
            Assert.AreEqual(0, bi.Current);


            // Check MoveLast()
            Assert.AreEqual(400, bi.Last());
        }
Пример #30
0
        public void TestWordIterationThai()
        {
            BreakIterator bi = GetWordInstance(new System.Globalization.CultureInfo("th"));

            bi.SetText("");


            // Test empty
            Assert.AreEqual(0, bi.Current);
            Assert.AreEqual(BreakIterator.Done, bi.Next());
            Assert.AreEqual(0, bi.Current);

            bi.SetText("บริษัทMicrosoftบริการดีที่สุด");

            // Ensure position starts at 0 when initialized
            Assert.AreEqual(0, bi.Current);

            // Check first boundary (บริษัท^Microsoft)
            Assert.AreEqual(6, bi.Next());

            // Ensure Current returns the last boundary iterated to
            Assert.AreEqual(6, bi.Current);

            // Check second boundary (Microsoft^บริการ)
            Assert.AreEqual(15, bi.Next());

            // Ensure Current returns the last boundary iterated to
            Assert.AreEqual(15, bi.Current);

            // Check third boundary (บริการ^ดี)
            Assert.AreEqual(21, bi.Next());

            // Ensure Current returns the last boundary iterated to
            Assert.AreEqual(21, bi.Current);

            // Check fourth boundary (ดี^ที่สุด)
            Assert.AreEqual(23, bi.Next());

            // Check fifth boundary (ดีที่สุด^)
            Assert.AreEqual(29, bi.Next());

            // Check beyond last boundary (ดีที่สุด)^
            Assert.AreEqual(BreakIterator.Done, bi.Next());

            // Check we are still at last boundary
            Assert.AreEqual(29, bi.Current);

            // Check MovePrevious() (ดี^ที่สุด)
            Assert.AreEqual(23, bi.Previous());


            // Check MoveFirst()
            Assert.AreEqual(0, bi.First());

            // Check going past first boundary
            Assert.AreEqual(BreakIterator.Done, bi.Previous());

            // Check we are still at first boundary
            Assert.AreEqual(0, bi.Current);


            // Check Numerals
            bi.SetText("๑23๔๕๖7");

            // Ensure position starts at 0 when initialized
            Assert.AreEqual(0, bi.Current);

            // Ensure Hindu and Thai numerals stay in one group
            Assert.AreEqual(7, bi.Next());
        }
Пример #31
0
 private void Consume(BreakIterator bi, CharacterIterator ci)
 {
     bi.SetText(ci.toString());
     while (bi.Next() != BreakIterator.DONE)
     {
         ;
     }
 }