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"); }
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?"); }
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"); }
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"); }
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"); }
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."); }
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"); }
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"); }
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."); }
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"); }
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"); }
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"); }
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"); }
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"); }
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\""); }
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."); }
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"); }
/// <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(); }
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"); }
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"); }
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"); }