inheritance tests

This commit is contained in:
Dima Granetchi
2014-11-15 15:21:11 +02:00
parent c43e4a08a2
commit 7eba4bf7e9
3 changed files with 38 additions and 32 deletions
+7 -6
View File
@@ -32,7 +32,7 @@ class Bind {
@:noUsing macro static public function unbindAll(object:ExprOf<IBindable>):Expr {
return internalUnbindAll(object);
}
}
#if macro
@@ -94,13 +94,14 @@ class Bind {
}
public static function isBindable(classType:ClassType):Bool {
if (classType.module == "bindx.IBindable" && classType.name == "IBindable")
return true;
var t = classType;
while (t != null) {
for (it in t.interfaces) {
var t = it.t.get();
if (t.module == "bindx.IBindable" && t.name == "IBindable")
return true;
}
for (it in t.interfaces)
if (isBindable(it.t.get()))
return true;
t = t.superClass != null ? t.superClass.t.get() : null;
}
return false;
+30 -25
View File
@@ -9,38 +9,43 @@ using buddy.Should;
class InheritanceTest extends BuddySuite {
public function new() {
super();
describe("Using classes inheritance", {
it("bindx should support class inheritance");
var b:BindableChild;
var bp:BindableParent;
var callNum:Int;
before({
b = new BindableChild();
bp = new BindableParent();
callNum = 0;
});
it("bindx should support class/interface inheritance", {
b.i = 1;
b.s = "a";
Bind.bind(b.i, function (_, _) callNum++);
Bind.bind(b.s, function (_, _) callNum++);
b.i = 2;
b.s = "b";
callNum.should.be(2);
bp.i = 1;
Bind.bind(bp.i, function (_, _) callNum++);
bp.i = 2;
callNum.should.be(3);
});
});
}
/*
function testChild() {
var c = new BindableChild();
c.i = 0;
c.s = "0";
var iChanged = 0;
Bind.bind(c.i, function (from, to) {
assertEquals(from, 0);
assertEquals(to, 1);
iChanged ++;
});
c.i = 1;
assertEquals(iChanged, 1);
}
var sChanged = 0;
Bind.bind(c.s, function (from, to) {
assertEquals(from, "0");
assertEquals(to, "1");
sChanged ++;
});
c.s = "1";
assertEquals(sChanged, 1);
}*/
interface IIBindable extends IBindable {
}
@:bindable
class BindableParent implements IBindable {
class BindableParent implements IIBindable {
public function new() {}
public var i:Int;
+1 -1
View File
@@ -97,7 +97,7 @@ class SignalTest extends BuddySuite {
});
});
describe("MethodSignal functionality tests", {
describe("Using MethodSignal", {
var ms:MethodSignal;
var callNum:Int;