]> git.gir.st - VimFx.git/blob - extension/test/test-api-frame.coffee
Change license to MIT
[VimFx.git] / extension / test / test-api-frame.coffee
1 assert = require('./assert')
2 testUtils = require('./utils')
3 createConfigAPI = require('../lib/api-frame')
4
5 exports['test exports'] = ($vim) ->
6 vimfx = createConfigAPI($vim)
7
8 assert.equal(typeof vimfx.listen, 'function', 'listen')
9 assert.equal(typeof vimfx.setHintMatcher, 'function', 'setHintMatcher')
10 assert.equal(typeof vimfx.getMarkerElement, 'function', 'getMarkerElement')
11
12 exports['test vimfx.listen'] = ($vim, teardown) ->
13 shutdownHandlers = []
14 onShutdown = (fn) -> shutdownHandlers.push(fn)
15 vimfx = createConfigAPI($vim, onShutdown)
16
17 resets = []
18 teardown(->
19 reset() for reset in resets
20 return
21 )
22
23 messageManager = new testUtils.MockMessageManager()
24 for name, fn of messageManager when typeof fn == 'function'
25 resets.push(
26 testUtils.stub(FRAME_SCRIPT_ENVIRONMENT, name, fn.bind(messageManager))
27 )
28
29 vimfx.listen('message', ->)
30 assert.equal(messageManager.sendAsyncMessageCalls, 0)
31 assert.equal(messageManager.addMessageListenerCalls, 1)
32 assert.equal(messageManager.removeMessageListenerCalls, 0)
33
34 assert.equal(shutdownHandlers.length, 1)
35 shutdownHandlers[0]()
36 assert.equal(messageManager.sendAsyncMessageCalls, 0)
37 assert.equal(messageManager.addMessageListenerCalls, 1)
38 assert.equal(messageManager.removeMessageListenerCalls, 1)
39
40 exports['test vimfx.setHintMatcher'] = ($vim) ->
41 shutdownHandlers = []
42 onShutdown = (fn) -> shutdownHandlers.push(fn)
43 vimfx = createConfigAPI($vim, onShutdown)
44
45 assert.ok(not $vim.hintMatcher)
46
47 hintMatcher = ->
48 vimfx.setHintMatcher(hintMatcher)
49 assert.equal($vim.hintMatcher, hintMatcher)
50
51 assert.equal(shutdownHandlers.length, 1)
52 shutdownHandlers[0]()
53 assert.ok(not $vim.hintMatcher)
54
55 exports['test vimfx.getMarkerElement'] = ($vim, teardown) ->
56 teardown(->
57 $vim.state.markerElements = []
58 )
59
60 vimfx = createConfigAPI($vim)
61 element = {}
62 $vim.state.markerElements = [{element}]
63
64 assert.equal(vimfx.getMarkerElement(0), element)
65 assert.equal(vimfx.getMarkerElement(1), null)
66 assert.equal(vimfx.getMarkerElement(null), null)
67
68 $vim.state.markerElements = []
69 assert.equal(vimfx.getMarkerElement(0), null)
70
71 exports['test vimfx.listen errors'] = ($vim) ->
72 vimfx = createConfigAPI($vim)
73
74 assert.throws(/message string/i, 'undefined', ->
75 vimfx.listen()
76 )
77
78 assert.throws(/message string/i, 'false', ->
79 vimfx.listen(false)
80 )
81
82 assert.throws(/listener function/i, 'undefined', ->
83 vimfx.listen('message')
84 )
85
86 assert.throws(/listener function/i, 'false', ->
87 vimfx.listen('message', false)
88 )
89
90 exports['test vimfx.setHintMatcher errors'] = ($vim) ->
91 vimfx = createConfigAPI($vim)
92
93 assert.throws(/function/i, 'undefined', ->
94 vimfx.setHintMatcher()
95 )
96
97 assert.throws(/function/i, 'false', ->
98 vimfx.setHintMatcher(false)
99 )
Imprint / Impressum