// This code is part of the Fungus library (https://github.com/snozbot/fungus) // It is released for free under the MIT open source license (https://github.com/snozbot/fungus/blob/master/LICENSE) using NUnit.Framework; namespace Fungus.Tests { [TestFixture] public class TextVariationSelectionTests { [Test] public void SimpleSequenceSelection() { Fungus.TextVariationHandler.ClearHistory(); string startingText = @"This is test [a|b|c]"; string startingTextA = @"This is test a"; string startingTextB = @"This is test b"; string startingTextC = @"This is test c"; string res = string.Empty; res = Fungus.TextVariationHandler.SelectVariations(startingText); Assert.AreEqual(res, startingTextA); res = Fungus.TextVariationHandler.SelectVariations(startingText); Assert.AreEqual(res, startingTextB); res = Fungus.TextVariationHandler.SelectVariations(startingText); Assert.AreEqual(res, startingTextC); res = Fungus.TextVariationHandler.SelectVariations(startingText); Assert.AreEqual(res, startingTextC); } [Test] public void SimpleCycleSelection() { Fungus.TextVariationHandler.ClearHistory(); string startingText = @"This is test [&a|b|c]"; string startingTextA = @"This is test a"; string startingTextB = @"This is test b"; string startingTextC = @"This is test c"; string res = string.Empty; res = Fungus.TextVariationHandler.SelectVariations(startingText); Assert.AreEqual(res, startingTextA); res = Fungus.TextVariationHandler.SelectVariations(startingText); Assert.AreEqual(res, startingTextB); res = Fungus.TextVariationHandler.SelectVariations(startingText); Assert.AreEqual(res, startingTextC); res = Fungus.TextVariationHandler.SelectVariations(startingText); Assert.AreEqual(res, startingTextA); res = Fungus.TextVariationHandler.SelectVariations(startingText); Assert.AreEqual(res, startingTextB); res = Fungus.TextVariationHandler.SelectVariations(startingText); Assert.AreEqual(res, startingTextC); } [Test] public void SimpleOnceSelection() { Fungus.TextVariationHandler.ClearHistory(); string startingText = @"This is test [!a|b|c]"; string startingTextA = @"This is test a"; string startingTextB = @"This is test b"; string startingTextC = @"This is test c"; string startingTextD = @"This is test "; string res = string.Empty; res = Fungus.TextVariationHandler.SelectVariations(startingText); Assert.AreEqual(res, startingTextA); res = Fungus.TextVariationHandler.SelectVariations(startingText); Assert.AreEqual(res, startingTextB); res = Fungus.TextVariationHandler.SelectVariations(startingText); Assert.AreEqual(res, startingTextC); res = Fungus.TextVariationHandler.SelectVariations(startingText); Assert.AreEqual(res, startingTextD); res = Fungus.TextVariationHandler.SelectVariations(startingText); Assert.AreEqual(res, startingTextD); } [Test] public void NestedSelection() { Fungus.TextVariationHandler.ClearHistory(); string startingText = @"This is test [a||sub [~a|b]|[!b|[~c|d]]]"; string startingTextA = @"This is test a"; string startingTextBlank = @"This is test "; string startingTextSubA = @"This is test sub a"; string startingTextSubB = @"This is test sub b"; string startingTextB = @"This is test b"; string startingTextC = @"This is test c"; string startingTextD = @"This is test d"; string res = string.Empty; res = Fungus.TextVariationHandler.SelectVariations(startingText); Assert.AreEqual(res, startingTextA); res = Fungus.TextVariationHandler.SelectVariations(startingText); Assert.AreEqual(res, startingTextBlank); res = Fungus.TextVariationHandler.SelectVariations(startingText); if (res != startingTextSubA && res != startingTextSubB) { Assert.Fail(); } res = Fungus.TextVariationHandler.SelectVariations(startingText); Assert.AreEqual(res, startingTextB); res = Fungus.TextVariationHandler.SelectVariations(startingText); if (res != startingTextC && res != startingTextD) { Assert.Fail(); } } } }