Esempio n. 1
0
        public void Flatten_HelloWorld_Success()
        {
            // Arrange
            var json = "{" +
                       "    'origin': 'hello world'" +
                       "}";

            var grammar = new TraceryNet.Grammar(json);

            // Act
            var output = grammar.Flatten("#origin#");

            // Assert
            output.ShouldBeEqualTo("hello world");
        }
Esempio n. 2
0
        public void Flatten_PastTensifyCall_Called()
        {
            // Arrange
            var json = "{" +
                       "    'origin': 'you #verb.ed#?'," +
                       "    'verb': 'call'" +
                       "}";

            var grammar = new TraceryNet.Grammar(json);

            // Act
            var output = grammar.Flatten("#origin#");

            // Assert
            output.ShouldBeEqualTo("you called?");
        }
Esempio n. 3
0
        public void Flatten_PastTensifyBully_Bullied()
        {
            // Arrange
            var json = "{" +
                       "    'origin': 'you #verb.ed#'," +
                       "    'verb': 'bully'" +
                       "}";

            var grammar = new TraceryNet.Grammar(json);

            // Act
            var output = grammar.Flatten("#origin#");

            // Assert
            output.ShouldBeEqualTo("you bullied");
        }
Esempio n. 4
0
        public void Flatten_CaptitalizeAllCuteCat_CuteCat()
        {
            // Arrange
            var json = "{" +
                       "    'origin': 'you are a #animal.capitalizeAll#'," +
                       "    'animal': 'cute cat'" +
                       "}";

            var grammar = new TraceryNet.Grammar(json);

            // Act
            var output = grammar.Flatten("#origin#");

            // Assert
            output.ShouldBeEqualTo("you are a Cute Cat");
        }
Esempio n. 5
0
        public void Flatten_A_AnElephant()
        {
            // Arrange
            var json = "{" +
                       "    'origin': 'you are #animal.a#'," +
                       "    'animal': 'elephant'" +
                       "}";

            var grammar = new TraceryNet.Grammar(json);

            // Act
            var output = grammar.Flatten("#origin#");

            // Assert
            output.ShouldBeEqualTo("you are an elephant");
        }
Esempio n. 6
0
        public void SaveSymbol_NoExpansionSymbolWithModifier_Saves()
        {
            // Arrange
            var json = "{" +
                       "    'origin': '#[hero:alfred]story#'," +
                       "    'story': 'His name was #hero.capitalize#.'" +
                       "}";

            var grammar = new TraceryNet.Grammar(json);

            // Act
            var output = grammar.Flatten("#origin#");

            // Assert
            output.ShouldBeEqualTo("His name was Alfred.");
        }
Esempio n. 7
0
        public void Flatten_Capitalize_FirstLetterCapitalized()
        {
            // Arrange
            var json = "{" +
                       "    'origin': 'hello #animal.capitalize#'," +
                       "    'animal': 'cat'" +
                       "}";

            var grammar = new TraceryNet.Grammar(json);

            // Act
            var output = grammar.Flatten("#origin#");

            // Assert
            output.ShouldBeEqualTo("hello Cat");
        }
Esempio n. 8
0
        public void Flatten_BeeSpeak_Beezz()
        {
            // Arrange
            var json = "{" +
                       "    'origin': '#animal.beeSpeak# are very important'," +
                       "    'animal': 'bees'" +
                       "}";

            var grammar = new TraceryNet.Grammar(json);

            // Act
            var output = grammar.Flatten("#origin#");

            // Assert
            output.ShouldBeEqualTo("beezzz are very important");
        }
Esempio n. 9
0
        public void SaveSymbol_NoExpansionSymbol_Saves()
        {
            // Arrange
            var json = "{" +
                       "    'origin': '#[hero:Alfred]story#'," +
                       "    'story': 'His name was #hero#.'" +
                       "}";

            var grammar = new TraceryNet.Grammar(json);

            // Act
            var output = grammar.Flatten("#origin#");

            // Assert
            Assert.IsTrue(output == "His name was Alfred.");
        }
Esempio n. 10
0
        public void SaveSymbol_OneLevelDeep_Saves()
        {
            // Arrange
            var json = "{" +
                       "    'origin': '#[setName]name#'," +
                       "	'setName': '[name:Luigi]',"+
                       "}";

            var grammar = new TraceryNet.Grammar(json);

            // Act
            var output = grammar.Flatten("#origin#");

            // Assert
            Assert.IsTrue(output == "Luigi");
        }
Esempio n. 11
0
        public void Flatten_PastTensifyQuack_Quacked()
        {
            // Arrange
            var json = "{" +
                       "    'origin': 'you #verb.ed#'," +
                       "    'verb': 'quack'" +
                       "}";

            var grammar = new TraceryNet.Grammar(json);

            // Act
            var output = grammar.Flatten("#origin#");

            // Assert
            Assert.AreEqual(output, "you quacked");
        }
Esempio n. 12
0
        public void Flatten_ACaptitalize_ACat()
        {
            // Arrange
            var json = "{" +
                       "    'origin': 'you are #animal.a.capitalize#'," +
                       "    'animal': 'cat'" +
                       "}";

            var grammar = new TraceryNet.Grammar(json);

            // Act
            var output = grammar.Flatten("#origin#");

            // Assert
            Assert.AreEqual(output, "you are A cat");
        }
Esempio n. 13
0
        public void Flatten_ExpandSymbol_Animal()
        {
            // Arrange
            var json = "{" +
                       "    'origin': 'hello #animal#'," +
                       "    'animal': 'cat'" +
                       "}";

            var grammar = new TraceryNet.Grammar(json);

            // Act
            var output = grammar.Flatten("#origin#");

            // Assert
            output.ShouldBeEqualTo("hello cat");
        }
Esempio n. 14
0
        public void SaveSymbol_TwoLevelsDeep_Saves()
        {
            // Arrange
            var json = "{" +
                       "    'origin': '#[setName]name#'," +
                       "	'setName': '[name:#maleNames#]',"+
                       "	'maleNames': 'Mario'"+
                       "}";

            var grammar = new TraceryNet.Grammar(json);

            // Act
            var output = grammar.Flatten("#origin#");

            // Assert
            Assert.IsTrue(output == "Mario");
        }
Esempio n. 15
0
        public void Flatten_InQuotes_HelloQuoteWorldQuote()
        {
            // Arrange
            var json = "{" +
                       "    'origin': '#greeting# #place.inQuotes#'," +
                       "    'greeting': 'Hello'," +
                       "    'place': 'world'" +
                       "}";

            var grammar = new TraceryNet.Grammar(json);

            // Act
            var output = grammar.Flatten("#origin#");

            // Assert
            output.ShouldBeEqualTo("Hello \"world\"");
        }
Esempio n. 16
0
        public void SaveSymbol_OneExpansionSymbol_Saves()
        {
            // Arrange
            var json = "{" +
                       "    'origin': '#[hero:#name#]story#'," +
                       "    'name': 'Alfred'," +
                       "    'story': 'His name was #hero#.'" +
                       "}";

            var grammar = new TraceryNet.Grammar(json);

            // Act
            var output = grammar.Flatten("#origin#");

            // Assert
            output.ShouldBeEqualTo("His name was Alfred.");
        }
Esempio n. 17
0
        public void Flatten_Comma_HelloCommaWorld()
        {
            // Arrange
            var json = "{" +
                       "    'origin': '#greeting.comma# #place#'," +
                       "    'greeting': 'Hello'," +
                       "    'place': 'world'" +
                       "}";

            var grammar = new TraceryNet.Grammar(json);

            // Act
            var output = grammar.Flatten("#origin#");

            // Assert
            output.ShouldBeEqualTo("Hello, world");
        }
Esempio n. 18
0
        /// <summary>
        /// Entry point.
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            // A grammar json object to load from
            var json = "{" +
                       "    'origin': 'The #person# was feeling #mood#.'," +
                       "    'person': ['girl', 'dwarf', 'cat', 'dragon']," +
                       "    'mood': ['bashful', 'dopey', 'happy', 'sleepy', 'sneezy', 'grumpy']" +
                       "}";

            // The grammar constructor can take a string or a FileInfo
            var grammar = new TraceryNet.Grammar(json);

            // Alternatively:
            //      var grammar = new TraceryNet.Grammar(new FileInfo("grammar.json"));
            //
            // .. which would read all text from grammar.json and use that.

            // Generate 100 strings.
            for (var i = 0; i < 100; i++)
            {
                // Start generating from #origin#
                Console.WriteLine(grammar.Flatten("#origin#"));

                // Tracery will then run through the only string in #origin#
                // and find #person# and look up the 'person' rule.
                //
                // Seeing that person is an array and not a singular string,
                // it will pick one at random: say, 'girl'.
                //
                // Then, going back to origin, it'll continue until it finds
                // #mood#, doing the same thing, picking a mood at random,
                // say, happy.
                //
                // This results in the output: the girl was feeling happy.
                //
                // Sample outputs:
                //      The dwarf was feeling grumpy.
                //      The girl was feeling sneezy.
                //      The girl was feeling sleepy.
                //      The dwarf was feeling grumpy.
                //      The dragon was feeling dopey.
            }

            Console.ReadKey();
        }
Esempio n. 19
0
        public void CustomModifiers_MakeEverythingHelloWorld_HelloWorld()
        {
            // Arrange
            var json = "{" +
                       "    'origin': '#sentence.helloWorld#'," +
                       "    'sentence': 'this sentence is irrelevant'" +
                       "}";

            Func <string, string> f = delegate(string i)
            {
                return("hello world");
            };

            var grammar = new TraceryNet.Grammar(json);

            grammar.AddModifier("helloWorld", f);

            // Act
            var output = grammar.Flatten("#origin#");

            // Assert
            Assert.AreEqual(output, "hello world");
        }
Esempio n. 20
0
        public void CustomModifiers_ToUpper_ToUpper()
        {
            // Arrange
            var json = "{" +
                       "    'origin': '#sentence.toUpper#'," +
                       "    'sentence': 'hello cat'" +
                       "}";

            Func <string, string> f = delegate(string i)
            {
                return(i.ToUpper());
            };

            var grammar = new TraceryNet.Grammar(json);

            grammar.AddModifier("toUpper", f);

            // Act
            var output = grammar.Flatten("#origin#");

            // Assert
            Assert.AreEqual(output, "HELLO CAT");
        }
Esempio n. 21
0
        public void CustomModifiers_Slurring_Slurring()
        {
            // Arrange
            var json = "{" +
                       "    'origin': '#sentence.slur#'," +
                       "    'sentence': 'this is a long sentence ready for slurring'" +
                       "}";

            Func <string, string> f = delegate(string i)
            {
                var o      = "";
                var vowels = new char[] { 'a', 'e', 'i', 'o', 'u' };

                foreach (char c in i)
                {
                    o += c;

                    if (Array.IndexOf(vowels, c) > -1)
                    {
                        o += c;
                    }
                }

                return(o);
            };

            var grammar = new TraceryNet.Grammar(json);

            grammar.AddModifier("slur", f);

            // Act
            var output = grammar.Flatten("#origin#");

            // Assert
            Assert.AreEqual(output, "thiis iis aa loong seenteencee reeaady foor sluurriing");
        }