コード例 #1
0
 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);
 }
コード例 #2
0
    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);
    }
コード例 #3
0
    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);
    }