toolkit/javascript/d3/test/core/transition-test-transition.js
changeset 47 c0b4a8b5a012
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/toolkit/javascript/d3/test/core/transition-test-transition.js	Thu Apr 10 14:20:23 2014 +0200
@@ -0,0 +1,60 @@
+require("../env");
+require("../../d3");
+
+var assert = require("assert");
+
+module.exports = {
+  topic: function() {
+    return d3.select("body").append("div").transition()
+        .delay(100)
+        .duration(150)
+        .ease("bounce");
+  },
+
+  "inherits the delay": function(t1) {
+    var t2 = t1.transition();
+    assert.equal(t2[0][0].delay, 100);
+  },
+  "inherits the duration": function(t1) {
+    var t2 = t1.transition();
+    assert.equal(t2[0][0].duration, 150);
+  },
+  "inherits easing": function(t1) {
+    // TODO how to test this?
+  },
+  "inherits the transition id": function(t1) {
+    var t2 = t1.transition();
+    assert.equal(t2.id, t1.id);
+  },
+
+  "while transitioning": {
+    topic: function(t1) {
+      var t2 = t1.transition(),
+          cb = this.callback;
+      t2.each("start", function() {
+        d3.timer(function() {
+          cb(null, t2);
+          return true;
+        });
+      });
+    },
+    "increments the lock's reference count": function(t2) {
+      assert.isTrue(t2[0][0].node.__transition__.count > 1);
+    }
+  },
+
+  "after transitioning": {
+    topic: function(t1) {
+      var cb = this.callback;
+      t1.each("end", function() {
+        d3.timer(function() {
+          cb(null, t1);
+          return true;
+        }, 50);
+      });
+    },
+    "decrements the lock's reference count": function(t1) {
+      assert.isFalse("__transition__" in t1[0][0].node);
+    }
+  }
+};