1 function test_resize_window()
2 App
.screen
.init
{width
=300, height
=300}
3 Editor_state
= edit
.initialize_test_state()
4 Editor_state
.filename
= 'foo'
5 Log_browser_state
= edit
.initialize_test_state()
6 check_eq(App
.screen
.width
, 300, 'baseline/width')
7 check_eq(App
.screen
.height
, 300, 'baseline/height')
8 check_eq(Editor_state
.left
, Test_margin_left
, 'baseline/left_margin')
9 check_eq(Editor_state
.right
, 300 - Test_margin_right
, 'baseline/right_margin')
11 -- ugly; resize switches to real, non-test margins
12 check_eq(App
.screen
.width
, 200, 'width')
13 check_eq(App
.screen
.height
, 400, 'height')
14 check_eq(Editor_state
.left
, Margin_left
, 'left_margin')
15 check_eq(Editor_state
.right
, 200-Margin_right
, 'right_margin')
16 check_eq(Editor_state
.width
, 200-Margin_left
-Margin_right
, 'drawing_width')
17 -- TODO: how to make assertions about when App.update got past the early exit?
20 function test_show_log_browser_side()
21 App
.screen
.init
{width
=300, height
=300}
22 Current_app
= 'source'
23 Editor_state
= edit
.initialize_test_state()
24 Editor_state
.filename
= 'foo'
25 Text
.redraw_all(Editor_state
)
26 Log_browser_state
= edit
.initialize_test_state()
27 Text
.redraw_all(Log_browser_state
)
28 log_browser
.parse(Log_browser_state
)
29 check(not Show_log_browser_side
, 'baseline')
30 -- pressing ctrl+l shows log-browser side
31 Current_time
= Current_time
+ 0.1
32 App
.run_after_keychord('C-l')
33 check(Show_log_browser_side
, 'check')
36 function test_show_log_browser_side_splits_window_width()
37 -- initialize screen dimensions and indicate that it is maximized
38 App
.screen
.init
{width
=300, height
=300}
39 -- initialize source app with left side occupying more than half the display
40 Current_app
= 'source'
41 Editor_state
= edit
.initialize_test_state()
42 Editor_state
.filename
= 'foo'
43 Editor_state
.left
= Margin_left
44 Editor_state
.right
= 200
45 Text
.redraw_all(Editor_state
)
46 Log_browser_state
= edit
.initialize_test_state()
47 -- log browser has some arbitrary margins
48 Log_browser_state
.left
= 200 + Margin_left
49 Log_browser_state
.right
= 400
50 Text
.redraw_all(Log_browser_state
)
51 log_browser
.parse(Log_browser_state
)
52 -- display log browser
53 Current_time
= Current_time
+ 0.1
54 App
.run_after_keychord('C-l')
55 -- margins are now adjusted
56 check_eq(Editor_state
.left
, Margin_left
, 'edit:left')
57 check_eq(Editor_state
.right
, App
.screen
.width
/2 - Margin_right
, 'edit:right')
58 check_eq(Log_browser_state
.left
, App
.screen
.width
/2 + Margin_left
, 'log:left')
59 check_eq(Log_browser_state
.right
, App
.screen
.width
- Margin_right
, 'log:right')
62 function test_drop_file()
63 App
.screen
.init
{width
=Editor_state
.left
+300, height
=300}
64 Editor_state
= edit
.initialize_test_state()
65 App
.filesystem
['foo'] = 'abc\ndef\nghi\n'
66 local fake_dropped_file
= {
68 getFilename
= function(self
)
74 lines
= function(self
)
76 return App
.filesystem
['foo']:gmatch('[^\n]+')
78 close
= function(self
)
82 App
.filedropped(fake_dropped_file
)
83 check_eq(#Editor_state
.lines
, 3, '#lines')
84 check_eq(Editor_state
.lines
[1].data
, 'abc', 'lines:1')
85 check_eq(Editor_state
.lines
[2].data
, 'def', 'lines:2')
86 check_eq(Editor_state
.lines
[3].data
, 'ghi', 'lines:3')
87 edit
.draw(Editor_state
)
90 function test_drop_file_saves_previous()
91 App
.screen
.init
{width
=Editor_state
.left
+300, height
=300}
92 -- initially editing a file called foo that hasn't been saved to filesystem yet
93 Editor_state
.lines
= load_array
{'abc', 'def'}
94 Editor_state
.filename
= 'foo'
95 schedule_save(Editor_state
)
96 -- now drag a new file bar from the filesystem
97 App
.filesystem
['bar'] = 'abc\ndef\nghi\n'
98 local fake_dropped_file
= {
100 getFilename
= function(self
)
103 open
= function(self
)
106 lines
= function(self
)
108 return App
.filesystem
['bar']:gmatch('[^\n]+')
110 close
= function(self
)
114 App
.filedropped(fake_dropped_file
)
115 -- filesystem now contains a file called foo
116 check_eq(App
.filesystem
['foo'], 'abc\ndef\n', 'check')