コード例 #1
0
ファイル: ParserTests.cs プロジェクト: parhelia512/RubySharp
        public void ParseObjectDefCommand()
        {
            Parser parser   = new Parser("def a.foo\na=1\nend");
            var    expected = new DefExpression(new DotExpression(new NameExpression("a"), "foo", new IExpression[0]), new string[] { }, new AssignExpression("a", new ConstantExpression(1)));
            var    result   = parser.ParseCommand();

            Assert.IsNotNull(result);
            Assert.AreEqual(expected, result);

            Assert.IsNull(parser.ParseCommand());
        }
コード例 #2
0
ファイル: ParserTests.cs プロジェクト: parhelia512/RubySharp
        public void ParseSelfDefCommandUsingDoubleColon()
        {
            Parser parser   = new Parser("def self::foo\na=1\nend");
            var    expected = new DefExpression(new DoubleColonExpression(new SelfExpression(), "foo"), new string[] { }, new AssignExpression("a", new ConstantExpression(1)));
            var    result   = parser.ParseCommand();

            Assert.IsNotNull(result);
            Assert.AreEqual(expected, result);

            Assert.IsNull(parser.ParseCommand());
        }
コード例 #3
0
ファイル: ParserTests.cs プロジェクト: parhelia512/RubySharp
        public void ParseDefCommandWithParametersInParentheses()
        {
            Parser parser   = new Parser("def foo(a, b)\na+b\nend");
            var    expected = new DefExpression(new NameExpression("foo"), new string[] { "a", "b" }, new AddExpression(new NameExpression("a"), new NameExpression("b")));
            var    result   = parser.ParseCommand();

            Assert.IsNotNull(result);
            Assert.AreEqual(expected, result);

            Assert.IsNull(parser.ParseCommand());
        }
コード例 #4
0
        public void DefineSimpleFunction()
        {
            Machine       machine = new Machine();
            Context       context = machine.RootContext;
            DefExpression expr    = new DefExpression(new NameExpression("foo"), new string[0], new CallExpression("puts", new IExpression[] { new ConstantExpression(123) }));

            var result = expr.Evaluate(context);

            Assert.IsNull(result);

            var value = context.Self.Class.GetInstanceMethod("foo");

            Assert.IsNotNull(value);
            Assert.IsInstanceOfType(value, typeof(DefinedFunction));
        }
コード例 #5
0
        public void EqualsWithParameters()
        {
            DefExpression expr1 = new DefExpression(new NameExpression("foo"), new string[] { "c" }, new ConstantExpression(1));
            DefExpression expr2 = new DefExpression(new NameExpression("foo"), new string[] { "a" }, new ConstantExpression(1));
            DefExpression expr3 = new DefExpression(new NameExpression("foo"), new string[] { "a", "b" }, new ConstantExpression(1));
            DefExpression expr4 = new DefExpression(new NameExpression("foo"), new string[] { "c" }, new ConstantExpression(1));

            Assert.IsTrue(expr1.Equals(expr4));
            Assert.IsTrue(expr4.Equals(expr1));
            Assert.AreEqual(expr1.GetHashCode(), expr4.GetHashCode());

            Assert.IsFalse(expr1.Equals(null));
            Assert.IsFalse(expr1.Equals(123));

            Assert.IsFalse(expr1.Equals(expr2));
            Assert.IsFalse(expr2.Equals(expr1));
            Assert.IsFalse(expr1.Equals(expr3));
            Assert.IsFalse(expr3.Equals(expr1));
        }
コード例 #6
0
        public void DefineFunction()
        {
            Machine       machine = new Machine();
            Context       context = machine.RootContext;
            DynamicObject obj     = new DynamicObject((DynamicClass)context.GetLocalValue("Object"));

            context.SetLocalValue("a", obj);
            DefExpression expr = new DefExpression(new DotExpression(new NameExpression("a"), "foo", new IExpression[0]), new string[0], new CallExpression("puts", new IExpression[] { new ConstantExpression(123) }));

            var result = expr.Evaluate(context);

            Assert.IsNull(result);

            var value = obj.SingletonClass.GetInstanceMethod("foo");

            Assert.IsNotNull(value);
            Assert.IsInstanceOfType(value, typeof(DefinedFunction));

            Assert.IsNull(obj.Class.GetInstanceMethod("foo"));
        }
コード例 #7
0
        public void GetLocalVariables()
        {
            DefExpression expr = new DefExpression(new NameExpression("foo"), new string[0], new CallExpression("puts", new IExpression[] { new ConstantExpression(123) }));

            Assert.IsNull(expr.GetLocalVariables());
        }