IronRuby.Tests.Tests.ObjectOperations1 C# (CSharp) Method

ObjectOperations1() public method

public ObjectOperations1 ( ) : void
return void
        public void ObjectOperations1() {
            var cls = Engine.Execute(@"
class C
  def foo *a
    p a
  end
  self
end
");
            var obj = Engine.Operations.CreateInstance(cls) as RubyObject;
            Assert(obj != null && obj.ImmediateClass.Name == "C");

            obj = Engine.Operations.InvokeMember(cls, "new") as RubyObject;
            Assert(obj != null && obj.ImmediateClass.Name == "C");

            var foo = Engine.Operations.GetMember(obj, "foo") as RubyMethod;
            Assert(foo != null && foo.Name == "foo" && foo.Target == obj);

            AssertOutput(() => Engine.Operations.Invoke(foo, 1, 2), "[1, 2]");
            AssertOutput(() => Engine.Operations.InvokeMember(obj, "foo", 1, 2), "[1, 2]");

            var str = Engine.Operations.ConvertTo<string>(MutableString.CreateAscii("foo"));
            Assert(str == "foo");

            str = Engine.Operations.ConvertTo<string>(Engine.Execute<object>("class C; def to_str; 'bar'; end; new; end"));
            Assert(str == "bar");

            var b = Engine.Operations.ConvertTo<byte>(Engine.Execute<object>("class C; def to_int; 123; end; new; end"));
            Assert(b == 123);

            var lambda = Engine.Operations.ConvertTo<Func<int, int>>(Engine.Execute<object>("lambda { |x| x * 2 }"));
            Assert(lambda(10) == 20);

            Assert((int)Engine.CreateOperations().InvokeMember(null, "to_i") == 0);
        }
Tests