public void BreakIteratorThatIsEmpty()
        {
            var    locale = new Locale("de-DE");
            string text   = string.Empty;

            using (var bi = BreakIterator.CreateCharacterInstance(locale))
            {
                bi.SetText(text);

                Assert.AreEqual(locale, bi.Locale);
                Assert.AreEqual(text, bi.Text);
                Assert.AreEqual(0, bi.Boundaries.Length);

                Assert.AreEqual(0, bi.Current);
                Assert.AreEqual(BreakIterator.DONE, bi.MoveNext());
                Assert.AreEqual(0, bi.MoveFirst());
                Assert.AreEqual(0, bi.MoveLast());
                Assert.AreEqual(BreakIterator.DONE, bi.MovePrevious());

                // Default value is 0 when there was no rule applied.
                Assert.AreEqual(0, bi.GetRuleStatus());
                // When iterator is at DONE, it returns the default rule status vector.
                CollectionAssert.AreEqual(new[] { 0 }, bi.GetRuleStatusVector());
            }
        }
        public void BreakIteratorThatIsNull()
        {
            var locale = new Locale("de-DE");

            using (var bi = BreakIterator.CreateCharacterInstance(locale))
            {
                Assert.Throws <ArgumentNullException>(() =>
                {
                    bi.SetText(null);
                });
            }
        }
        public void CanSetNewText_Null()
        {
            var    locale     = new Locale("en-US");
            var    text       = "Good-day, kind sir !  Can I have a glass of water?  I am very parched.";
            string secondText = null;

            using (var bi = BreakIterator.CreateCharacterInstance(locale))
            {
                bi.SetText(text);

                Assert.Throws <ArgumentNullException>(() => bi.SetText(secondText));
            }
        }
        public void CreateChracterInstanceTest()
        {
            var locale   = new Locale("de-DE");
            var text     = "Good-bye, dear!";
            var expected = new[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 };

            using (var bi = BreakIterator.CreateCharacterInstance(locale))
            {
                bi.SetText(text);

                Assert.AreEqual(locale, bi.Locale);
                Assert.AreEqual(text, bi.Text);
                CollectionAssert.AreEqual(expected, bi.Boundaries);

                // Verify each boundary and rule status.
                for (int i = 0; i < expected.Length; i++)
                {
                    int current = bi.Current;
                    int status  = bi.GetRuleStatus();

                    Assert.AreEqual(expected[i], current);
                    Assert.AreEqual(0, status);

                    int moveNext = bi.MoveNext();
                    int next     = i + 1;

                    if (next < expected.Length)
                    {
                        Assert.AreEqual(expected[next], moveNext);
                    }
                    else
                    {
                        // Verify that the BreakIterator is exhausted because we've
                        // moved past every item.
                        Assert.AreEqual(BreakIterator.DONE, moveNext);
                    }
                }

                // Verify that the BreakIterator is exhausted because we've
                // moved past every item, so current should be the last offset.
                int lastIndex = expected.Length - 1;
                Assert.AreEqual(expected[lastIndex], bi.Current);
            }
        }