forked from JuliaLang/julia
-
Notifications
You must be signed in to change notification settings - Fork 0
/
lineedit.jl
88 lines (73 loc) · 1.8 KB
/
lineedit.jl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
using Base.LineEdit
a_foo = 0
const foo_keymap = {
'a' => :( global a_foo; a_foo += 1)
}
b_foo = 0
const foo2_keymap = {
'b' => :( global b_foo; b_foo += 1)
}
a_bar = 0
b_bar = 0
const bar_keymap = {
'a' => :( global a_bar; a_bar += 1),
'b' => :( global b_bar; b_bar += 1)
}
@eval @LineEdit.keymap test1_func $foo_keymap
function run_test(f,buf)
global a_foo, a_bar, b_bar
a_foo = a_bar = b_bar = 0
while !eof(buf)
f(buf,nothing)
end
end
run_test(test1_func,IOBuffer("aa"))
@test a_foo == 2
@eval @LineEdit.keymap test2_func $([foo2_keymap, foo_keymap])
run_test(test2_func,IOBuffer("aaabb"))
@test a_foo == 3
@test b_foo == 2
@eval @LineEdit.keymap test3_func $([bar_keymap, foo_keymap])
run_test(test3_func,IOBuffer("aab"))
@test a_bar == 2
@test b_bar == 1
buf = IOBuffer("type X\n a::Int\nend")
for i = 0:6
seek(buf,i)
@test !LineEdit.edit_move_up(buf)
@test position(buf) == i
seek(buf,i)
@test LineEdit.edit_move_down(buf)
@test position(buf) == i+7
end
for i = 7:17
seek(buf,i)
@test LineEdit.edit_move_up(buf)
@test position(buf) == min(i-7,6)
seek(buf,i)
@test LineEdit.edit_move_down(buf)
@test position(buf) == min(i+11,21)
end
for i = 18:21
seek(buf,i)
@test LineEdit.edit_move_up(buf)
@test position(buf) == i-11
seek(buf,i)
@test !LineEdit.edit_move_down(buf)
@test position(buf) == i
end
buf = IOBuffer("type X\n\n")
seekend(buf)
@test LineEdit.edit_move_up(buf)
@test position(buf) == 7
@test LineEdit.edit_move_up(buf)
@test position(buf) == 0
@test !LineEdit.edit_move_up(buf)
@test position(buf) == 0
seek(buf,0)
@test LineEdit.edit_move_down(buf)
@test position(buf) == 7
@test LineEdit.edit_move_down(buf)
@test position(buf) == 8
@test !LineEdit.edit_move_down(buf)
@test position(buf) == 8