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); } }
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); }