public void TestAssignableFromSameType2() { RType type1 = new RType("Foo"); RType type2 = new RType("Foo"); Assert.IsFalse(type1.IsAssignable(type2)); // Same types should point to the same type object Assert.IsTrue(type1.IsAssignable(type1)); }
public void TestSubclassOfWithInterface() { RType iBarTy = new RType("IBar", RTypeAttributes.Interface); RType fooTy = new RType("Foo"); fooTy.AddInterfaceImplementation(iBarTy); Assert.IsTrue(iBarTy.IsAssignable(fooTy)); }
public void TestSubclassOfWithBaseBaseClass() { RType barTy = new RType("Bar"); RType zooTy = new RType("Zoo", RTypeAttributes.Class, barTy); RType fooTy = new RType("Foo", RTypeAttributes.Class, zooTy); Assert.IsTrue(barTy.IsAssignable(fooTy)); }
public static bool CanCast(RType source, RType dest) { if (source.IsPrimitive && Equals(dest, RppTypeSystem.AnyTy)) { return true; } if ((dest.IsClass || dest.IsGenericParameter) && Equals(source, RppTypeSystem.NullTy)) { return true; } if (dest.IsAssignable(source)) { return true; } if (Equals(source, RppTypeSystem.NothingTy)) { return true; } return false; }
public void TestSubclassOfWithBaseClass() { RType baseType = new RType("Bar"); RType type = new RType("Foo", RTypeAttributes.Class, baseType); Assert.IsTrue(baseType.IsAssignable(type)); }
public void TestAssignableFromSameType() { RType type = new RType("Foo"); Assert.IsTrue(type.IsAssignable(type)); }
public void TestAssignablableFromNull() { RType type = new RType("Foo"); Assert.IsFalse(type.IsAssignable(null)); }