public void TestParseFile() { Parser.Line[] lines = Parser.ParseFile( ":: someone is (something)\n" + " :: child condition\n" + " + child claim\n" + "\n" + " :: deindented condition\n" + " + child claim 2\n" + "+ root claim\n" ); Assert.AreEqual(2, lines.Length); Parser.Line line = lines[0]; Assert.AreEqual(":: someone is (something)", line.text); Assert.AreEqual(0, line.indentLevel); Assert.AreEqual(2, line.children.Count); Parser.Line childCondition = line.children[0]; Assert.AreEqual(" :: child condition", childCondition.text); Assert.AreEqual(1, childCondition.children.Count); Assert.AreEqual(line, childCondition.parent); Parser.Line childClaim = childCondition.children[0]; Assert.AreEqual(" + child claim", childClaim.text); Assert.AreEqual(0, childClaim.children.Count); Assert.AreEqual(childCondition, childClaim.parent); Parser.Line deindentedCondition = line.children[1]; Assert.AreEqual(" :: deindented condition", deindentedCondition.text); Assert.AreEqual(1, deindentedCondition.children.Count); Parser.Line rootClaim = lines[1]; Assert.AreEqual("+ root claim", rootClaim.text); Assert.AreEqual(0, rootClaim.children.Count); }
public void TestCharactersWithinBindings() { Parser.Line line = Parser.ParseLine("+ a string is \"th'is, \""); Assert.AreEqual("a string is %s", line.binding.key); Assert.AreEqual(1, line.binding.tokens.Length); line = Parser.ParseLine("+ \"The Hut\"'s description is \"You're outside a big hut.\""); Assert.AreEqual("%s's description is %s", line.binding.key); Assert.AreEqual(2, line.binding.tokens.Length); }
public void TestParseLine() { Parser.Line line = Parser.ParseLine(":: is a (monster)"); Assert.AreEqual(":: is a (monster)", line.text); Assert.AreEqual(0, line.indentLevel); Assert.AreEqual(Parser.LineType.Condition, line.type); Assert.AreEqual("is a %s", line.binding.key); Assert.AreEqual(0, line.children.Count); line = Parser.ParseLine(" + knows things"); Assert.AreEqual(" + knows things", line.text); Assert.AreEqual(2, line.indentLevel); Assert.AreEqual(Parser.LineType.Claim, line.type); Assert.AreEqual("knows things", line.binding.key); Assert.AreEqual(0, line.children.Count); line = Parser.ParseLine(" * Action (thing)"); Assert.AreEqual(Parser.LineType.Action, line.type); Assert.AreEqual("Action %s", line.binding.key); }