Ejemplo n.º 1
0
        public void TestCompletion()
        {
            questdsl.State s1 = questdsl.Parser.ParseNode("somestate", "subval1\nsubval2\nsubval3");
            questdsl.State s2 = questdsl.Parser.ParseNode("sometrans", "--arg1 abc\n--arg2 def\n--arg3 xxx");
            questdsl.State s3 = questdsl.Parser.ParseNode("sometrig", "//\n");

            questdsl.Hinge h = new questdsl.Hinge(new List <questdsl.State>()
            {
                s1, s2, s3
            });

            questdsl.Parser p = new questdsl.Parser();

            List <questdsl.Parser.SuggestIssue> issues = p.Suggest(h.GetStates(), h.GetTransitions(), "").ToList();

            Assert.AreEqual(issues.Count, 2);

            p.AppendLine("$x = 4442 + 1122");
            issues = p.Suggest(h.GetStates(), h.GetTransitions(), "").ToList();
            Assert.AreEqual(issues.Count, 2);

            p.AppendLine("\n");
            p.AppendLine("$x == 555");
            issues = p.Suggest(h.GetStates(), h.GetTransitions(), "").ToList();
            Assert.AreEqual(issues.Count, 2);
        }
Ejemplo n.º 2
0
        public void TestExecExpressions()
        {
            questdsl.Parser p = new questdsl.Parser();
            Assert.Throws <Exception>(() => p.AppendLine("a=$c"));

            p.AppendLine("$a= that is it ");
            Assert.AreEqual(p.context.ExecBody.Count, 1);
            Assert.AreEqual(p.context.ExecBody[0].ExLeftPart.TypeOfReference, questdsl.ExpressionValue.RefType.LocalVar);
            Assert.AreEqual(p.context.ExecBody[0].ExRightPart.TypeOfValue, questdsl.ExpressionValue.ValueType.string_text);
            Assert.AreEqual(p.context.ExecBody[0].ExRightPart.Left, "that is it");

            Assert.Throws <Exception>(() => p.AppendLine("$a==$x"));
            p.AppendLine("");
            Assert.DoesNotThrow(() => p.AppendLine("$a==$x"));
            Assert.Throws <Exception>(() => p.AppendLine(""));
            Assert.Throws <Exception>(() => p.AppendLine("$m+=1"));
            Assert.DoesNotThrow(() => p.AppendLine("----"));
            Assert.Throws <Exception>(() => p.AppendLine("----"));
            Assert.DoesNotThrow(() => p.AppendLine("$m+=1"));

            p = new questdsl.Parser();
            Assert.Throws <Exception>(() => p.AppendLine("$v = \"xxxx "));
            Assert.Throws <Exception>(() => p.AppendLine("$v = xxxx\" "));
            Assert.DoesNotThrow(() => p.AppendLine("$v = xxxx\"yyy "));
            Assert.DoesNotThrow(() => p.AppendLine("$v = \"xxxxyyy\" "));

            p = new questdsl.Parser();
            p.AppendLine("trans");
            Assert.AreEqual(p.context.NodeDeclaredType, questdsl.Parser.ParserContext.NodeType.Transition);

            p = new questdsl.Parser();
            p.AppendLine("-->move location");
            Assert.AreEqual(p.context.ExecBody.Count, 1);
            Assert.AreEqual(p.context.ExecBody[0].InvokeTransitionName, "move");
            Assert.AreEqual(p.context.ExecBody[0].FuncType, questdsl.ExpressionExecutive.ExecuteType.Invocation);
            Assert.AreEqual(p.context.ExecBody[0].InvokeArgs.Count, 1);
            Assert.AreEqual(p.context.ExecBody[0].InvokeArgs[0].TypeOfValue, questdsl.ExpressionValue.ValueType.string_text);
            Assert.AreEqual(p.context.ExecBody[0].InvokeArgs[0].Left, "location");

            Action <string, questdsl.ExpressionExecutive.ExecuteType> checkAssignOp = (op, optype) =>
            {
                p = new questdsl.Parser();
                p.AppendLine("$var = $k " + op + " 1");
                Assert.AreEqual(p.context.ExecBody.Count, 1);
                Assert.AreEqual(p.context.ExecBody[0].AssignResultVar.Left, "var");
                Assert.AreEqual(p.context.ExecBody[0].AssignResultVar.TypeOfReference, questdsl.ExpressionValue.RefType.LocalVar);
                Assert.AreEqual(p.context.ExecBody[0].FuncType, optype);
                Assert.AreEqual(p.context.ExecBody[0].ExLeftPart.Left, "k");
                Assert.AreEqual(p.context.ExecBody[0].ExLeftPart.TypeOfReference, questdsl.ExpressionValue.RefType.LocalVar);
                Assert.AreEqual(p.context.ExecBody[0].ExRightPart.Num, 1);
            };

            checkAssignOp("+", questdsl.ExpressionExecutive.ExecuteType.AssignAdd);
            checkAssignOp("/", questdsl.ExpressionExecutive.ExecuteType.AssignDiv);
            checkAssignOp("%", questdsl.ExpressionExecutive.ExecuteType.AssignModulo);
            checkAssignOp("*", questdsl.ExpressionExecutive.ExecuteType.AssignMul);
            checkAssignOp("-", questdsl.ExpressionExecutive.ExecuteType.AssignSub);
        }
Ejemplo n.º 3
0
        public void TestSubstates()
        {
            questdsl.Parser p = new questdsl.Parser();
            p.AppendLine("name: text");
            Assert.IsTrue(p.context.DeclaredSubstatesByName);
            Assert.IsFalse(p.context.DeclaredSubstatesByList);
            Assert.AreEqual(p.context.IsInMultivar, false);
            Assert.AreEqual(p.context.NodeDeclaredType, questdsl.Parser.ParserContext.NodeType.State);
            Assert.AreEqual(p.context.StateNodeInstance.Substates.Count, 1);
            Assert.AreEqual(p.context.StateNodeInstance.SubstatesBook["name"].initialValue.TypeOfValue, questdsl.ExpressionValue.ValueType.string_text);
            Assert.IsTrue(string.CompareOrdinal(p.context.StateNodeInstance.SubstatesBook["name"].initialValue.Left, "text") == 0);

            Assert.Throws <Exception>(() => p.AppendLine("sometext"));

            p.AppendLine("namenull: $null");
            Assert.IsTrue(p.context.DeclaredSubstatesByName);
            Assert.IsFalse(p.context.DeclaredSubstatesByList);
            Assert.AreEqual(p.context.IsInMultivar, false);
            Assert.AreEqual(p.context.NodeDeclaredType, questdsl.Parser.ParserContext.NodeType.State);
            Assert.AreEqual(p.context.StateNodeInstance.Substates.Count, 2);
            Assert.AreEqual(p.context.StateNodeInstance.SubstatesBook["namenull"].initialValue.TypeOfReference, questdsl.ExpressionValue.RefType.Null);

            p = new questdsl.Parser();
            p.AppendLine("someLine");
            Assert.IsFalse(p.context.DeclaredSubstatesByName);
            Assert.IsTrue(p.context.DeclaredSubstatesByList);
            Assert.AreEqual(p.context.IsInMultivar, false);
            Assert.AreEqual(p.context.NodeDeclaredType, questdsl.Parser.ParserContext.NodeType.State);
            Assert.AreEqual(p.context.StateNodeInstance.Substates.Count, 1);
            Assert.AreEqual(p.context.StateNodeInstance.Substates[0].initialValue.TypeOfValue, questdsl.ExpressionValue.ValueType.string_text);
            Assert.IsTrue(string.CompareOrdinal(p.context.StateNodeInstance.Substates[0].initialValue.Left, "someLine") == 0);

            Assert.Throws <Exception>(() => p.AppendLine("name: sometext"));

            p.AppendLine("9995");
            Assert.IsFalse(p.context.DeclaredSubstatesByName);
            Assert.IsTrue(p.context.DeclaredSubstatesByList);
            Assert.AreEqual(p.context.IsInMultivar, false);
            Assert.AreEqual(p.context.NodeDeclaredType, questdsl.Parser.ParserContext.NodeType.State);
            Assert.AreEqual(p.context.StateNodeInstance.Substates.Count, 2);
            Assert.AreEqual(p.context.StateNodeInstance.Substates[1].initialValue.TypeOfValue, questdsl.ExpressionValue.ValueType.number);
            Assert.IsTrue(p.context.StateNodeInstance.Substates[1].initialValue.Num == 9995);

            p.AppendLine("\"multilineStart");
            Assert.AreEqual(p.context.IsInMultivar, true);
            Assert.AreEqual(p.context.StateNodeInstance.Substates.Count, 2);
            p.AppendLine("intermediate\"xxx");
            Assert.AreEqual(p.context.IsInMultivar, true);
            Assert.AreEqual(p.context.StateNodeInstance.Substates.Count, 2);
            p.AppendLine("intermediate\"");
            Assert.AreEqual(p.context.IsInMultivar, false);
            Assert.AreEqual(p.context.StateNodeInstance.Substates.Count, 3);

            Assert.IsTrue(string.CompareOrdinal(p.context.StateNodeInstance.Substates[2].initialValue.Left, "multilineStart\r\nintermediate\"xxx\r\nintermediate") == 0);
        }
Ejemplo n.º 4
0
        public void TestSimlink()
        {
            questdsl.Parser p = new questdsl.Parser();
            p.AppendLine("--arg1 parameter");
            Assert.AreEqual(p.context.symlinks.Count, 1);
            Assert.AreEqual(p.context.symlinks[0].VarName, "parameter");

            p.AppendLine("--arg2 $parameternew ");
            Assert.AreEqual(p.context.symlinks.Count, 2);
            Assert.AreEqual(p.context.symlinks[1].VarName, "parameternew");

            Assert.Throws <Exception>(() => p.AppendLine("--arg1 parameterb"));
            Assert.Throws <Exception>(() => p.AppendLine("--arg0 parameterb"));
            Assert.Throws <Exception>(() => p.AppendLine("--arg3 parameter"));
        }
Ejemplo n.º 5
0
        public void TestPartTypes()
        {
            questdsl.Parser parser = new questdsl.Parser();
            Assert.AreEqual(parser.EvaluatePartType("a.b"), questdsl.Parser.PartType.substate);
            Assert.AreEqual(parser.EvaluatePartType("a.$b"), questdsl.Parser.PartType.substate_subVar);
            Assert.AreEqual(parser.EvaluatePartType("$a.b"), questdsl.Parser.PartType.substate_stateVar);
            Assert.AreEqual(parser.EvaluatePartType("$a.$b"), questdsl.Parser.PartType.substate_allVar);

            Assert.AreEqual(parser.EvaluatePartType("\"string\""), questdsl.Parser.PartType.text_multiline);
            Assert.AreEqual(parser.EvaluatePartType("\"stri\"ng\""), questdsl.Parser.PartType.text_multiline);
            Assert.AreEqual(parser.EvaluatePartType("\"string xxx"), questdsl.Parser.PartType.text_multiline_start);
            Assert.AreEqual(parser.EvaluatePartType("3xxx string\""), questdsl.Parser.PartType.text_multiline_end);
            Assert.AreEqual(parser.EvaluatePartType("3xxx string\" "), questdsl.Parser.PartType.text_multiline_end);
            Assert.AreEqual(parser.EvaluatePartType("234235346546"), questdsl.Parser.PartType.digit);

            Dictionary <string, string> groups = new Dictionary <string, string>();

            parser.EvaluatePartType("intermediate\"", groups);
            Assert.AreEqual(groups["string"], "intermediate");
            groups.Clear();
            parser.EvaluatePartType("\"intermediate", groups);
            Assert.AreEqual(groups["string"], "intermediate");
        }
Ejemplo n.º 6
0
        public void TestParserUtils()
        {
            questdsl.Parser parser = new questdsl.Parser();
            List <string>   parts  = parser.SplitArgs("xxx xxx.yyy \"with spaces\" 333");

            Assert.AreEqual(parts.Count, 4);
            Assert.AreEqual(parts[0], "xxx");
            Assert.AreEqual(parts[1], "xxx.yyy");
            Assert.AreEqual(parts[2], "with spaces");
            Assert.AreEqual(parts[3], "333");

            parts = parser.SplitArgs("xxx xxx.yyy \"with \\\" spaces\" 333");
            Assert.AreEqual(parts.Count, 4);
            Assert.AreEqual(parts[0], "xxx");
            Assert.AreEqual(parts[1], "xxx.yyy");
            Assert.AreEqual(parts[2], "with \" spaces");
            Assert.AreEqual(parts[3], "333");

            parts = parser.SplitArgs(" rrrr");
            Assert.AreEqual(parts[0], "rrrr");

            Assert.Throws <Exception>(() => parser.SplitArgs("xxx xxx.yyy \"with \"spaces 333"));
            Assert.Throws <Exception>(() => parser.SplitArgs("xxx xxx.yyy \"with \"spaces\" 333"));
        }
Ejemplo n.º 7
0
        public void TestValExpressions()
        {
            questdsl.Parser          p   = new questdsl.Parser();
            questdsl.ExpressionValue val = p.ParseValue("abra");
            Assert.AreEqual(val.TypeOfReference, questdsl.ExpressionValue.RefType.NotReferred);
            Assert.AreEqual(val.TypeOfValue, questdsl.ExpressionValue.ValueType.string_text);
            Assert.AreEqual(val.Left, "abra");
            val = p.ParseValue("abra cadabbra");
            Assert.AreEqual(val.TypeOfReference, questdsl.ExpressionValue.RefType.NotReferred);
            Assert.AreEqual(val.TypeOfValue, questdsl.ExpressionValue.ValueType.string_text);
            Assert.AreEqual(val.Left, "abra cadabbra");

            val = p.ParseValue(" \"avvada ceddavra\" ");
            Assert.AreEqual(val.TypeOfReference, questdsl.ExpressionValue.RefType.NotReferred);
            Assert.AreEqual(val.TypeOfValue, questdsl.ExpressionValue.ValueType.string_text);
            Assert.AreEqual(val.Left, "avvada ceddavra");

            val = p.ParseValue("4657");
            Assert.AreEqual(val.TypeOfReference, questdsl.ExpressionValue.RefType.NotReferred);
            Assert.AreEqual(val.TypeOfValue, questdsl.ExpressionValue.ValueType.number);
            Assert.AreEqual(val.Left, null);
            Assert.AreEqual(val.Num, 4657);

            val = p.ParseValue("$variable");
            Assert.AreEqual(val.TypeOfReference, questdsl.ExpressionValue.RefType.LocalVar);
            Assert.AreEqual(val.TypeOfValue, questdsl.ExpressionValue.ValueType.Reference);
            Assert.AreEqual(val.Left, "variable");
            Assert.AreEqual(val.vars.Count, 1);
            Assert.AreEqual(val.vars[0], "variable");

            Assert.Throws <Exception>(() => p.ParseValue("$variable with spaces"));

            val = p.ParseValue("$null");
            Assert.AreEqual(val.TypeOfReference, questdsl.ExpressionValue.RefType.Null);
            Assert.AreEqual(val.TypeOfValue, questdsl.ExpressionValue.ValueType.Reference);
            Assert.AreEqual(val.Left, "null");
            Assert.AreEqual(val.vars.Count, 1);
            Assert.AreEqual(val.vars[0], "null");

            val = p.ParseValue(" null");
            Assert.AreEqual(val.TypeOfReference, questdsl.ExpressionValue.RefType.Null);
            Assert.AreEqual(val.TypeOfValue, questdsl.ExpressionValue.ValueType.Reference);
            Assert.AreEqual(val.Left, "null");
            Assert.AreEqual(val.vars.Count, 1);
            Assert.AreEqual(val.vars[0], "null");

            val = p.ParseValue("$arg4");
            Assert.AreEqual(val.TypeOfReference, questdsl.ExpressionValue.RefType.Arg);
            Assert.AreEqual(val.TypeOfValue, questdsl.ExpressionValue.ValueType.Reference);
            Assert.AreEqual(val.ArgOrListIndex, 3);
            Assert.AreEqual(val.Left, "arg4");
            Assert.AreEqual(val.vars.Count, 1);
            Assert.AreEqual(val.vars[0], "arg4");

            val = p.ParseValue("$list14");
            Assert.AreEqual(val.TypeOfReference, questdsl.ExpressionValue.RefType.List);
            Assert.AreEqual(val.TypeOfValue, questdsl.ExpressionValue.ValueType.Reference);
            Assert.AreEqual(val.ArgOrListIndex, 13);
            Assert.AreEqual(val.Left, "list14");
            Assert.AreEqual(val.vars.Count, 1);
            Assert.AreEqual(val.vars[0], "list14");

            val = p.ParseValue("$image");
            Assert.AreEqual(val.TypeOfReference, questdsl.ExpressionValue.RefType.Image);
            Assert.AreEqual(val.TypeOfValue, questdsl.ExpressionValue.ValueType.Reference);
            Assert.AreEqual(val.Left, "image");
            Assert.AreEqual(val.vars.Count, 1);
            Assert.AreEqual(val.vars[0], "image");

            val = p.ParseValue(" statename.subname ");
            Assert.AreEqual(val.TypeOfReference, questdsl.ExpressionValue.RefType.Substate);
            Assert.AreEqual(val.TypeOfValue, questdsl.ExpressionValue.ValueType.SubstateName);
            Assert.AreEqual(val.Left, "statename");
            Assert.AreEqual(val.Right, "subname");
            Assert.AreEqual(val.vars.Count, 0);

            val = p.ParseValue(" statename.$subname ");
            Assert.AreEqual(val.TypeOfReference, questdsl.ExpressionValue.RefType.Substate);
            Assert.AreEqual(val.TypeOfValue, questdsl.ExpressionValue.ValueType.StateName_SubstateRef);
            Assert.AreEqual(val.Left, "statename");
            Assert.AreEqual(val.Right, "subname");
            Assert.AreEqual(val.vars.Count, 1);
            Assert.AreEqual(val.vars[0], "subname");

            val = p.ParseValue(" $statename.subname ");
            Assert.AreEqual(val.TypeOfReference, questdsl.ExpressionValue.RefType.Substate);
            Assert.AreEqual(val.TypeOfValue, questdsl.ExpressionValue.ValueType.StateRef_SubstateName);
            Assert.AreEqual(val.Left, "statename");
            Assert.AreEqual(val.Right, "subname");
            Assert.AreEqual(val.vars.Count, 1);
            Assert.AreEqual(val.vars[0], "statename");

            val = p.ParseValue(" $statename.$subname ");
            Assert.AreEqual(val.TypeOfReference, questdsl.ExpressionValue.RefType.Substate);
            Assert.AreEqual(val.TypeOfValue, questdsl.ExpressionValue.ValueType.StateRef_SubstateRef);
            Assert.AreEqual(val.Left, "statename");
            Assert.AreEqual(val.Right, "subname");
            Assert.AreEqual(val.vars.Count, 2);
            Assert.AreEqual(val.vars[0], "statename");
            Assert.AreEqual(val.vars[1], "subname");
        }
Ejemplo n.º 8
0
        public void TestBoolExpressions()
        {
            questdsl.Parser p = new questdsl.Parser();
            p.AppendLine("a!=$c");
            Assert.AreEqual(p.context.ProbesOr.Count, 1);
            Assert.AreEqual(p.context.ProbesOr[0].ExRightPart.TypeOfReference, questdsl.ExpressionValue.RefType.LocalVar);
            Assert.AreEqual(p.context.ProbesOr[0].ExLeftPart.TypeOfValue, questdsl.ExpressionValue.ValueType.string_text);

            p = new questdsl.Parser();
            p.AppendLine("a string on left side !=$c");
            Assert.AreEqual(p.context.ProbesOr.Count, 1);
            Assert.AreEqual(p.context.ProbesOr[0].ExRightPart.TypeOfReference, questdsl.ExpressionValue.RefType.LocalVar);
            Assert.AreEqual(p.context.ProbesOr[0].ExLeftPart.TypeOfValue, questdsl.ExpressionValue.ValueType.string_text);
            Assert.AreEqual(p.context.ProbesOr[0].ExLeftPart.Left, "a string on left side");

            p = new questdsl.Parser();
            p.AppendLine("\"a string on left side\" !=$c");
            Assert.AreEqual(p.context.ProbesOr.Count, 1);
            Assert.AreEqual(p.context.ProbesOr[0].ExRightPart.TypeOfReference, questdsl.ExpressionValue.RefType.LocalVar);
            Assert.AreEqual(p.context.ProbesOr[0].ExLeftPart.TypeOfValue, questdsl.ExpressionValue.ValueType.string_text);
            Assert.AreEqual(p.context.ProbesOr[0].ExLeftPart.Left, "a string on left side");

            Assert.Throws <Exception>(() => p.AppendLine("a!=c"));

            p = new questdsl.Parser();
            p.AppendLine("$c == 41");
            Assert.AreEqual(p.context.ProbesOr.Count, 1);
            Assert.AreEqual(p.context.ProbesOr[0].ExOperation, questdsl.ExpressionBool.Operation.eq);
            Assert.AreEqual(p.context.ProbesOr[0].ExLeftPart.TypeOfReference, questdsl.ExpressionValue.RefType.LocalVar);
            Assert.AreEqual(p.context.ProbesOr[0].ExRightPart.TypeOfValue, questdsl.ExpressionValue.ValueType.number);
            Assert.AreEqual(p.context.ProbesOr[0].ExRightPart.Num, 41);

            p = new questdsl.Parser();
            p.AppendLine("$c != $param");
            Assert.AreEqual(p.context.ProbesOr.Count, 1);
            Assert.AreEqual(p.context.ProbesOr[0].ExOperation, questdsl.ExpressionBool.Operation.neq);

            p = new questdsl.Parser();
            p.AppendLine("$c > $param");
            Assert.AreEqual(p.context.ProbesOr.Count, 1);
            Assert.AreEqual(p.context.ProbesOr[0].ExOperation, questdsl.ExpressionBool.Operation.bt);

            p = new questdsl.Parser();
            p.AppendLine("$c >= $param");
            Assert.AreEqual(p.context.ProbesOr.Count, 1);
            Assert.AreEqual(p.context.ProbesOr[0].ExOperation, questdsl.ExpressionBool.Operation.bteq);


            p = new questdsl.Parser();
            p.AppendLine("$c < $param");
            Assert.AreEqual(p.context.ProbesOr.Count, 1);
            Assert.AreEqual(p.context.ProbesOr[0].ExOperation, questdsl.ExpressionBool.Operation.lt);


            p = new questdsl.Parser();
            p.AppendLine("$c <= $param");
            Assert.AreEqual(p.context.ProbesOr.Count, 1);
            Assert.AreEqual(p.context.ProbesOr[0].ExOperation, questdsl.ExpressionBool.Operation.lteq);

            Assert.Throws <Exception>(() => p.AppendLine("$a=$x"));
            Assert.Throws <Exception>(() => p.AppendLine(""));
            p.AppendLine("----");
            Assert.DoesNotThrow(() => p.AppendLine("$a=$x"));
        }
Ejemplo n.º 9
0
        public void TestLineTypes()
        {
            questdsl.Parser parser = new questdsl.Parser();
            Assert.AreEqual(parser.EvaluateLineType("\\commentary"), questdsl.Parser.LineType.comment);
            Assert.AreEqual(parser.EvaluateLineType("\\"), questdsl.Parser.LineType.comment);
            Assert.AreEqual(parser.EvaluateLineType(""), questdsl.Parser.LineType.empty);
            Assert.AreEqual(parser.EvaluateLineType(" "), questdsl.Parser.LineType.empty);

            Assert.AreEqual(parser.EvaluateLineType("----"), questdsl.Parser.LineType.section_separator);
            Assert.AreEqual(parser.EvaluateLineType("---"), questdsl.Parser.LineType.section_separator);
            Assert.AreEqual(parser.EvaluateLineType("----------"), questdsl.Parser.LineType.section_separator);
            Assert.AreEqual(parser.EvaluateLineType("substate: val"), questdsl.Parser.LineType.substate_declaration);
            Assert.AreEqual(parser.EvaluateLineType("$substate: val"), questdsl.Parser.LineType.substate_declaration);
            Assert.AreEqual(parser.EvaluateLineType("substate.x: val"), questdsl.Parser.LineType.substate_declaration);
            Assert.AreEqual(parser.EvaluateLineType("substate: $val"), questdsl.Parser.LineType.substate_declaration);
            Assert.AreEqual(parser.EvaluateLineType("substate.$: val"), questdsl.Parser.LineType.substate_declaration);


            Assert.AreEqual(parser.EvaluateLineType(">xxx hey"), questdsl.Parser.LineType.dialogue_say);
            Assert.AreEqual(parser.EvaluateLineType("> xxx hey"), questdsl.Parser.LineType.dialogue_say);
            Assert.AreEqual(parser.EvaluateLineType(" >xxx hey"), questdsl.Parser.LineType.dialogue_say);
            Assert.AreEqual(parser.EvaluateLineType(" > xxx hey"), questdsl.Parser.LineType.dialogue_say);
            Assert.AreEqual(parser.EvaluateLineType(" > xxx    hey"), questdsl.Parser.LineType.dialogue_say);
            Assert.AreEqual(parser.EvaluateLineType(" > xxx    \"hey"), questdsl.Parser.LineType.dialogue_say);
            Assert.AreEqual(parser.EvaluateLineType(" > xxx    \"hey\""), questdsl.Parser.LineType.dialogue_say);
            Assert.AreEqual(parser.EvaluateLineType(" > xxx    \"hxe\"cy\""), questdsl.Parser.LineType.dialogue_say);
            Assert.AreEqual(parser.EvaluateLineType("> ! \"hi"), questdsl.Parser.LineType.dialogue_say);
            Assert.AreEqual(parser.EvaluateLineType(">! \"hi"), questdsl.Parser.LineType.dialogue_say);
            Assert.AreEqual(parser.EvaluateLineType(">? ..."), questdsl.Parser.LineType.dialogue_say);

            Assert.AreEqual(parser.EvaluateLineType("--arg9 mnemo"), questdsl.Parser.LineType.symlink);
            Assert.AreEqual(parser.EvaluateLineType(" "), questdsl.Parser.LineType.empty);



            Assert.AreEqual(parser.EvaluateLineType("a>b"), questdsl.Parser.LineType.condition);
            Assert.AreEqual(parser.EvaluateLineType("a<b"), questdsl.Parser.LineType.condition);
            Assert.AreEqual(parser.EvaluateLineType("a==b"), questdsl.Parser.LineType.condition);
            Assert.AreEqual(parser.EvaluateLineType("a!=b"), questdsl.Parser.LineType.condition);
            Assert.AreEqual(parser.EvaluateLineType("a>=b"), questdsl.Parser.LineType.condition);
            Assert.AreEqual(parser.EvaluateLineType("a<=b"), questdsl.Parser.LineType.condition);
            Assert.AreEqual(parser.EvaluateLineType("a=>b"), questdsl.Parser.LineType.undetermined);
            Assert.AreEqual(parser.EvaluateLineType("a=<b"), questdsl.Parser.LineType.undetermined);
            Assert.AreEqual(parser.EvaluateLineType("<"), questdsl.Parser.LineType.undetermined);
            Assert.AreEqual(parser.EvaluateLineType("<<"), questdsl.Parser.LineType.undetermined);
            Assert.AreEqual(parser.EvaluateLineType(">"), questdsl.Parser.LineType.undetermined);
            Assert.AreEqual(parser.EvaluateLineType("!x"), questdsl.Parser.LineType.undetermined);
            Assert.AreEqual(parser.EvaluateLineType("a!b"), questdsl.Parser.LineType.undetermined);

            Assert.AreEqual(parser.EvaluateLineType("a=b"), questdsl.Parser.LineType.executive);
            Assert.AreEqual(parser.EvaluateLineType("a++"), questdsl.Parser.LineType.executive);
            Assert.AreEqual(parser.EvaluateLineType("a+=b"), questdsl.Parser.LineType.executive);
            Assert.AreEqual(parser.EvaluateLineType("a--"), questdsl.Parser.LineType.executive);
            Assert.AreEqual(parser.EvaluateLineType("a-=b"), questdsl.Parser.LineType.executive);
            Assert.AreEqual(parser.EvaluateLineType("a=b"), questdsl.Parser.LineType.executive);
            Assert.AreEqual(parser.EvaluateLineType("a=$b"), questdsl.Parser.LineType.executive);
            Assert.AreEqual(parser.EvaluateLineType("a=$b.b"), questdsl.Parser.LineType.executive);
            Assert.AreEqual(parser.EvaluateLineType("a=b.$b"), questdsl.Parser.LineType.executive);
            Assert.AreEqual(parser.EvaluateLineType("a=$b.$b"), questdsl.Parser.LineType.executive);
            Assert.AreEqual(parser.EvaluateLineType("$a =string value"), questdsl.Parser.LineType.executive);

            Assert.AreEqual(parser.EvaluateLineType("a=b+c"), questdsl.Parser.LineType.executive_assign_op);
            Assert.AreEqual(parser.EvaluateLineType("a=b-c"), questdsl.Parser.LineType.executive_assign_op);
            Assert.AreEqual(parser.EvaluateLineType("a=b*c"), questdsl.Parser.LineType.executive_assign_op);
            Assert.AreEqual(parser.EvaluateLineType("a=b/c"), questdsl.Parser.LineType.executive_assign_op);
            Assert.AreEqual(parser.EvaluateLineType("a=b%c"), questdsl.Parser.LineType.executive_assign_op);

            Assert.AreEqual(parser.EvaluateLineType("-->a"), questdsl.Parser.LineType.executive_invocation);
            Assert.AreEqual(parser.EvaluateLineType(" -->ToList somestate "), questdsl.Parser.LineType.executive_invocation);
            Assert.AreEqual(parser.EvaluateLineType("-->a c d e"), questdsl.Parser.LineType.executive_invocation);
            Assert.AreEqual(parser.EvaluateLineType("-->a c d $e"), questdsl.Parser.LineType.executive_invocation);
            Assert.AreEqual(parser.EvaluateLineType("-->a c d $e.e"), questdsl.Parser.LineType.executive_invocation);
            Assert.AreEqual(parser.EvaluateLineType("-->a c d $e.$e"), questdsl.Parser.LineType.executive_invocation);
            Assert.AreEqual(parser.EvaluateLineType("-->a c d e.$e"), questdsl.Parser.LineType.executive_invocation);
            Assert.AreEqual(parser.EvaluateLineType("="), questdsl.Parser.LineType.undetermined);
            Assert.AreEqual(parser.EvaluateLineType("a="), questdsl.Parser.LineType.undetermined);
            Assert.AreEqual(parser.EvaluateLineType("=a"), questdsl.Parser.LineType.undetermined);
            Assert.AreEqual(parser.EvaluateLineType("a===a"), questdsl.Parser.LineType.undetermined);
            Assert.AreEqual(parser.EvaluateLineType("===a"), questdsl.Parser.LineType.undetermined);
            Assert.AreEqual(parser.EvaluateLineType("a==="), questdsl.Parser.LineType.undetermined);
        }