|
1 | 1 | BinarySearch = require './binary-search'
|
| 2 | +TracedArray = require './traced-array' |
2 | 3 |
|
3 | 4 | describe 'Binary Search', ->
|
4 | 5 | it 'finds a value in an array wxith one element', ->
|
5 |
| - array = [6] |
6 |
| - result = new BinarySearch(array).find 6 |
7 |
| - expect(result).toBe 0 |
| 6 | + array = new TracedArray 6 |
| 7 | + expect(new BinarySearch(array).find 6).toBe 0 |
| 8 | + expect(array.accessCount).toBe 1 |
8 | 9 |
|
9 | 10 | xit 'finds a value in the middle of an array', ->
|
10 |
| - array = [1, 3, 4, 6, 8, 9, 11] |
11 |
| - result = new BinarySearch(array).find 6 |
12 |
| - expect(result).toBe 3 |
| 11 | + array = new TracedArray 1, 3, 4, 6, 8, 9, 11 |
| 12 | + expect(new BinarySearch(array).find 6).toBe 3 |
| 13 | + expect(array.accessCount).toBe 1 |
13 | 14 |
|
14 | 15 | xit 'finds a value at the beginning of an array', ->
|
15 |
| - array = [1, 3, 4, 6, 8, 9, 11] |
16 |
| - result = new BinarySearch(array).find 1 |
17 |
| - expect(result).toBe 0 |
| 16 | + array = new TracedArray 1, 3, 4, 6, 8, 9, 11 |
| 17 | + expect(new BinarySearch(array).find 1).toBe 0 |
| 18 | + expect(array.accessCount).toBe 3 |
18 | 19 |
|
19 | 20 | xit 'finds a value at the end of an array', ->
|
20 |
| - array = [1, 3, 4, 6, 8, 9, 11] |
21 |
| - result = new BinarySearch(array).find 11 |
22 |
| - expect(result).toBe 6 |
| 21 | + array = new TracedArray 1, 3, 4, 6, 8, 9, 11 |
| 22 | + expect(new BinarySearch(array).find 11).toBe 6 |
| 23 | + expect(array.accessCount).toBe 3 |
23 | 24 |
|
24 | 25 | xit 'finds a value in an array of odd length', ->
|
25 |
| - array = [1, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 634] |
26 |
| - result = new BinarySearch(array).find 144 |
27 |
| - expect(result).toBe 9 |
| 26 | + array = new TracedArray 1, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 634 |
| 27 | + expect(new BinarySearch(array).find 144).toBe 9 |
| 28 | + expect(array.accessCount).toBe 2 |
28 | 29 |
|
29 | 30 | xit 'finds a value in an array of even length', ->
|
30 |
| - array = [1, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377] |
31 |
| - result = new BinarySearch(array).find 21 |
32 |
| - expect(result).toBe 5 |
| 31 | + array = new TracedArray 1, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377 |
| 32 | + expect(new BinarySearch(array).find 21).toBe 5 |
| 33 | + expect(array.accessCount).toBe 1 |
33 | 34 |
|
34 | 35 | xit 'identifies that a value is not included in the array', ->
|
35 |
| - array = [1, 3, 4, 6, 8, 9, 11] |
| 36 | + array = new TracedArray 1, 3, 4, 6, 8, 9, 11 |
36 | 37 | expect ->
|
37 | 38 | new BinarySearch(array).find 7
|
38 | 39 | .toThrow new Error 'value not in array'
|
39 | 40 |
|
40 | 41 | xit "a value smaller than the array's smallest value is not found", ->
|
41 |
| - array = [1, 3, 4, 6, 8, 9, 11] |
| 42 | + array = new TracedArray 1, 3, 4, 6, 8, 9, 11 |
42 | 43 | expect ->
|
43 | 44 | new BinarySearch(array).find 0
|
44 | 45 | .toThrow new Error 'value not in array'
|
45 | 46 |
|
46 | 47 | xit "a value larger than the array's largest value is not found", ->
|
47 |
| - array = [1, 3, 4, 6, 8, 9, 11] |
| 48 | + array = new TracedArray 1, 3, 4, 6, 8, 9, 11 |
48 | 49 | expect ->
|
49 | 50 | new BinarySearch(array).find 13
|
50 | 51 | .toThrow new Error 'value not in array'
|
51 | 52 |
|
52 | 53 | xit 'nothing is found in an empty array', ->
|
53 |
| - array = [] |
| 54 | + array = new TracedArray |
54 | 55 | expect ->
|
55 | 56 | new BinarySearch(array).find 1
|
56 | 57 | .toThrow new Error 'value not in array'
|
57 | 58 |
|
58 | 59 | xit 'nothing is found when the left and right bounds cross', ->
|
59 |
| - array = [1, 2] |
| 60 | + array = new TracedArray 1, 2 |
60 | 61 | expect ->
|
61 | 62 | new BinarySearch(array).find 0
|
62 | 63 | .toThrow new Error 'value not in array'
|
0 commit comments