public void cullBachelorsTest() { // Test removal of bachelors as leaves on different levels SExpression root = new SExpression(SExpression.FormatType.Document); SExpression statement = root.AddChild(new SExpression(SExpression.FormatType.Statement)); SExpression under = statement.AddChild(new SExpression(SExpression.FormatType.Under)); under.AddChild(new SString("x")); SExpression italic = under.AddChild(new SExpression(SExpression.FormatType.Italic)); italic.AddChild(new SString("y")); SExpression strike = italic.AddChild(new SExpression(SExpression.FormatType.Strike)); strike.AddChild(new SString("z")); italic.AddChild(new SExpression(SExpression.FormatType.Color, null, 15)); under.AddChild(new SExpression(SExpression.FormatType.Size, null, 12)); Assert.AreEqual("document(statement(under(\"x\", italic(\"y\", strike(\"z\"), color15()), size12())))", root.ToString()); root.cullBachelors(); Assert.AreEqual("document(statement(under(\"x\", italic(\"y\", strike(\"z\")))))", root.ToString()); // Ensure subsequent calls don't remove anything else root.cullBachelors(); Assert.AreEqual("document(statement(under(\"x\", italic(\"y\", strike(\"z\")))))", root.ToString()); }
public void SizeBadChildren() { SExpression size = new SExpression(SExpression.FormatType.Size); size.AddChild(new SString("test1")); size.AddChild(new SString("test2")); Parser.parse(size); }
public void StatementBadChildren() { SExpression statement = new SExpression(SExpression.FormatType.Statement); statement.AddChild(new SString("test1")); statement.AddChild(new SString("test2")); Parser.parse(statement); }
public void SubFirstChild() { SExpression size = new SExpression(SExpression.FormatType.Size); SExpression sub = size.AddChild(new SExpression(SExpression.FormatType.Sub)); sub.AddChild(new SString("arg1")); sub.AddChild(new SString("arg2")); Parser.parse(size); }
public void UnderBadChildren() { SExpression under = new SExpression(SExpression.FormatType.Under); under.AddChild(new SString("test1")); under.AddChild(new SString("test2")); under.AddChild(new SString("test3")); Parser.parse(under); }
public void CommaToken() { SExpression size = new SExpression(SExpression.FormatType.Size); SExpression under = size.AddChild(new SExpression(SExpression.FormatType.Under)); under.AddChild(new SString("bad,arg")); under.AddChild(new SString("test")); size.AddChild(new SString(",")); size.AddChild(new SString("test2")); Parser.parse(size); }
public void CommaFirst() { SExpression size = new SExpression(SExpression.FormatType.Size); size.AddChild(new SString(",")); SExpression under = size.AddChild(new SExpression(SExpression.FormatType.Under)); under.AddChild(new SString("test1")); under.AddChild(new SString("test2")); size.AddChild(new SString(",")); size.AddChild(new SString("test3")); Parser.parse(size); }
public void IndexNotSWithArgs() { SExpression idx = new SExpression(SExpression.FormatType.Index); idx.AddChild(new SString("test")); Parser.parse(idx); }
public void FunctionNotSWithArgs() { SExpression func = new SExpression(SExpression.FormatType.Function); func.AddChild(new SString("test")); Parser.parse(func); }
public void ItalicBadChildren() { SExpression italic = new SExpression(SExpression.FormatType.Italic); italic.AddChild(new SString("test")); Parser.parse(italic); }
public void BoldBadChildren() { SExpression bold = new SExpression(SExpression.FormatType.Bold); bold.AddChild(new SString("test")); Parser.parse(bold); }
public void DocumentBadChildren() { SExpression root = new SExpression(SExpression.FormatType.Document); root.AddChild(new SString("test")); Parser.parse(root); }
public void isEmptyTest() { SExpression root = new SExpression(SExpression.FormatType.Document); Assert.IsTrue(root.isEmpty()); SExpression statement = root.AddChild(new SExpression(SExpression.FormatType.Statement)); Assert.IsFalse(root.isEmpty()); Assert.IsTrue(statement.isEmpty()); }
public void PreParseSExpressions() { SExpression seq = new SExpression(SExpression.FormatType.Sequence); SExpression under = seq.AddChild(new SExpression(SExpression.FormatType.Under)); under.AddChild(new SString("result")); List <SExpression> funcArgs = new List <SExpression>(); funcArgs.Add(new SString("x")); funcArgs.Add(new SString("y")); under.AddChild(new SWithArgs(SExpression.FormatType.Function, new SString("func"), funcArgs)); SExpression idx = seq.AddChild(new SWithArgs(SExpression.FormatType.Index, new SString("array"))); idx.AddChild(new SString("result")); Assert.AreEqual("seq(under(\"result\", function(\"func\", (\"x\", \"y\"))), index(\"array\", (\"result\")))", seq.ToString()); Assert.AreEqual("SeqC(BindC(IdC(\"result\"), FuncC(IdC(\"func\"), (IdC(\"x\"), IdC(\"y\")))), IndexC(IdC(\"array\")[IdC(\"result\")]))", Parser.parse(seq).ToString()); }
public void ToStringTest() { // Test nesting, one child (linear) SExpression root = new SExpression(SExpression.FormatType.Document); SExpression statement = root.AddChild(new SExpression(SExpression.FormatType.Statement)); SExpression str = statement.AddChild(new SString("testString")); Assert.AreEqual("\"testString\"", str.ToString()); Assert.AreEqual("statement(\"testString\")", statement.ToString()); Assert.AreEqual("document(statement(\"testString\"))", root.ToString()); // Test nesting, many children (branching) statement = root.AddChild(new SExpression(SExpression.FormatType.Statement)); SExpression under = statement.AddChild(new SExpression(SExpression.FormatType.Under)); under.AddChild(new SString("x")); SExpression italic = under.AddChild(new SExpression(SExpression.FormatType.Italic)); italic.AddChild(new SString("y")); SExpression strike = italic.AddChild(new SExpression(SExpression.FormatType.Strike)); strike.AddChild(new SString("z")); Assert.AreEqual("statement(under(\"x\", italic(\"y\", strike(\"z\"))))", statement.ToString()); Assert.AreEqual("document(statement(\"testString\"), " + "statement(under(\"x\", italic(\"y\", strike(\"z\")))))", root.ToString()); // Test last few SExpression.FormatTypes statement = root.AddChild(new SExpression(SExpression.FormatType.Statement)); SExpression bold = statement.AddChild(new SExpression(SExpression.FormatType.Bold)); bold.AddChild(new SString("cond")); SExpression size = bold.AddChild(new SExpression(SExpression.FormatType.Size, null, 12)); under = size.AddChild(new SExpression(SExpression.FormatType.Under)); under.AddChild(new SString("a")); italic = under.AddChild(new SExpression(SExpression.FormatType.Italic)); italic.AddChild(new SString("a")); italic.AddChild(new SString("one")); size.AddChild(new SString(",")); size.AddChild(new SString("Mult")); SExpression super = size.AddChild(new SExpression(SExpression.FormatType.Super)); super.AddChild(new SString("a")); SExpression color = super.AddChild(new SExpression(SExpression.FormatType.Color, null, 10)); color.AddChild(new SString("tenVal")); bold.AddChild(new SString("Arr")); SExpression sub = bold.AddChild(new SExpression(SExpression.FormatType.Sub)); sub.AddChild(new SString("b")); Assert.AreEqual("statement(bold(\"cond\", size12(under(\"a\", italic(\"a\", \"one\")), \",\", \"Mult\", super(\"a\", color10(\"tenVal\"))), \"Arr\", sub(\"b\")))", statement.ToString()); Assert.AreEqual("document(statement(\"testString\"), " + "statement(under(\"x\", italic(\"y\", strike(\"z\")))), " + "statement(bold(\"cond\", size12(under(\"a\", italic(\"a\", \"one\")), \",\", \"Mult\", super(\"a\", color10(\"tenVal\"))), \"Arr\", sub(\"b\"))))", root.ToString()); }
public void parseTest() { // Test nesting, one child (linear) SExpression root = new SExpression(SExpression.FormatType.Document); SExpression statement = root.AddChild(new SExpression(SExpression.FormatType.Statement)); SExpression str = statement.AddChild(new SString("testString")); Assert.AreEqual("IdC(\"testString\")", Parser.parse(str).ToString()); Assert.AreEqual("IdC(\"testString\")", Parser.parse(statement).ToString()); Assert.AreEqual("SeqC(IdC(\"testString\"))", Parser.parse(root).ToString()); // Test nesting, many children (branching) statement = root.AddChild(new SExpression(SExpression.FormatType.Statement)); SExpression under = statement.AddChild(new SExpression(SExpression.FormatType.Under)); under.AddChild(new SString("x")); SExpression italic = under.AddChild(new SExpression(SExpression.FormatType.Italic)); italic.AddChild(new SString("y")); SExpression strike = italic.AddChild(new SExpression(SExpression.FormatType.Strike)); strike.AddChild(new SString("z")); Assert.AreEqual("BindC(IdC(\"x\"), AddC(IdC(\"y\"), NegC(IdC(\"z\"))))", Parser.parse(under).ToString()); Assert.AreEqual("BindC(IdC(\"x\"), AddC(IdC(\"y\"), NegC(IdC(\"z\"))))", Parser.parse(statement).ToString()); Assert.AreEqual("SeqC(IdC(\"testString\"), BindC(IdC(\"x\"), AddC(IdC(\"y\"), NegC(IdC(\"z\")))))", Parser.parse(root).ToString()); // Test last few types statement = root.AddChild(new SExpression(SExpression.FormatType.Statement)); SExpression bold = statement.AddChild(new SExpression(SExpression.FormatType.Bold)); bold.AddChild(new SString("cond")); SExpression size = bold.AddChild(new SExpression(SExpression.FormatType.Size, null, 12)); under = size.AddChild(new SExpression(SExpression.FormatType.Under)); under.AddChild(new SString("a")); italic = under.AddChild(new SExpression(SExpression.FormatType.Italic)); italic.AddChild(new SString("a")); italic.AddChild(new SString("one")); size.AddChild(new SString(",")); size.AddChild(new SString("Mult")); SExpression super = size.AddChild(new SExpression(SExpression.FormatType.Super)); super.AddChild(new SString("a")); SExpression color = super.AddChild(new SExpression(SExpression.FormatType.Color, null, 10)); color.AddChild(new SString("tenVal")); bold.AddChild(new SString("Arr")); SExpression sub = bold.AddChild(new SExpression(SExpression.FormatType.Sub)); sub.AddChild(new SString("b")); Assert.AreEqual("IfC(IdC(\"cond\"), SeqC(BindC(IdC(\"a\"), AddC(IdC(\"a\"), IdC(\"one\"))), FuncC(IdC(\"Mult\"), (IdC(\"a\"), NumC(10)))), IndexC(IdC(\"Arr\")[IdC(\"b\")]))", Parser.parse(statement).ToString()); Assert.AreEqual("SeqC(IdC(\"testString\"), " + "BindC(IdC(\"x\"), AddC(IdC(\"y\"), NegC(IdC(\"z\")))), " + "IfC(IdC(\"cond\"), SeqC(BindC(IdC(\"a\"), AddC(IdC(\"a\"), IdC(\"one\"))), FuncC(IdC(\"Mult\"), (IdC(\"a\"), NumC(10)))), IndexC(IdC(\"Arr\")[IdC(\"b\")])))", Parser.parse(root).ToString()); // Test size for call instead of sequencing size = new SExpression(SExpression.FormatType.Size); size.AddChild(new SString("Div")); super = size.AddChild(new SExpression(SExpression.FormatType.Super)); super.AddChild(new SString("x")); SExpression num = super.AddChild(new SExpression(SExpression.FormatType.Color, null, 5)); num.AddChild(new SString("fiveVal")); Assert.AreEqual("FuncC(IdC(\"Div\"), (IdC(\"x\"), NumC(5)))", Parser.parse(size).ToString()); }