public void CustomTypeDescriptor1() {
object cls = Engine.Execute(@"
class C
attr_accessor :a
def b
end
def b= x
@written = true
end
def c
@written
end
def d= x
end
def e x
end
def e= x
end
def initialize
@a = 'Hello world'
@written = false
end
self
end
");
object obj = Engine.Operations.CreateInstance(cls);
Assert(obj != null);
var ictd = Engine.Operations.CreateInstance(cls) as ICustomTypeDescriptor;
Assert(ictd != null);
Assert(ictd.GetClassName() == "C");
var props = ictd.GetProperties();
Assert(props.Count == 2);
props[0].SetValue(obj, "abc");
props[1].SetValue(obj, "abc");
Assert((string)Engine.Operations.InvokeMember(obj, "a") == "abc");
Assert((bool)Engine.Operations.InvokeMember(obj, "c"));
}