|
import { expect, assert } from 'chai' |
|
|
|
import board from '@/ai/board.js' |
|
import Search from '@/ai/negamax.js' |
|
import SCORE from '@/ai/score.js' |
|
|
|
describe('Test Time', () => { |
|
it('开局时间', () => { |
|
const b = [ |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 2, 0, 2, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
] |
|
board.init(b); |
|
|
|
Search(); |
|
|
|
}) |
|
it('无意义冲四过多的时候会不会很慢', () => { |
|
const b = [ |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 1, 2, 2, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 2, 1, 2, 1, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
] |
|
board.init(b); |
|
|
|
const p = Search(); |
|
}) |
|
|
|
it(`此处有杀棋, 只有 [6, 5], [5, 4] 两种走法有杀棋`, function() { |
|
const b = [ |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 2, 1, 2, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
]; |
|
board.init(b); |
|
var p = Search(1, 10); |
|
assert.ok(p.score > SCORE.THREE); |
|
assert.ok((p[0] == 6 && p[1] === 5) || (p[0] == 5 && p[1] === 4)); |
|
}); |
|
it(`测试vct bug,此处应该没有杀棋`, function() { |
|
const b = [ |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 2, 1, 2, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
]; |
|
board.init(b); |
|
var p = Search(); |
|
assert.ok(p.score < SCORE.FIVE/2) |
|
}); |
|
it(`测试冲四活三bug`, function() { |
|
const b = [ |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 2, 0, 2, 2, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 2, 1, 1, 1, 1, 2, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 2, 1, 1, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 2, 1, 2, 1, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 2, 2, 1, 0, 2, 2, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], |
|
]; |
|
board.init(b); |
|
var p = Search(); |
|
|
|
assert.ok(p.score > SCORE.FOUR); |
|
}); |
|
}) |
|
|