about summary refs log tree commit diff stats
path: root/subx/061error.subx
Commit message (Expand)AuthorAgeFilesLines
* 4822Kartik Agaram2018-12-031-0/+7
* 4821Kartik Agaram2018-12-021-0/+47
ions a little more obvious' href='/akkartik/lines.love/commit/main_tests.lua?id=2884f872d84046917919bc36ff5da9425b2a6399'>2884f87 ^
8bbc1ff ^
e1c5a42 ^
2a0a770 ^



1ecc3f4 ^
06c784b ^
2a0a770 ^




1ecc3f4 ^


b90a54a ^
b90a54a ^
69f4062 ^
0f02efd ^
b90a54a ^





2a0a770 ^
0f02efd ^
0e0f36f ^
b90a54a ^
2a0a770 ^
b90a54a ^

69f4062 ^
69f4062 ^

















0e0f36f ^
69f4062 ^

2a0a770 ^
69f4062 ^
2a0a770 ^

69f4062 ^
2a0a770 ^

69f4062 ^


69f4062 ^
















0e0f36f ^
69f4062 ^

2a0a770 ^



69f4062 ^

bfbe73e ^
3b36093 ^
13f67fa ^
bfbe73e ^

















2a0a770 ^



13f67fa ^
bfbe73e ^

d009390 ^
3b36093 ^
d009390 ^
8bbc1ff ^

b700021 ^
d009390 ^



















2a0a770 ^
d009390 ^
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
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
                             
                                        
                                             
                               
                                                  



                                                                                
                      
                                                    




                                                                             


                                                                                
                                     
                                        
                                  
                        





                                                  
                                              
                                           
                                   
                               
                                       

   
                                                                      

















                                                                                    
                                   

                               
                                                  
                                    

                                                              
                                     

                                                                                 


                                                                                      
















                                                                              
                                   

                               



                                                                                 

   
                         
                                                          
                                             

















                                                           



                                                        
                         

   
                                        
                                                          
                                                                                 

                                               
                             



















                                                           
                                                        
   
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}
  Display_width = App.screen.width
  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_doubles_window_width_if_possible()
  -- initialize screen dimensions to half width
  App.screen.init{width=300, height=300}
  Display_width = App.screen.width*2
  -- initialize source app with left side occupying entire window (half the display)
  Current_app = 'source'
  Editor_state = edit.initialize_test_state()
  Editor_state.filename = 'foo'
  Editor_state.left = Margin_left
  Editor_state.right = App.screen.width - Margin_right
  local old_editor_right = Editor_state.right
  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')
  -- window width is doubled
  check_eq(App.screen.width, 600, 'display:width')
  -- left side margins are unchanged
  check_eq(Editor_state.left, Margin_left, 'edit:left')
  check_eq(Editor_state.right, old_editor_right, 'edit:right')
  -- log browser margins are adjusted
  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_show_log_browser_side_resizes_both_sides_if_cannot_double_window_width()
  -- initialize screen dimensions and indicate that it is maximized
  App.screen.init{width=300, height=300}
  Display_width = 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