a8747478ff
I'm learning the hard way that resizing the window is a big deal. Only do this when someone explicitly requests it, otherwise follow LÖVE's defaults. Therefore we're also going to stop trying to be smart when showing the log browser. Leave window resizing to manual operations. Now initialization looks a lot more similar for the run and source apps.
118 lines
4.3 KiB
Lua
118 lines
4.3 KiB
Lua
function test_resize_window()
|
|
App.screen.init{width=300, height=300}
|
|
Editor_state = edit.initialize_test_state()
|
|
Editor_state.filename = 'foo'
|
|
Log_browser_state = edit.initialize_test_state()
|
|
check_eq(App.screen.width, 300, 'baseline/width')
|
|
check_eq(App.screen.height, 300, 'baseline/height')
|
|
check_eq(Editor_state.left, Test_margin_left, 'baseline/left_margin')
|
|
check_eq(Editor_state.right, 300 - Test_margin_right, 'baseline/right_margin')
|
|
App.resize(200, 400)
|
|
-- ugly; resize switches to real, non-test margins
|
|
check_eq(App.screen.width, 200, 'width')
|
|
check_eq(App.screen.height, 400, 'height')
|
|
check_eq(Editor_state.left, Margin_left, 'left_margin')
|
|
check_eq(Editor_state.right, 200-Margin_right, 'right_margin')
|
|
check_eq(Editor_state.width, 200-Margin_left-Margin_right, 'drawing_width')
|
|
-- TODO: how to make assertions about when App.update got past the early exit?
|
|
end
|
|
|
|
function test_show_log_browser_side()
|
|
App.screen.init{width=300, height=300}
|
|
Current_app = 'source'
|
|
Editor_state = edit.initialize_test_state()
|
|
Editor_state.filename = 'foo'
|
|
Text.redraw_all(Editor_state)
|
|
Log_browser_state = edit.initialize_test_state()
|
|
Text.redraw_all(Log_browser_state)
|
|
log_browser.parse(Log_browser_state)
|
|
check(not Show_log_browser_side, 'baseline')
|
|
-- pressing ctrl+l shows log-browser side
|
|
Current_time = Current_time + 0.1
|
|
App.run_after_keychord('C-l')
|
|
check(Show_log_browser_side, 'check')
|
|
end
|
|
|
|
function test_show_log_browser_side_splits_window_width()
|
|
-- initialize screen dimensions and indicate that it is maximized
|
|
App.screen.init{width=300, height=300}
|
|
-- initialize source app with left side occupying more than half the display
|
|
Current_app = 'source'
|
|
Editor_state = edit.initialize_test_state()
|
|
Editor_state.filename = 'foo'
|
|
Editor_state.left = Margin_left
|
|
Editor_state.right = 200
|
|
Text.redraw_all(Editor_state)
|
|
Log_browser_state = edit.initialize_test_state()
|
|
-- log browser has some arbitrary margins
|
|
Log_browser_state.left = 200 + Margin_left
|
|
Log_browser_state.right = 400
|
|
Text.redraw_all(Log_browser_state)
|
|
log_browser.parse(Log_browser_state)
|
|
-- display log browser
|
|
Current_time = Current_time + 0.1
|
|
App.run_after_keychord('C-l')
|
|
-- margins are now adjusted
|
|
check_eq(Editor_state.left, Margin_left, 'edit:left')
|
|
check_eq(Editor_state.right, App.screen.width/2 - Margin_right, 'edit:right')
|
|
check_eq(Log_browser_state.left, App.screen.width/2 + Margin_left, 'log:left')
|
|
check_eq(Log_browser_state.right, App.screen.width - Margin_right, 'log:right')
|
|
end
|
|
|
|
function test_drop_file()
|
|
App.screen.init{width=Editor_state.left+300, height=300}
|
|
Editor_state = edit.initialize_test_state()
|
|
App.filesystem['foo'] = 'abc\ndef\nghi\n'
|
|
local fake_dropped_file = {
|
|
opened = false,
|
|
getFilename = function(self)
|
|
return 'foo'
|
|
end,
|
|
open = function(self)
|
|
self.opened = true
|
|
end,
|
|
lines = function(self)
|
|
assert(self.opened)
|
|
return App.filesystem['foo']:gmatch('[^\n]+')
|
|
end,
|
|
close = function(self)
|
|
self.opened = false
|
|
end,
|
|
}
|
|
App.filedropped(fake_dropped_file)
|
|
check_eq(#Editor_state.lines, 3, '#lines')
|
|
check_eq(Editor_state.lines[1].data, 'abc', 'lines:1')
|
|
check_eq(Editor_state.lines[2].data, 'def', 'lines:2')
|
|
check_eq(Editor_state.lines[3].data, 'ghi', 'lines:3')
|
|
edit.draw(Editor_state)
|
|
end
|
|
|
|
function test_drop_file_saves_previous()
|
|
App.screen.init{width=Editor_state.left+300, height=300}
|
|
-- initially editing a file called foo that hasn't been saved to filesystem yet
|
|
Editor_state.lines = load_array{'abc', 'def'}
|
|
Editor_state.filename = 'foo'
|
|
schedule_save(Editor_state)
|
|
-- now drag a new file bar from the filesystem
|
|
App.filesystem['bar'] = 'abc\ndef\nghi\n'
|
|
local fake_dropped_file = {
|
|
opened = false,
|
|
getFilename = function(self)
|
|
return 'bar'
|
|
end,
|
|
open = function(self)
|
|
self.opened = true
|
|
end,
|
|
lines = function(self)
|
|
assert(self.opened)
|
|
return App.filesystem['bar']:gmatch('[^\n]+')
|
|
end,
|
|
close = function(self)
|
|
self.opened = false
|
|
end,
|
|
}
|
|
App.filedropped(fake_dropped_file)
|
|
-- filesystem now contains a file called foo
|
|
check_eq(App.filesystem['foo'], 'abc\ndef\n', 'check')
|
|
end
|