--- a/rule.js Sun Sep 07 00:33:47 2014 +0300
+++ b/rule.js Sun Sep 07 03:33:33 2014 +0300
@@ -101,7 +101,7 @@
state.stack.push(state.curr);
}
board.move = {};
-board.move.up = function(brd) {
+board.move.up = board.move.upOrig = function(brd) {
var updated = false;
for (var j = 0; j < 4; j++) {
var state = board.row.init();
@@ -122,7 +122,7 @@
}
return updated;
};
-board.move.down = function(brd) {
+board.move.down = board.move.downOrig = function(brd) {
var updated = false;
for (var j = 0; j < 4; j++) {
var state = board.row.init();
@@ -143,7 +143,7 @@
}
return updated;
};
-board.move.left = function(brd) {
+board.move.left = board.move.leftOrig = function(brd) {
var updated = false;
for (var i = 0; i < 4; i++) {
var state = board.row.init();
@@ -164,7 +164,7 @@
}
return updated;
};
-board.move.right = function(brd) {
+board.move.right = board.move.rightOrig = function(brd) {
var updated = false;
for (var i = 0; i < 4; i++) {
var state = board.row.init();
@@ -185,3 +185,41 @@
}
return updated;
};
+
+/* Restore after testing board.js moves. */
+board.move.restore = function() {
+ board.move.up = board.move.upOrig;
+ board.move.down = board.move.downOrig;
+ board.move.left = board.move.leftOrig;
+ board.move.right = board.move.rightOrig;
+}
+/* For testing board.js moves. */
+board.move.replaceMoveByBoardJS = function(brdEngine, dir) {
+ return function(brd) {
+ var engOrigBrd = new brdEngine(brd);
+ var engBrd = new brdEngine();
+ var changed = engOrigBrd[dir](engBrd);
+ var newBrd = engBrd.exportTo();
+ var changed2 = board.move[dir+"Orig"](brd);
+ for (var i = 0; i < 4; i++) {
+ for (var j = 0; j < 4; j++) {
+ if (newBrd[i][j] !== brd[i][j]) {
+ console.log("[%d][%d] original: %o, expected: %o, actual: %o", i, j, engOrigBrd.exportTo(), brd, newBrd);
+ return false;
+ }
+ }
+ }
+ if (changed2 !== changed) {
+ console.log("original: %o, changed: %o, changed2: %o", engOrigBrd.exportTo(), changed, changed2);
+ return false;
+ }
+ return changed;
+ }
+}
+board.move.replaceByBoardJS = function(brdEngine) {
+ // console.log("x2: %o", brdEngine);
+ board.move.up = board.move.replaceMoveByBoardJS(brdEngine, "up");
+ board.move.down = board.move.replaceMoveByBoardJS(brdEngine, "down");
+ board.move.left = board.move.replaceMoveByBoardJS(brdEngine, "left");
+ board.move.right = board.move.replaceMoveByBoardJS(brdEngine, "right");
+}