Пример #1
0
        public void CreateDefineClassCommand()
        {
            DefineClassCommand command = new DefineClassCommand("MyClass", null);

            Assert.AreEqual("MyClass", command.Name);
            Assert.IsNull(command.Command);
        }
Пример #2
0
        private ICommand ParseClassAgentCommand(bool isagent)
        {
            string             name              = this.ParseName();
            List <string>      memberNames       = new List <string>();
            List <IExpression> memberExpressions = new List <IExpression>();

            this.Parse(TokenType.Separator, "{");

            while (this.TryParse(TokenType.Name, "var", "function", "sub", "default"))
            {
                Token token = this.lexer.NextToken();

                if (token.Value == "var")
                {
                    this.ParseMemberVariable(memberNames, memberExpressions);
                }
                else if (token.Value == "default")
                {
                    Token token2 = this.lexer.NextToken();

                    if (token2.Value == "function" || token2.Value == "sub")
                    {
                        this.ParseMemberMethod(memberNames, memberExpressions, true);
                    }
                    else
                    {
                        throw new UnexpectedTokenException(token2);
                    }
                }
                else if (token.Value == "function" || token.Value == "sub")
                {
                    this.ParseMemberMethod(memberNames, memberExpressions, false);
                }
                else
                {
                    throw new UnexpectedTokenException(token);
                }
            }

            this.Parse(TokenType.Separator, "}");

            if (isagent)
            {
                return(new DefineAgentCommand(name, memberNames.ToArray(), memberExpressions));
            }

            DefineClassCommand cmd = new DefineClassCommand(name, memberNames.ToArray(), memberExpressions);

            return(cmd);
        }
Пример #3
0
        public void ExecuteDefineClassCommand()
        {
            Context            context = new Context();
            DefineClassCommand command = new DefineClassCommand("MyClass", null);

            command.Execute(context);
            var result = context.GetValue("MyClass");

            Assert.IsNotNull(result);
            Assert.IsInstanceOfType(result, typeof(IClass));

            IClass klass = (IClass)result;

            Assert.AreEqual("MyClass", klass.Name);
        }
Пример #4
0
        public void ParseDefineClassCommand()
        {
            Parser parser = new Parser("class MyClass { } ");
            var    result = parser.ParseCommand();

            Assert.IsNotNull(result);
            Assert.That(result is DefineClassCommand);

            DefineClassCommand command = (DefineClassCommand)result;

            Assert.AreEqual("MyClass", command.Name);
            Assert.IsNull(command.Command);

            Assert.IsNull(parser.ParseCommand());
        }