]> git.gir.st - VimFx.git/blob - extension/test/test-utils.coffee
Improve nonCoveredPoint checks
[VimFx.git] / extension / test / test-utils.coffee
1 ###
2 # Copyright Simon Lydell 2014, 2016.
3 #
4 # This file is part of VimFx.
5 #
6 # VimFx is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation, either version 3 of the License, or
9 # (at your option) any later version.
10 #
11 # VimFx is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
15 #
16 # You should have received a copy of the GNU General Public License
17 # along with VimFx. If not, see <http://www.gnu.org/licenses/>.
18 ###
19
20 utils = require('../lib/utils')
21
22 exports['test bisect'] = (assert) ->
23 fn = (num) -> num > 7
24
25 # Non-sensical input.
26 assert.deepEqual(utils.bisect(5, 2, fn), [null, null])
27 assert.deepEqual(utils.bisect(7.5, 8, fn), [null, null])
28 assert.deepEqual(utils.bisect(7, 8.5, fn), [null, null])
29 assert.deepEqual(utils.bisect(7.5, 8.5, fn), [null, null])
30
31 # Unfindable bounds.
32 assert.deepEqual(utils.bisect(8, 8, fn), [null, 8])
33 assert.deepEqual(utils.bisect(7, 7, fn), [7, null])
34 assert.deepEqual(utils.bisect(6, 7, fn), [7, null])
35 assert.deepEqual(utils.bisect(7, 8, fn), [7, 8])
36 assert.deepEqual(utils.bisect(1, 2, (n) -> n == 1), [null, null])
37 assert.deepEqual(utils.bisect(0, 0, fn), [0, null])
38
39 # Less than.
40 assert.deepEqual(utils.bisect(0, 7, fn), [7, null])
41 assert.deepEqual(utils.bisect(0, 8, fn), [7, 8])
42 assert.deepEqual(utils.bisect(1, 8, fn), [7, 8])
43 assert.deepEqual(utils.bisect(2, 8, fn), [7, 8])
44 assert.deepEqual(utils.bisect(3, 8, fn), [7, 8])
45 assert.deepEqual(utils.bisect(4, 8, fn), [7, 8])
46 assert.deepEqual(utils.bisect(5, 8, fn), [7, 8])
47 assert.deepEqual(utils.bisect(6, 8, fn), [7, 8])
48
49 # Greater than.
50 assert.deepEqual(utils.bisect(7, 9, fn), [7, 8])
51 assert.deepEqual(utils.bisect(7, 10, fn), [7, 8])
52 assert.deepEqual(utils.bisect(7, 11, fn), [7, 8])
53 assert.deepEqual(utils.bisect(7, 12, fn), [7, 8])
54 assert.deepEqual(utils.bisect(7, 13, fn), [7, 8])
55 assert.deepEqual(utils.bisect(7, 14, fn), [7, 8])
56 assert.deepEqual(utils.bisect(7, 15, fn), [7, 8])
57 assert.deepEqual(utils.bisect(7, 16, fn), [7, 8])
58
59 # Various cases.
60 assert.deepEqual(utils.bisect(0, 9, fn), [7, 8])
61 assert.deepEqual(utils.bisect(5, 9, fn), [7, 8])
62 assert.deepEqual(utils.bisect(6, 10, fn), [7, 8])
63 assert.deepEqual(utils.bisect(0, 12345, fn), [7, 8])
64
65 exports['test removeDuplicates'] = (assert) ->
66 assert.deepEqual(utils.removeDuplicates(
67 [1, 1, 2, 1, 3, 2]),
68 [1, 2, 3]
69 )
70 assert.deepEqual(utils.removeDuplicates(
71 ['a', 'b', 'c', 'b', 'd', 'a']),
72 ['a', 'b', 'c', 'd']
73 )
Imprint / Impressum