示例#1
0
        public void DicDrivenTrieSet_GetIteratorTest()
        {
            var values = this.GetTestValues();
            var target = new DicDrivenTrieSet <char, string>(
                values,
                false,
                this.dicFactory);
            var iterator = target.GetIterator();

            // A sequência vazia não existe
            Assert.IsFalse(iterator.Exists);

            for (int i = 0; i < values.Length; ++i)
            {
                iterator.Reset();
                var value = values[i];
                iterator.Reset();
                for (int j = 0; j < value.Length; ++j)
                {
                    var state = iterator.GoForward(value[j]);
                    Assert.IsTrue(state);
                }

                // O valor existe, uma vez que foi introduizo.
                Assert.IsTrue(iterator.Exists);

                // O valor procurado encontra-se associado ao final do iterador.
                var current = iterator.Current;
                Assert.AreEqual(current, i);

                var forwarded = iterator.GoForward(' ');
                Assert.IsFalse(forwarded);
            }
        }
示例#2
0
        public void DicDrivenTrieSet_IteratorTest()
        {
            var target = new DicDrivenTrieSet <char, string>();

            target.Add("Isto");
            target.Add("um");
            target.Add("teste");
            target.Add("iterador");
            target.Add("associativa");

            var text     = "Isto constitui um teste ao iterador da árvore associativa.";
            var expected = new[] {
                true,
                false,
                true,
                true,
                false,
                true,
                false,
                false,
                true
            };

            #region Verifica Existência

            var iterator = target.GetIterator();
            var length   = text.Length;
            var actual   = new List <bool>();
            var state    = 0;
            var i        = -1;
            while (state != -1)
            {
                ++i;
                if (state == 0)
                {
                    if (i < length)
                    {
                        var current = text[i];
                        if (current != ' ' && current != '.')
                        {
                            iterator.Reset();
                            if (iterator.GoForward(current))
                            {
                                state = 1;
                            }
                            else
                            {
                                // Ignora a palavra.
                                actual.Add(false);
                                iterator.Reset();
                                state = 2;
                            }
                        }
                    }
                    else
                    {
                        state = -1;
                    }
                }
                else if (state == 1)
                {
                    if (i < length)
                    {
                        var current = text[i];
                        if (current == ' ' || current == '.')
                        {
                            actual.Add(true);
                            iterator.Reset();
                            state = 0;
                        }
                        else
                        {
                            if (!iterator.GoForward(current))
                            {
                                // Ignora a palavra.
                                actual.Add(false);
                                iterator.Reset();
                                state = 2;
                            }
                        }
                    }
                    else
                    {
                        actual.Add(true);
                        state = -1;
                    }
                }
                else
                {
                    if (i < length)
                    {
                        var current = text[i];
                        if (current == ' ' || current == '.')
                        {
                            state = 0;
                        }
                    }
                    else
                    {
                        state = -1;
                    }
                }
            }

            #endregion Verifica Existência

            CollectionAssert.AreEquivalent(expected, actual);
        }