|
1 | 1 | import hanoiTower from '../hanoiTower';
|
| 2 | +import Stack from '../../../../data-structures/stack/Stack'; |
2 | 3 |
|
3 | 4 | describe('hanoiTower', () => {
|
4 | 5 | it('should solve tower of hanoi puzzle with 2 discs', () => {
|
5 |
| - const moveCallbackMock = jest.fn(); |
| 6 | + const moveCallback = jest.fn(); |
6 | 7 | const numberOfDiscs = 2;
|
7 | 8 |
|
8 |
| - hanoiTower(numberOfDiscs, moveCallbackMock); |
| 9 | + const fromPole = new Stack(); |
| 10 | + const withPole = new Stack(); |
| 11 | + const toPole = new Stack(); |
9 | 12 |
|
10 |
| - expect(moveCallbackMock).toHaveBeenCalledTimes((2 ** numberOfDiscs) - 1); |
| 13 | + hanoiTower({ |
| 14 | + numberOfDiscs, |
| 15 | + moveCallback, |
| 16 | + fromPole, |
| 17 | + withPole, |
| 18 | + toPole, |
| 19 | + }); |
11 | 20 |
|
12 |
| - expect(moveCallbackMock.mock.calls[0][0]).toBe(1); |
13 |
| - expect(moveCallbackMock.mock.calls[0][1]).toEqual([1, 2]); |
14 |
| - expect(moveCallbackMock.mock.calls[0][2]).toEqual([]); |
| 21 | + expect(moveCallback).toHaveBeenCalledTimes((2 ** numberOfDiscs) - 1); |
15 | 22 |
|
16 |
| - expect(moveCallbackMock.mock.calls[1][0]).toBe(2); |
17 |
| - expect(moveCallbackMock.mock.calls[1][1]).toEqual([2]); |
18 |
| - expect(moveCallbackMock.mock.calls[1][2]).toEqual([]); |
| 23 | + expect(fromPole.toArray()).toEqual([]); |
| 24 | + expect(toPole.toArray()).toEqual([1, 2]); |
19 | 25 |
|
20 |
| - expect(moveCallbackMock.mock.calls[2][0]).toBe(1); |
21 |
| - expect(moveCallbackMock.mock.calls[2][1]).toEqual([1]); |
22 |
| - expect(moveCallbackMock.mock.calls[2][2]).toEqual([2]); |
| 26 | + expect(moveCallback.mock.calls[0][0]).toBe(1); |
| 27 | + expect(moveCallback.mock.calls[0][1]).toEqual([1, 2]); |
| 28 | + expect(moveCallback.mock.calls[0][2]).toEqual([]); |
| 29 | + |
| 30 | + expect(moveCallback.mock.calls[1][0]).toBe(2); |
| 31 | + expect(moveCallback.mock.calls[1][1]).toEqual([2]); |
| 32 | + expect(moveCallback.mock.calls[1][2]).toEqual([]); |
| 33 | + |
| 34 | + expect(moveCallback.mock.calls[2][0]).toBe(1); |
| 35 | + expect(moveCallback.mock.calls[2][1]).toEqual([1]); |
| 36 | + expect(moveCallback.mock.calls[2][2]).toEqual([2]); |
23 | 37 | });
|
24 | 38 |
|
25 | 39 | it('should solve tower of hanoi puzzle with 3 discs', () => {
|
26 |
| - const moveCallbackMock = jest.fn(); |
| 40 | + const moveCallback = jest.fn(); |
27 | 41 | const numberOfDiscs = 3;
|
28 | 42 |
|
29 |
| - hanoiTower(numberOfDiscs, moveCallbackMock); |
| 43 | + hanoiTower({ |
| 44 | + numberOfDiscs, |
| 45 | + moveCallback, |
| 46 | + }); |
30 | 47 |
|
31 |
| - expect(moveCallbackMock).toHaveBeenCalledTimes((2 ** numberOfDiscs) - 1); |
| 48 | + expect(moveCallback).toHaveBeenCalledTimes((2 ** numberOfDiscs) - 1); |
32 | 49 | });
|
33 | 50 |
|
34 | 51 | it('should solve tower of hanoi puzzle with 6 discs', () => {
|
35 |
| - const moveCallbackMock = jest.fn(); |
| 52 | + const moveCallback = jest.fn(); |
36 | 53 | const numberOfDiscs = 6;
|
37 | 54 |
|
38 |
| - hanoiTower(numberOfDiscs, moveCallbackMock); |
| 55 | + hanoiTower({ |
| 56 | + numberOfDiscs, |
| 57 | + moveCallback, |
| 58 | + }); |
39 | 59 |
|
40 |
| - expect(moveCallbackMock).toHaveBeenCalledTimes((2 ** numberOfDiscs) - 1); |
| 60 | + expect(moveCallback).toHaveBeenCalledTimes((2 ** numberOfDiscs) - 1); |
41 | 61 | });
|
42 | 62 | });
|
0 commit comments