public void ClassWithSuperclass() { IClass super = new BaseClass("Object", null); IClass klass = new BaseClass("Rectangle", super); Assert.AreEqual("Rectangle", klass.Name); Assert.AreEqual(super, klass.Super); }
public void DefineVariable() { IClass type = new BaseClass("int", null); IClass klass = new BaseClass("MyClass", null); klass.DefineVariable("age", type); var result = klass.GetVariableType("age"); Assert.IsNotNull(result); Assert.AreEqual(type, result); }
public void DefineVariableAndGetVariableFromSuper() { IClass type = new BaseClass("int", null); IClass super = new BaseClass("MySuperclass", null); IClass klass = new BaseClass("MyClass", super); super.DefineVariable("age", type); var result = klass.GetVariableType("age"); Assert.IsNotNull(result); Assert.AreEqual(type, result); }
public void DefineMethod() { IClass type = new BaseClass("String", null); IClass klass = new BaseClass("MyClass", null); IMethod getname = new FuncMethod(type, (obj, context, arguments) => ((IObject)obj).GetValue("name")); klass.DefineMethod("getName", getname); var result = klass.GetMethod("getName"); Assert.IsNotNull(result); Assert.AreEqual(type, result.Type); }
public void CreateNewInstance() { IClass klass = new BaseClass("MyClass", null); var result = klass.NewInstance(null); Assert.IsNotNull(result); Assert.IsInstanceOfType(result, typeof(BaseObject)); BaseObject obj = (BaseObject)result; Assert.AreEqual(klass, obj.Type); }
public void Setup() { IClass type = new BaseClass("String", null); this.type = new BaseClass("MyClass", null); IMethod getname = new FuncMethod(null, (obj, context, arguments) => ((IObject)obj).GetValue("name")); this.type.DefineVariable("name", type); this.type.DefineMethod("getName", getname); }
public void RaiseIfMethodIsAlreadyDefined() { IClass type = new BaseClass("String", null); IClass klass = new BaseClass("MyClass", null); IMethod getname = new FuncMethod(type, (obj, context, arguments) => ((IObject)obj).GetValue("name")); klass.DefineMethod("getName", getname); klass.DefineMethod("getName", getname); }
public void ClassWithoutSuperclass() { IClass klass = new BaseClass("Object", null); Assert.AreEqual("Object", klass.Name); Assert.IsNull(klass.Super); }
public void UnknowVariableAsNullType() { IClass klass = new BaseClass("Object", null); Assert.IsNull(klass.GetVariableType("a")); }
public void RaiseIfVariableIsAlreadyDefined() { IClass type = new BaseClass("int", null); IClass klass = new BaseClass("MyClass", null); klass.DefineVariable("age", type); klass.DefineVariable("age", type); }
public object Execute(Context context) { IType type = new BaseClass(this.name, (IClass)context.GetValue("Object")); context.SetValue(this.name, type); return null; }