parent
b3396a365e
commit
476dbfd6df
@ -0,0 +1,158 @@ |
||||
function loadScript(url, callback) |
||||
{ |
||||
var head = document.head; |
||||
var script = document.createElement('script'); |
||||
script.type = 'text/javascript'; |
||||
script.src = url; |
||||
script.onreadystatechange = callback; |
||||
script.onload = callback; |
||||
head.appendChild(script); |
||||
} |
||||
|
||||
var testsPass=undefined; |
||||
|
||||
class describe { |
||||
constructor(testname) { |
||||
this.testname=testname |
||||
this.beforecb = undefined; |
||||
this.cb = undefined; |
||||
console.log(this.testname) |
||||
} |
||||
|
||||
beforeEach = (cb)=>{ |
||||
this.beforecb = cb |
||||
return this |
||||
} |
||||
|
||||
it = (checkname,cb)=>{ |
||||
console.log("->"+checkname) |
||||
this.beforecb() |
||||
this.cb=cb; |
||||
this.cb() |
||||
return this |
||||
} |
||||
} |
||||
|
||||
function expect(testval1,testval2,test) { |
||||
if (testval1!==testval2) { |
||||
console.log(" Test Failed!") |
||||
testsPass=false |
||||
} else
|
||||
{ |
||||
console.log(" Test Passed!") |
||||
} |
||||
} |
||||
|
||||
function AllBlankSpaces(level) { |
||||
for (var x=0;x<level.length;x++) { |
||||
for (var y=0;y<level.length;y++) { |
||||
if (Object.keys(level[y][x]).length!==0) { |
||||
return false; |
||||
} |
||||
} |
||||
} |
||||
return true; |
||||
} |
||||
|
||||
function runTests() { |
||||
console.log("Running test suite...") |
||||
new describe("Bot moving") |
||||
.beforeEach(()=>{ |
||||
gameGrid=[] |
||||
gameState=WAITING |
||||
BOT_X=-1 |
||||
BOT_Y=-1 |
||||
BOT_DIR=RIGHT |
||||
BOT_STATE=ALIVE |
||||
BOT_TAPE=[{color:RED},{color:BLUE}] |
||||
lastGameUpdate=0 |
||||
}) |
||||
.it("Blank level exists.",()=>{ |
||||
var starttime = new Date().getTime() |
||||
expect(AllBlankSpaces(LEVEL0),true) |
||||
console.log(" ("+(new Date().getTime()-starttime)+"ms)") |
||||
}) |
||||
.it("Bot moves to the right initially.",()=>{ |
||||
var starttime = new Date().getTime() |
||||
expect(function(){ |
||||
gameGrid=createGrid(5,5) |
||||
placeBot(0,2) |
||||
runBot(true) |
||||
if (BOT_X===1&&BOT_Y===2) { |
||||
return true |
||||
} else { |
||||
return false |
||||
} |
||||
}(),true) |
||||
console.log(" ("+(new Date().getTime()-starttime)+"ms)") |
||||
}) |
||||
.it("Bot obeys conveyor belt rules",()=>{ |
||||
var starttime = new Date().getTime() |
||||
expect(function(){ |
||||
loadLevel(LEVEL1,0,2) |
||||
for (var i=0;i<11;i++) {runBot(true)} |
||||
if (BOT_X===2&&BOT_Y===1) { |
||||
return true |
||||
} else { |
||||
return false |
||||
} |
||||
}(),true) |
||||
console.log(" ("+(new Date().getTime()-starttime)+"ms)") |
||||
}) |
||||
.it("Bot obeys branch rules",()=>{ |
||||
var starttime = new Date().getTime() |
||||
expect(function(){ |
||||
loadLevel(LEVEL2,0,2) |
||||
for (var i=0;i<3;i++) {runBot(true)} |
||||
if (BOT_X===2&&BOT_Y===3) { |
||||
return true |
||||
} else { |
||||
return false |
||||
} |
||||
}(),true) |
||||
console.log(" ("+(new Date().getTime()-starttime)+"ms)") |
||||
}) |
||||
.it("Bot obeys branch rules with different colored tape.",()=>{ |
||||
var starttime = new Date().getTime() |
||||
expect(function(){ |
||||
loadLevel(LEVEL2,0,2) |
||||
BOT_TAPE = [{color:BLUE}] |
||||
for (var i=0;i<3;i++) {runBot(true)} |
||||
if (BOT_X===2&&BOT_Y===1) { |
||||
return true |
||||
} else { |
||||
return false |
||||
} |
||||
}(),true) |
||||
console.log(" ("+(new Date().getTime()-starttime)+"ms)") |
||||
}) |
||||
|
||||
if (testsPass===undefined) { |
||||
testsPass=true |
||||
} |
||||
} |
||||
|
||||
|
||||
function runGame() {
|
||||
setupGame(); |
||||
loadLevel(LEVEL2,0,2) |
||||
setInterval(()=>{ |
||||
step() |
||||
draw() |
||||
},1000/60) |
||||
console.log("Running") |
||||
} |
||||
|
||||
loadScript("game.js",runTests) |
||||
|
||||
initializeGame() |
||||
|
||||
function initializeGame() { |
||||
if (testsPass) { |
||||
runGame() |
||||
} else { |
||||
setTimeout(()=>{ |
||||
initializeGame() |
||||
},1000) |
||||
} |
||||
} |
@ -1,4 +1,4 @@ |
||||
<body> |
||||
<div id="game"></div> |
||||
<script type="text/javascript" src="game.js"></script> |
||||
<script type="text/javascript" src="game.test.js"></script> |
||||
</body> |
Loading…
Reference in new issue