Spaces:
Sleeping
Sleeping
| 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); | |
| }); | |
| }) | |