diff -r 2264f7a3f7e0 -r a9a44cfc3e08 rule.js --- 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"); +}