@@ -25,11 +25,11 @@ import qualified System.Environment as Env
25import System.IO ( hFlush, hPutStr, hPutBuf, stdout )
25import System.IO ( hFlush, hPutStr, hPutBuf, stdout )
28− print_intro
28+ printIntro
30−output_file_path = "test_results.list"
30+outputFilePath = "test_results.list"
32−print_intro = do
32+printIntro = do
33 putStr $ [s|
33 putStr $ [s|
34This is an interactive verification program for the terminal input and output
34This is an interactive verification program for the terminal input and output
35support of the VTY library. This will ask a series of questions about what you
35support of the VTY library. This will ask a series of questions about what you
@@ -37,7 +37,7 @@ see on screen. The goal is to verify that VTY's output and input support
37performs as expected with your terminal.
37performs as expected with your terminal.
39This program produces a file named
39This program produces a file named
40− |] ++ output_file_path ++ [s|
40+ |] ++ outputFilePath ++ [s|
41in the current directory that contains the results for each test assertion. This
41in the current directory that contains the results for each test assertion. This
42can be emailed to coreyoconnor@gmail.com and used by the VTY authors to improve
42can be emailed to coreyoconnor@gmail.com and used by the VTY authors to improve
43support for your terminal. No personal information is contained in the report.
43support for your terminal. No personal information is contained in the report.
@@ -72,35 +72,35 @@ with the test_results.list file pasted into the issue. The issue summary can
72mention the specific tests that failed or just say "interactive terminal test
72mention the specific tests that failed or just say "interactive terminal test
75− wait_for_return
75+ waitForReturn
76− results <- do_test_menu 1
76+ results <- doTestMenu 1
77− env_attributes <- mapM ( \env_name -> Control.Exception.catch ( Env.getEnv env_name >>= return . (,) env_name )
77+ envAttributes <- mapM ( \env_name -> Control.Exception.catch ( Env.getEnv env_name >>= return . (,) env_name )
78 ( \ (_ :: SomeException) -> return (env_name, "") )
78 ( \ (_ :: SomeException) -> return (env_name, "") )
80− [ "TERM", "COLORTERM", "LANG", "TERM_PROGRAM", "XTERM_VERSION" ]
80+ [ "TERM", "COLORTERM", "LANG", "TERM_PROGRAM", "XTERM_VERSION" ]
81− t <- output_for_current_terminal
81+ t <- outputForCurrentTerminal
82− let results_txt = show env_attributes ++ "\n"
82+ let resultsTxt = show envAttributes ++ "\n"
83− ++ terminal_ID t ++ "\n"
83+ ++ terminalID t ++ "\n"
84− ++ show results ++ "\n"
84+ ++ show results ++ "\n"
85− release_terminal t
85+ releaseTerminal t
86− writeFile output_file_path results_txt
86+ writeFile outputFilePath resultsTxt
88−wait_for_return = do
88+waitForReturn = do
89 putStr "\n(press return to continue)"
89 putStr "\n(press return to continue)"
90 hFlush stdout
90 hFlush stdout
93−test_menu :: [(String, Test)]
93+testMenu :: [(String, Test)]
94−test_menu = zip (map show [1..]) all_tests
94+testMenu = zip (map show [1..]) allTests
96−do_test_menu :: Int -> IO [(String, Bool)]
96+doTestMenu :: Int -> IO [(String, Bool)]
97−do_test_menu next_ID
97+doTestMenu nextID
98− | next_ID > length all_tests = do
98+ | nextID > length allTests = do
99− putStrLn $ "Done! Please email the " ++ output_file_path ++ " file to coreyoconnor@gmail.com"
99+ putStrLn $ "Done! Please email the " ++ outputFilePath ++ " file to coreyoconnor@gmail.com"
100 return []
100 return []
101 | otherwise = do
101 | otherwise = do
102− display_test_menu
102+ displayTestMenu
103− putStrLn $ "Press return to start with #" ++ show next_ID ++ "."
103+ putStrLn $ "Press return to start with #" ++ show nextID ++ "."
104 putStrLn "Enter a test number to perform only that test."
104 putStrLn "Enter a test number to perform only that test."
105 putStrLn "q (or control-C) to quit."
105 putStrLn "q (or control-C) to quit."
106 putStr "> "
106 putStr "> "
@@ -109,98 +109,98 @@ do_test_menu next_ID
109 case s of
109 case s of
110 "q" -> return mempty
110 "q" -> return mempty
111 "" -> do
111 "" -> do
112− r <- run_test $ show next_ID
112+ r <- runTest $ show nextID
113− rs <- do_test_menu ( next_ID + 1 )
113+ rs <- doTestMenu ( nextID + 1 )
114 return $ r : rs
114 return $ r : rs
115− i | isJust ( lookup i test_menu ) -> do
115+ i | isJust ( lookup i testMenu ) -> do
116− r <- run_test i
116+ r <- runTest i
117− rs <- do_test_menu ( read i + 1 )
117+ rs <- doTestMenu ( read i + 1 )
118 return $ r : rs
118 return $ r : rs
120− display_test_menu
120+ displayTestMenu
121− = mapM_ display_test_menu' test_menu
121+ = mapM_ displayTestMenu' testMenu
122− display_test_menu' ( i, t )
122+ displayTestMenu' ( i, t )
123− = putStrLn $ ( if i == show next_ID
123+ = putStrLn $ ( if i == show nextID
124 then "> "
124 then "> "
126− ) ++ i ++ ". " ++ test_name t
126+ ) ++ i ++ ". " ++ testName t
128−run_test :: String -> IO (String, Bool)
128+runTest :: String -> IO (String, Bool)
129−run_test i = do
129+runTest i = do
130− let t = fromJust $ lookup i test_menu
130+ let t = fromJust $ lookup i testMenu
131− print_summary t
131+ printSummary t
132− wait_for_return
132+ waitForReturn
133− test_action t
133+ testAction t
134− r <- confirm_results t
134+ r <- confirmResults t
135− return (test_ID t, r)
135+ return (testID t, r)
137−default_success_confirm_results = do
137+defaultSuccessConfirmResults = do
138 putStr "\n"
138 putStr "\n"
139 putStr "[Y/n] "
139 putStr "[Y/n] "
140 hFlush stdout
140 hFlush stdout
141 r <- getLine
141 r <- getLine
142 case r of
142 case r of
143− "" -> return True
143+ "" -> return True
144 "y" -> return True
144 "y" -> return True
145 "Y" -> return True
145 "Y" -> return True
146 "n" -> return False
146 "n" -> return False
148data Test = Test
148data Test = Test
149− { test_name :: String
149+ { testName :: String
150− , test_ID :: String
150+ , testID :: String
151− , test_action :: IO ()
151+ , testAction :: IO ()
152− , print_summary :: IO ()
152+ , printSummary :: IO ()
153− , confirm_results :: IO Bool
153+ , confirmResults :: IO Bool
156−all_tests
156+allTests
157− = [ reserve_output_test
157+ = [ reserveOutputTest
158− , display_bounds_test_0
158+ , displayBoundsTest0
159− , display_bounds_test_1
159+ , displayBoundsTest1
160− , display_bounds_test_2
160+ , displayBoundsTest2
161− , display_bounds_test_3
161+ , displayBoundsTest3
162− , unicode_single_width_0
162+ , unicodeSingleWidth0
163− , unicode_single_width_1
163+ , unicodeSingleWidth1
164− , unicode_double_width_0
164+ , unicodeDoubleWidth0
165− , unicode_double_width_1
165+ , unicodeDoubleWidth1
166− , attributes_test_0
166+ , attributesTest0
167− , attributes_test_1
167+ , attributesTest1
168− , attributes_test_2
168+ , attributesTest2
169− , attributes_test_3
169+ , attributesTest3
170− , attributes_test_4
170+ , attributesTest4
171− , attributes_test_5
171+ , attributesTest5
172− , inline_test_0
172+ , inlineTest0
173− , inline_test_1
173+ , inlineTest1
174− , inline_test_2
174+ , inlineTest2
175− , cursor_hide_test_0
175+ , cursorHideTest0
176− , vert_crop_test_0
176+ , vertCropTest0
177− , vert_crop_test_1
177+ , vertCropTest1
178− , vert_crop_test_2
178+ , vertCropTest2
179− , vert_crop_test_3
179+ , vertCropTest3
180− , horiz_crop_test_0
180+ , horizCropTest0
181− , horiz_crop_test_1
181+ , horizCropTest1
182− , horiz_crop_test_2
182+ , horizCropTest2
183− , horiz_crop_test_3
183+ , horizCropTest3
184− , layer_0
184+ , layer0
185− , layer_1
185+ , layer1
188−reserve_output_test = Test
188+reserveOutputTest = Test
189− { test_name = "Initialize and reserve terminal output then restore previous state."
189+ { testName = "Initialize and reserve terminal output then restore previous state."
190− , test_ID = "reserve_output_test"
190+ , testID = "reserveOutputTest"
191− , test_action = do
191+ , testAction = do
192− t <- output_for_current_terminal
192+ t <- outputForCurrentTerminal
193− reserve_display t
193+ reserveDisplay t
194 putStrLn "Line 1"
194 putStrLn "Line 1"
195 putStrLn "Line 2"
195 putStrLn "Line 2"
196 putStrLn "Line 3"
196 putStrLn "Line 3"
197 putStrLn "Line 4 (press return)"
197 putStrLn "Line 4 (press return)"
198 hFlush stdout
198 hFlush stdout
200− release_display t
200+ releaseDisplay t
201− release_terminal t
201+ releaseTerminal t
202 return ()
202 return ()
203− , print_summary = do
203+ , printSummary = do
204 putStr $ [s|
204 putStr $ [s|
205Once return is pressed:
205Once return is pressed:
206 0. The screen will be cleared.
206 0. The screen will be cleared.
@@ -211,123 +211,123 @@ After return is pressed for the second time this test then:
211 * The screen containing the test summary should be restored;
211 * The screen containing the test summary should be restored;
212 * The cursor is visible.
212 * The cursor is visible.
214− , confirm_results = do
214+ , confirmResults = do
215 putStr $ [s|
215 putStr $ [s|
216Did the test output match the description?
216Did the test output match the description?
218− default_success_confirm_results
218+ defaultSuccessConfirmResults
221−display_bounds_test_0 = Test
221+displayBoundsTest0 = Test
222− { test_name = "Verify display bounds are correct test 0: Using spaces."
222+ { testName = "Verify display bounds are correct test 0: Using spaces."
223− , test_ID = "display_bounds_test_0"
223+ , testID = "displayBoundsTest0"
224− , test_action = do
224+ , testAction = do
225− t <- output_for_current_terminal
225+ t <- outputForCurrentTerminal
226− reserve_display t
226+ reserveDisplay t
227− (w,h) <- display_bounds t
227+ (w,h) <- displayBounds t
228− let row_0 = replicate (fromEnum w) 'X' ++ "\n"
228+ let row0 = replicate (fromEnum w) 'X' ++ "\n"
229− row_h = replicate (fromEnum w - 1) 'X'
229+ rowH = replicate (fromEnum w - 1) 'X'
230− row_n = "X" ++ replicate (fromEnum w - 2) ' ' ++ "X\n"
230+ rowN = "X" ++ replicate (fromEnum w - 2) ' ' ++ "X\n"
231− image = row_0 ++ (concat $ replicate (fromEnum h - 2) row_n) ++ row_h
231+ image = row0 ++ (concat $ replicate (fromEnum h - 2) rowN) ++ rowH
232 putStr image
232 putStr image
233 hFlush stdout
233 hFlush stdout
235− release_display t
235+ releaseDisplay t
236− release_terminal t
236+ releaseTerminal t
237 return ()
237 return ()
238− , print_summary = display_bounds_test_summary True
238+ , printSummary = displayBoundsTestSummary True
239− , confirm_results = generic_output_match_confirm
239+ , confirmResults = genericOutputMatchConfirm
242−display_bounds_test_1 = Test
242+displayBoundsTest1 = Test
243− { test_name = "Verify display bounds are correct test 0: Using cursor movement."
243+ { testName = "Verify display bounds are correct test 0: Using cursor movement."
244− , test_ID = "display_bounds_test_1"
244+ , testID = "displayBoundsTest1"
245− , test_action = do
245+ , testAction = do
246− t <- output_for_current_terminal
246+ t <- outputForCurrentTerminal
247− reserve_display t
247+ reserveDisplay t
248− (w,h) <- display_bounds t
248+ (w,h) <- displayBounds t
249− set_cursor_pos t 0 0
249+ setCursorPos t 0 0
250− let row_0 = replicate (fromEnum w) 'X' ++ "\n"
250+ let row0 = replicate (fromEnum w) 'X' ++ "\n"
251− putStr row_0
251+ putStr row0
252 forM_ [1 .. h - 2] $ \y -> do
252 forM_ [1 .. h - 2] $ \y -> do
253− set_cursor_pos t 0 y
253+ setCursorPos t 0 y
254 putStr "X"
254 putStr "X"
255 hFlush stdout
255 hFlush stdout
256− set_cursor_pos t (w - 1) y
256+ setCursorPos t (w - 1) y
257 putStr "X"
257 putStr "X"
258 hFlush stdout
258 hFlush stdout
259− set_cursor_pos t 0 (h - 1)
259+ setCursorPos t 0 (h - 1)
260− let row_h = replicate (fromEnum w - 1) 'X'
260+ let rowH = replicate (fromEnum w - 1) 'X'
261− putStr row_h
261+ putStr rowH
262 hFlush stdout
262 hFlush stdout
264− release_display t
264+ releaseDisplay t
265− release_terminal t
265+ releaseTerminal t
266 return ()
266 return ()
267− , print_summary = display_bounds_test_summary True
267+ , printSummary = displayBoundsTestSummary True
268− , confirm_results = generic_output_match_confirm
268+ , confirmResults = genericOutputMatchConfirm
271−display_bounds_test_2 = Test
271+displayBoundsTest2 = Test
272− { test_name = "Verify display bounds are correct test 0: Using Image ops."
272+ { testName = "Verify display bounds are correct test 0: Using Image ops."
273− , test_ID = "display_bounds_test_2"
273+ , testID = "displayBoundsTest2"
274− , test_action = do
274+ , testAction = do
275− t <- output_for_current_terminal
275+ t <- outputForCurrentTerminal
276− reserve_display t
276+ reserveDisplay t
277− bounds@(w,h) <- display_bounds t
277+ bounds@(w,h) <- displayBounds t
278− let first_row = horiz_cat $ replicate (fromEnum w) (char def_attr 'X')
278+ let firstRow = horizCat $ replicate (fromEnum w) (char defAttr 'X')
279− middle_rows = vert_cat $ replicate (fromEnum h - 2) middle_row
279+ middleRows = vertCat $ replicate (fromEnum h - 2) middleRow
280− middle_row = (char def_attr 'X') <|> background_fill (w - 2) 1 <|> (char def_attr 'X')
280+ middleRow = (char defAttr 'X') <|> backgroundFill (w - 2) 1 <|> (char defAttr 'X')
281− end_row = first_row
281+ endRow = firstRow
282− image = first_row <-> middle_rows <-> end_row
282+ image = firstRow <-> middleRows <-> endRow
283− pic = (pic_for_image image) { pic_cursor = Cursor (w - 1) (h - 1) }
283+ pic = (picForImage image) { picCursor = Cursor (w - 1) (h - 1) }
284− d <- display_context t bounds
284+ d <- displayContext t bounds
285− output_picture d pic
285+ outputPicture d pic
287− release_display t
287+ releaseDisplay t
288− release_terminal t
288+ releaseTerminal t
289 return ()
289 return ()
290− , print_summary = display_bounds_test_summary True
290+ , printSummary = displayBoundsTestSummary True
291− , confirm_results = generic_output_match_confirm
291+ , confirmResults = genericOutputMatchConfirm
294−display_bounds_test_3 = Test
294+displayBoundsTest3 = Test
295− { test_name = "Verify display bounds are correct test 0: Hide cursor; Set cursor pos."
295+ { testName = "Verify display bounds are correct test 0: Hide cursor; Set cursor pos."
296− , test_ID = "display_bounds_test_3"
296+ , testID = "displayBoundsTest3"
297− , test_action = do
297+ , testAction = do
298− t <- output_for_current_terminal
298+ t <- outputForCurrentTerminal
299− reserve_display t
299+ reserveDisplay t
300− (w,h) <- display_bounds t
300+ (w,h) <- displayBounds t
301− hide_cursor t
301+ hideCursor t
302− set_cursor_pos t 0 0
302+ setCursorPos t 0 0
303− let row_0 = replicate (fromEnum w) 'X'
303+ let row0 = replicate (fromEnum w) 'X'
304− putStrLn row_0
304+ putStrLn row0
305 forM_ [1 .. h - 2] $ \y -> do
305 forM_ [1 .. h - 2] $ \y -> do
306− set_cursor_pos t 0 y
306+ setCursorPos t 0 y
307 putStr "X"
307 putStr "X"
308 hFlush stdout
308 hFlush stdout
309− set_cursor_pos t (w - 1) y
309+ setCursorPos t (w - 1) y
310 putStr "X"
310 putStr "X"
311 hFlush stdout
311 hFlush stdout
312− set_cursor_pos t 0 (h - 1)
312+ setCursorPos t 0 (h - 1)
313− let row_h = row_0
313+ let rowH = row0
314− putStr row_h
314+ putStr rowH
315 hFlush stdout
315 hFlush stdout
317− show_cursor t
317+ showCursor t
318− release_display t
318+ releaseDisplay t
319− release_terminal t
319+ releaseTerminal t
320 return ()
320 return ()
321− , print_summary = display_bounds_test_summary False
321+ , printSummary = displayBoundsTestSummary False
322− , confirm_results = generic_output_match_confirm
322+ , confirmResults = genericOutputMatchConfirm
325−display_bounds_test_summary has_cursor = do
325+displayBoundsTestSummary hasCursor = do
326 putStr $ [s|
326 putStr $ [s|
327Once return is pressed:
327Once return is pressed:
328 0. The screen will be cleared.
328 0. The screen will be cleared.
330− if has_cursor
330+ if hasCursor
331 then putStr " 1. The cursor will be visible."
331 then putStr " 1. The cursor will be visible."
332 else putStr " 1. The cursor will NOT be visible."
332 else putStr " 1. The cursor will NOT be visible."
333 putStr [s|
333 putStr [s|
@@ -338,7 +338,7 @@ Once return is pressed:
338 |XXXXXXXXXXXXX|
338 |XXXXXXXXXXXXX|
341− if has_cursor
341+ if hasCursor
342 then putStr $ [s|
342 then putStr $ [s|
344 |XXXXXXXXXXXXC| |]
344 |XXXXXXXXXXXXC| |]
@@ -359,11 +359,11 @@ After return is pressed for the second time:
359 1. The cursor should be visible.
359 1. The cursor should be visible.
362−generic_output_match_confirm = do
362+genericOutputMatchConfirm = do
363 putStr $ [s|
363 putStr $ [s|
364Did the test output match the description?
364Did the test output match the description?
366− default_success_confirm_results
366+ defaultSuccessConfirmResults
368-- Explicitely definethe bytes that encode each example text.
368-- Explicitely definethe bytes that encode each example text.
369-- This avoids any issues with how the compiler represents string literals.
369-- This avoids any issues with how the compiler represents string literals.
@@ -376,21 +376,21 @@ Did the test output match the description?
377-- txt_0 = ↑↑↓↓←→←→BA
377-- txt_0 = ↑↑↓↓←→←→BA
379−utf8_txt_0 :: [[Word8]]
379+utf8Txt0 :: [[Word8]]
380−utf8_txt_0 = [ [ 0xe2 , 0x86 , 0x91 ]
380+utf8Txt0 = [ [ 0xe2 , 0x86 , 0x91 ]
381− , [ 0xe2 , 0x86 , 0x91 ]
381+ , [ 0xe2 , 0x86 , 0x91 ]
382− , [ 0xe2 , 0x86 , 0x93 ]
382+ , [ 0xe2 , 0x86 , 0x93 ]
383− , [ 0xe2 , 0x86 , 0x93 ]
383+ , [ 0xe2 , 0x86 , 0x93 ]
384− , [ 0xe2 , 0x86 , 0x90 ]
384+ , [ 0xe2 , 0x86 , 0x90 ]
385− , [ 0xe2 , 0x86 , 0x92 ]
385+ , [ 0xe2 , 0x86 , 0x92 ]
386− , [ 0xe2 , 0x86 , 0x90 ]
386+ , [ 0xe2 , 0x86 , 0x90 ]
387− , [ 0xe2 , 0x86 , 0x92 ]
387+ , [ 0xe2 , 0x86 , 0x92 ]
388− , [ 0x42 ]
388+ , [ 0x42 ]
389− , [ 0x41 ]
389+ , [ 0x41 ]
392−iso_10646_txt_0 :: String
392+iso10646Txt0 :: String
393−iso_10646_txt_0 = map toEnum
393+iso10646Txt0 = map toEnum
@@ -403,46 +403,46 @@ iso_10646_txt_0 = map toEnum
406−unicode_single_width_0 = Test
406+unicodeSingleWidth0 = Test
407− { test_name = "Verify terminal can display unicode single-width characters. (Direct UTF-8)"
407+ { testName = "Verify terminal can display unicode single-width characters. (Direct UTF-8)"
408− , test_ID = "unicode_single_width_0"
408+ , testID = "unicodeSingleWidth0"
409− , test_action = do
409+ , testAction = do
410− t <- output_for_current_terminal
410+ t <- outputForCurrentTerminal
411− reserve_display t
411+ reserveDisplay t
412− hide_cursor t
412+ hideCursor t
413− withArrayLen (concat utf8_txt_0) (flip $ hPutBuf stdout)
413+ withArrayLen (concat utf8Txt0) (flip $ hPutBuf stdout)
414 hPutStr stdout "\n"
414 hPutStr stdout "\n"
415 hPutStr stdout "0123456789\n"
415 hPutStr stdout "0123456789\n"
416 hFlush stdout
416 hFlush stdout
418− release_display t
418+ releaseDisplay t
419− release_terminal t
419+ releaseTerminal t
420 return ()
420 return ()
421− , print_summary = unicode_single_width_summary
421+ , printSummary = unicodeSingleWidthSummary
422− , confirm_results = generic_output_match_confirm
422+ , confirmResults = genericOutputMatchConfirm
425−unicode_single_width_1 = Test
425+unicodeSingleWidth1 = Test
426− { test_name = "Verify terminal can display unicode single-width characters. (Image ops)"
426+ { testName = "Verify terminal can display unicode single-width characters. (Image ops)"
427− , test_ID = "unicode_single_width_1"
427+ , testID = "unicodeSingleWidth1"
428− , test_action = do
428+ , testAction = do
429− t <- output_for_current_terminal
429+ t <- outputForCurrentTerminal
430− reserve_display t
430+ reserveDisplay t
431− let pic = pic_for_image image
431+ let pic = picForImage image
432− image = line_0 <-> line_1
432+ image = line0 <-> line1
433− line_0 = iso_10646_string def_attr iso_10646_txt_0
433+ line0 = iso10646String defAttr iso10646Txt0
434− line_1 = string def_attr "0123456789"
434+ line1 = string defAttr "0123456789"
435− d <- display_bounds t >>= display_context t
435+ d <- displayBounds t >>= displayContext t
436− output_picture d pic
436+ outputPicture d pic
438− release_display t
438+ releaseDisplay t
439− release_terminal t
439+ releaseTerminal t
440 return ()
440 return ()
441− , print_summary = unicode_single_width_summary
441+ , printSummary = unicodeSingleWidthSummary
442− , confirm_results = generic_output_match_confirm
442+ , confirmResults = genericOutputMatchConfirm
445−unicode_single_width_summary = putStr [s|
445+unicodeSingleWidthSummary = putStr [s|
446Once return is pressed:
446Once return is pressed:
447 0. The screen will be cleared.
447 0. The screen will be cleared.
448 1. The cursor will be hidden.
448 1. The cursor will be hidden.
@@ -476,55 +476,55 @@ After return is pressed for the second time:
477-- The second example is a unicode string containing double-width glyphs
477-- The second example is a unicode string containing double-width glyphs
479−utf8_txt_1 :: [[Word8]]
479+utf8Txt1 :: [[Word8]]
480−utf8_txt_1 = [ [0xe4,0xbd,0xa0]
480+utf8Txt1 = [ [0xe4,0xbd,0xa0]
481− , [0xe5,0xa5,0xbd]
481+ , [0xe5,0xa5,0xbd]
482− , [0xe5,0x90,0x97]
482+ , [0xe5,0x90,0x97]
485−iso_10646_txt_1 :: String
485+iso10646Txt1 :: String
486−iso_10646_txt_1 = map toEnum [20320,22909,21527]
486+iso10646Txt1 = map toEnum [20320,22909,21527]
488−unicode_double_width_0 = Test
488+unicodeDoubleWidth0 = Test
489− { test_name = "Verify terminal can display unicode double-width characters. (Direct UTF-8)"
489+ { testName = "Verify terminal can display unicode double-width characters. (Direct UTF-8)"
490− , test_ID = "unicode_double_width_0"
490+ , testID = "unicodeDoubleWidth0"
491− , test_action = do
491+ , testAction = do
492− t <- output_for_current_terminal
492+ t <- outputForCurrentTerminal
493− reserve_display t
493+ reserveDisplay t
494− hide_cursor t
494+ hideCursor t
495− withArrayLen (concat utf8_txt_1) (flip $ hPutBuf stdout)
495+ withArrayLen (concat utf8Txt1) (flip $ hPutBuf stdout)
496 hPutStr stdout "\n"
496 hPutStr stdout "\n"
497 hPutStr stdout "012345\n"
497 hPutStr stdout "012345\n"
498 hFlush stdout
498 hFlush stdout
500− release_display t
500+ releaseDisplay t
501− release_terminal t
501+ releaseTerminal t
502 return ()
502 return ()
503− , print_summary = unicode_double_width_summary
503+ , printSummary = unicodeDoubleWidthSummary
504− , confirm_results = generic_output_match_confirm
504+ , confirmResults = genericOutputMatchConfirm
507−unicode_double_width_1 = Test
507+unicodeDoubleWidth1 = Test
508− { test_name = "Verify terminal can display unicode double-width characters. (Image ops)"
508+ { testName = "Verify terminal can display unicode double-width characters. (Image ops)"
509− , test_ID = "unicode_double_width_1"
509+ , testID = "unicodeDoubleWidth1"
510− , test_action = do
510+ , testAction = do
511− t <- output_for_current_terminal
511+ t <- outputForCurrentTerminal
512− reserve_display t
512+ reserveDisplay t
513− let pic = pic_for_image image
513+ let pic = picForImage image
514− image = line_0 <-> line_1
514+ image = line0 <-> line1
515− line_0 = iso_10646_string def_attr iso_10646_txt_1
515+ line0 = iso10646String defAttr iso10646Txt1
516− line_1 = string def_attr "012345"
516+ line1 = string defAttr "012345"
517− d <- display_bounds t >>= display_context t
517+ d <- displayBounds t >>= displayContext t
518− output_picture d pic
518+ outputPicture d pic
520− release_display t
520+ releaseDisplay t
521− release_terminal t
521+ releaseTerminal t
522 return ()
522 return ()
523− , print_summary = unicode_double_width_summary
523+ , printSummary = unicodeDoubleWidthSummary
524− , confirm_results = generic_output_match_confirm
524+ , confirmResults = genericOutputMatchConfirm
527−unicode_double_width_summary = putStr [s|
527+unicodeDoubleWidthSummary = putStr [s|
528Once return is pressed:
528Once return is pressed:
529 0. The screen will be cleared.
529 0. The screen will be cleared.
530 1. The cursor will be hidden.
530 1. The cursor will be hidden.
@@ -551,32 +551,32 @@ After return is pressed for the second time:
551 1. The cursor should be visible.
551 1. The cursor should be visible.
554−all_colors = zip [ black, red, green, yellow, blue, magenta, cyan, white ]
554+allColors = zip [ black, red, green, yellow, blue, magenta, cyan, white ]
555− [ "black", "red", "green", "yellow", "blue", "magenta", "cyan", "white" ]
555+ [ "black", "red", "green", "yellow", "blue", "magenta", "cyan", "white" ]
557−all_bright_colors
557+allBrightColors
558− = zip [ bright_black, bright_red, bright_green, bright_yellow, bright_blue, bright_magenta, bright_cyan, bright_white ]
558+ = zip [ brightBlack, brightRed, brightGreen, brightYellow, brightBlue, brightMagenta, brightCyan, brightWhite ]
559 [ "bright black", "bright red", "bright green", "bright yellow", "bright blue", "bright magenta", "bright cyan", "bright white" ]
559 [ "bright black", "bright red", "bright green", "bright yellow", "bright blue", "bright magenta", "bright cyan", "bright white" ]
561−attributes_test_0 = Test
561+attributesTest0 = Test
562− { test_name = "Character attributes: foreground colors."
562+ { testName = "Character attributes: foreground colors."
563− , test_ID = "attributes_test_0"
563+ , testID = "attributesTest0"
564− , test_action = do
564+ , testAction = do
565− t <- output_for_current_terminal
565+ t <- outputForCurrentTerminal
566− reserve_display t
566+ reserveDisplay t
567− let pic = pic_for_image image
567+ let pic = picForImage image
568− image = border <|> column_0 <|> border <|> column_1 <|> border
568+ image = border <|> column0 <|> border <|> column1 <|> border
569− column_0 = vert_cat $ map line_with_color all_colors
569+ column0 = vertCat $ map lineWithColor allColors
570− border = vert_cat $ replicate (length all_colors) $ string def_attr " | "
570+ border = vertCat $ replicate (length allColors) $ string defAttr " | "
571− column_1 = vert_cat $ map (string def_attr . snd) all_colors
571+ column1 = vertCat $ map (string defAttr . snd) allColors
572− line_with_color (c, c_name) = string (def_attr `with_fore_color` c) c_name
572+ lineWithColor (c, cName) = string (defAttr `withForeColor` c) cName
573− d <- display_bounds t >>= display_context t
573+ d <- displayBounds t >>= displayContext t
574− output_picture d pic
574+ outputPicture d pic
576− release_display t
576+ releaseDisplay t
577− release_terminal t
577+ releaseTerminal t
578 return ()
578 return ()
579− , print_summary = do
579+ , printSummary = do
580 putStr $ [s|
580 putStr $ [s|
581Once return is pressed:
581Once return is pressed:
582 0. The screen will be cleared.
582 0. The screen will be cleared.
@@ -597,32 +597,32 @@ After return is pressed for the second time:
597 0. The screen containing the test summary should be restored.
597 0. The screen containing the test summary should be restored.
598 1. The cursor should be visible.
598 1. The cursor should be visible.
600− , confirm_results = do
600+ , confirmResults = do
601 putStr $ [s|
601 putStr $ [s|
602Did the test output match the description?
602Did the test output match the description?
604− default_success_confirm_results
604+ defaultSuccessConfirmResults
607−attributes_test_1 = Test
607+attributesTest1 = Test
608− { test_name = "Character attributes: background colors."
608+ { testName = "Character attributes: background colors."
609− , test_ID = "attributes_test_1"
609+ , testID = "attributesTest1"
610− , test_action = do
610+ , testAction = do
611− t <- output_for_current_terminal
611+ t <- outputForCurrentTerminal
612− reserve_display t
612+ reserveDisplay t
613− let pic = pic_for_image image
613+ let pic = picForImage image
614− image = border <|> column_0 <|> border <|> column_1 <|> border
614+ image = border <|> column0 <|> border <|> column1 <|> border
615− column_0 = vert_cat $ map line_with_color all_colors
615+ column0 = vertCat $ map lineWithColor allColors
616− border = vert_cat $ replicate (length all_colors) $ string def_attr " | "
616+ border = vertCat $ replicate (length allColors) $ string defAttr " | "
617− column_1 = vert_cat $ map (string def_attr . snd) all_colors
617+ column1 = vertCat $ map (string defAttr . snd) allColors
618− line_with_color (c, c_name) = string (def_attr `with_back_color` c) c_name
618+ lineWithColor (c, cName) = string (defAttr `withBackColor` c) cName
619− d <- display_bounds t >>= display_context t
619+ d <- displayBounds t >>= displayContext t
620− output_picture d pic
620+ outputPicture d pic
622− release_display t
622+ releaseDisplay t
623− release_terminal t
623+ releaseTerminal t
624 return ()
624 return ()
625− , print_summary = do
625+ , printSummary = do
626 putStr $ [s|
626 putStr $ [s|
627Once return is pressed:
627Once return is pressed:
628 0. The screen will be cleared.
628 0. The screen will be cleared.
@@ -652,34 +652,34 @@ After return is pressed for the second time:
652 0. The screen containing the test summary should be restored.
652 0. The screen containing the test summary should be restored.
653 1. The cursor should be visible.
653 1. The cursor should be visible.
655− , confirm_results = do
655+ , confirmResults = do
656 putStr $ [s|
656 putStr $ [s|
657Did the test output match the description?
657Did the test output match the description?
659− default_success_confirm_results
659+ defaultSuccessConfirmResults
662−attributes_test_2 = Test
662+attributesTest2 = Test
663− { test_name = "Character attributes: Vivid foreground colors."
663+ { testName = "Character attributes: Vivid foreground colors."
664− , test_ID = "attributes_test_2"
664+ , testID = "attributesTest2"
665− , test_action = do
665+ , testAction = do
666− t <- output_for_current_terminal
666+ t <- outputForCurrentTerminal
667− reserve_display t
667+ reserveDisplay t
668− let pic = pic_for_image image
668+ let pic = picForImage image
669− image = horiz_cat [border, column_0, border, column_1, border, column_2, border]
669+ image = horizCat [border, column0, border, column1, border, column2, border]
670− border = vert_cat $ replicate (length all_colors) $ string def_attr " | "
670+ border = vertCat $ replicate (length allColors) $ string defAttr " | "
671− column_0 = vert_cat $ map line_with_color_0 all_colors
671+ column0 = vertCat $ map lineWithColor0 allColors
672− column_1 = vert_cat $ map line_with_color_1 all_bright_colors
672+ column1 = vertCat $ map lineWithColor1 allBrightColors
673− column_2 = vert_cat $ map (string def_attr . snd) all_colors
673+ column2 = vertCat $ map (string defAttr . snd) allColors
674− line_with_color_0 (c, c_name) = string (def_attr `with_fore_color` c) c_name
674+ lineWithColor0 (c, cName) = string (defAttr `withForeColor` c) cName
675− line_with_color_1 (c, c_name) = string (def_attr `with_fore_color` c) c_name
675+ lineWithColor1 (c, cName) = string (defAttr `withForeColor` c) cName
676− d <- display_bounds t >>= display_context t
676+ d <- displayBounds t >>= displayContext t
677− output_picture d pic
677+ outputPicture d pic
679− release_display t
679+ releaseDisplay t
680− release_terminal t
680+ releaseTerminal t
681 return ()
681 return ()
682− , print_summary = do
682+ , printSummary = do
683 putStr $ [s|
683 putStr $ [s|
684Once return is pressed:
684Once return is pressed:
685 0. The screen will be cleared.
685 0. The screen will be cleared.
@@ -711,34 +711,34 @@ After return is pressed for the second time:
711 0. The screen containing the test summary should be restored.
711 0. The screen containing the test summary should be restored.
712 1. The cursor should be visible.
712 1. The cursor should be visible.
714− , confirm_results = do
714+ , confirmResults = do
715 putStr $ [s|
715 putStr $ [s|
716Did the test output match the description?
716Did the test output match the description?
718− default_success_confirm_results
718+ defaultSuccessConfirmResults
721−attributes_test_3 = Test
721+attributesTest3 = Test
722− { test_name = "Character attributes: Vivid background colors."
722+ { testName = "Character attributes: Vivid background colors."
723− , test_ID = "attributes_test_3"
723+ , testID = "attributesTest3"
724− , test_action = do
724+ , testAction = do
725− t <- output_for_current_terminal
725+ t <- outputForCurrentTerminal
726− reserve_display t
726+ reserveDisplay t
727− let pic = pic_for_image image
727+ let pic = picForImage image
728− image = horiz_cat [border, column_0, border, column_1, border, column_2, border]
728+ image = horizCat [border, column0, border, column1, border, column2, border]
729− border = vert_cat $ replicate (length all_colors) $ string def_attr " | "
729+ border = vertCat $ replicate (length allColors) $ string defAttr " | "
730− column_0 = vert_cat $ map line_with_color_0 all_colors
730+ column0 = vertCat $ map lineWithColor0 allColors
731− column_1 = vert_cat $ map line_with_color_1 all_bright_colors
731+ column1 = vertCat $ map lineWithColor1 allBrightColors
732− column_2 = vert_cat $ map (string def_attr . snd) all_colors
732+ column2 = vertCat $ map (string defAttr . snd) allColors
733− line_with_color_0 (c, c_name) = string (def_attr `with_back_color` c) c_name
733+ lineWithColor0 (c, cName) = string (defAttr `withBackColor` c) cName
734− line_with_color_1 (c, c_name) = string (def_attr `with_back_color` c) c_name
734+ lineWithColor1 (c, cName) = string (defAttr `withBackColor` c) cName
735− d <- display_bounds t >>= display_context t
735+ d <- displayBounds t >>= displayContext t
736− output_picture d pic
736+ outputPicture d pic
738− release_display t
738+ releaseDisplay t
739− release_terminal t
739+ releaseTerminal t
740 return ()
740 return ()
741− , print_summary = do
741+ , printSummary = do
742 putStr $ [s|
742 putStr $ [s|
743Once return is pressed:
743Once return is pressed:
744 0. The screen will be cleared.
744 0. The screen will be cleared.
@@ -778,43 +778,43 @@ After return is pressed for the second time:
778 0. The screen containing the test summary should be restored.
778 0. The screen containing the test summary should be restored.
779 1. The cursor should be visible.
779 1. The cursor should be visible.
781− , confirm_results = do
781+ , confirmResults = do
782 putStr $ [s|
782 putStr $ [s|
783Did the test output match the description?
783Did the test output match the description?
785− default_success_confirm_results
785+ defaultSuccessConfirmResults
788−attr_combos =
788+attrCombos =
789 [ ( "default", id )
789 [ ( "default", id )
790− , ( "bold", flip with_style bold )
790+ , ( "bold", flip withStyle bold )
791− , ( "blink", flip with_style blink )
791+ , ( "blink", flip withStyle blink )
792− , ( "underline", flip with_style underline )
792+ , ( "underline", flip withStyle underline )
793− , ( "bold + blink", flip with_style (bold + blink) )
793+ , ( "bold + blink", flip withStyle (bold + blink) )
794− , ( "bold + underline", flip with_style (bold + underline) )
794+ , ( "bold + underline", flip withStyle (bold + underline) )
795− , ( "underline + blink", flip with_style (underline + blink) )
795+ , ( "underline + blink", flip withStyle (underline + blink) )
796− , ( "bold + blink + underline", flip with_style (bold + blink + underline) )
796+ , ( "bold + blink + underline", flip withStyle (bold + blink + underline) )
799−attributes_test_4 = Test
799+attributesTest4 = Test
800− { test_name = "Character attributes: Bold; Blink; Underline."
800+ { testName = "Character attributes: Bold; Blink; Underline."
801− , test_ID = "attributes_test_4"
801+ , testID = "attributesTest4"
802− , test_action = do
802+ , testAction = do
803− t <- output_for_current_terminal
803+ t <- outputForCurrentTerminal
804− reserve_display t
804+ reserveDisplay t
805− let pic = pic_for_image image
805+ let pic = picForImage image
806− image = horiz_cat [border, column_0, border, column_1, border]
806+ image = horizCat [border, column0, border, column1, border]
807− border = vert_cat $ replicate (length attr_combos) $ string def_attr " | "
807+ border = vertCat $ replicate (length attrCombos) $ string defAttr " | "
808− column_0 = vert_cat $ map line_with_attrs attr_combos
808+ column0 = vertCat $ map lineWithAttrs attrCombos
809− column_1 = vert_cat $ map (string def_attr . fst) attr_combos
809+ column1 = vertCat $ map (string defAttr . fst) attrCombos
810− line_with_attrs (desc, attr_f) = string (attr_f def_attr) desc
810+ lineWithAttrs (desc, attrF) = string (attrF defAttr) desc
811− d <- display_bounds t >>= display_context t
811+ d <- displayBounds t >>= displayContext t
812− output_picture d pic
812+ outputPicture d pic
814− release_display t
814+ releaseDisplay t
815− release_terminal t
815+ releaseTerminal t
816 return ()
816 return ()
817− , print_summary = do
817+ , printSummary = do
818 putStr $ [s|
818 putStr $ [s|
819Once return is pressed:
819Once return is pressed:
820 0. The screen will be cleared.
820 0. The screen will be cleared.
@@ -841,31 +841,31 @@ After return is pressed for the second time:
841 0. The screen containing the test summary should be restored.
841 0. The screen containing the test summary should be restored.
842 1. The cursor should be visible.
842 1. The cursor should be visible.
844− , confirm_results = do
844+ , confirmResults = do
845 putStr $ [s|
845 putStr $ [s|
846Did the test output match the description?
846Did the test output match the description?
848− default_success_confirm_results
848+ defaultSuccessConfirmResults
851−attributes_test_5 = Test
851+attributesTest5 = Test
852− { test_name = "Character attributes: 240 color palette"
852+ { testName = "Character attributes: 240 color palette"
853− , test_ID = "attributes_test_5"
853+ , testID = "attributesTest5"
854− , test_action = do
854+ , testAction = do
855− t <- output_for_current_terminal
855+ t <- outputForCurrentTerminal
856− reserve_display t
856+ reserveDisplay t
857− let pic = pic_for_image image
857+ let pic = picForImage image
858− image = vert_cat $ map horiz_cat $ split_color_images color_images
858+ image = vertCat $ map horizCat $ splitColorImages colorImages
859− color_images = map (\i -> string (current_attr `with_back_color` Color240 i) " ") [0..239]
859+ colorImages = map (\i -> string (currentAttr `withBackColor` Color240 i) " ") [0..239]
860− split_color_images [] = []
860+ splitColorImages [] = []
861− split_color_images is = (take 20 is ++ [string def_attr " "]) : (split_color_images (drop 20 is))
861+ splitColorImages is = (take 20 is ++ [string defAttr " "]) : (splitColorImages (drop 20 is))
862− d <- display_bounds t >>= display_context t
862+ d <- displayBounds t >>= displayContext t
863− output_picture d pic
863+ outputPicture d pic
865− release_display t
865+ releaseDisplay t
866− release_terminal t
866+ releaseTerminal t
867 return ()
867 return ()
868− , print_summary = do
868+ , printSummary = do
869 putStr $ [s|
869 putStr $ [s|
870Once return is pressed:
870Once return is pressed:
871 0. The screen will be cleared.
871 0. The screen will be cleared.
@@ -879,290 +879,290 @@ After return is pressed for the second time:
879 0. The screen containing the test summary should be restored.
879 0. The screen containing the test summary should be restored.
880 1. The cursor should be visible.
880 1. The cursor should be visible.
882− , confirm_results = do
882+ , confirmResults = do
883 putStr $ [s|
883 putStr $ [s|
884Did the test output match the description?
884Did the test output match the description?
886− default_success_confirm_results
886+ defaultSuccessConfirmResults
889−inline_test_0 = Test
889+inlineTest0 = Test
890− { test_name = "Verify styled output can be performed without clearing the screen."
890+ { testName = "Verify styled output can be performed without clearing the screen."
891− , test_ID = "inline_test_0"
891+ , testID = "inlineTest0"
892− , test_action = do
892+ , testAction = do
893 putStrLn "line 1."
893 putStrLn "line 1."
894− put_attr_change_ $ back_color red >> apply_style underline
894+ putAttrChange_ $ backColor red >> applyStyle underline
895 putStrLn "line 2."
895 putStrLn "line 2."
896− put_attr_change_ $ default_all
896+ putAttrChange_ $ defaultAll
897 putStrLn "line 3."
897 putStrLn "line 3."
898− , print_summary = putStr $ [s|
898+ , printSummary = putStr $ [s|
899lines are in order.
899lines are in order.
900The second line "line 2" should have a red background and the text underline.
900The second line "line 2" should have a red background and the text underline.
901The third line "line 3" should be drawn in the same style as the first line.
901The third line "line 3" should be drawn in the same style as the first line.
904− , confirm_results = generic_output_match_confirm
904+ , confirmResults = genericOutputMatchConfirm
907−inline_test_1 = Test
907+inlineTest1 = Test
908− { test_name = "Verify styled output can be performed without clearing the screen."
908+ { testName = "Verify styled output can be performed without clearing the screen."
909− , test_ID = "inline_test_1"
909+ , testID = "inlineTest1"
910− , test_action = do
910+ , testAction = do
911 putStr "Not styled. "
911 putStr "Not styled. "
912− put_attr_change_ $ back_color red >> apply_style underline
912+ putAttrChange_ $ backColor red >> applyStyle underline
913 putStr " Styled! "
913 putStr " Styled! "
914− put_attr_change_ $ default_all
914+ putAttrChange_ $ defaultAll
915 putStrLn "Not styled."
915 putStrLn "Not styled."
916− , print_summary = putStr $ [s|
916+ , printSummary = putStr $ [s|
919− , confirm_results = generic_output_match_confirm
919+ , confirmResults = genericOutputMatchConfirm
922−inline_test_2 = Test
922+inlineTest2 = Test
923− { test_name = "Verify styled output can be performed without clearing the screen."
923+ { testName = "Verify styled output can be performed without clearing the screen."
924− , test_ID = "inline_test_1"
924+ , testID = "inlineTest1"
925− , test_action = do
925+ , testAction = do
926 putStr "Not styled. "
926 putStr "Not styled. "
927− put_attr_change_ $ back_color red >> apply_style underline
927+ putAttrChange_ $ backColor red >> applyStyle underline
928 putStr " Styled! "
928 putStr " Styled! "
929− put_attr_change_ $ default_all
929+ putAttrChange_ $ defaultAll
930 putStr "Not styled.\n"
930 putStr "Not styled.\n"
931− , print_summary = putStr $ [s|
931+ , printSummary = putStr $ [s|
933− , confirm_results = generic_output_match_confirm
933+ , confirmResults = genericOutputMatchConfirm
936−cursor_hide_test_0 :: Test
936+cursorHideTest0 :: Test
937−cursor_hide_test_0 = Test
937+cursorHideTest0 = Test
938− { test_name = "Verify the cursor is hid and re-shown. issue #7"
938+ { testName = "Verify the cursor is hid and re-shown. issue #7"
939− , test_ID = "cursor_hide_test_0"
939+ , testID = "cursorHideTest0"
940− , test_action = do
940+ , testAction = do
941 vty <- mkVty def
941 vty <- mkVty def
942− show_cursor $ output_iface vty
942+ showCursor $ outputIface vty
943− set_cursor_pos (output_iface vty) 5 5
943+ setCursorPos (outputIface vty) 5 5
944− next_event vty
944+ nextEvent vty
945− hide_cursor $ output_iface vty
945+ hideCursor $ outputIface vty
946− next_event vty
946+ nextEvent vty
947 shutdown vty
947 shutdown vty
948 return ()
948 return ()
949− , print_summary = putStr $ [s|
949+ , printSummary = putStr $ [s|
950 1. verify the cursor is displayed.
950 1. verify the cursor is displayed.
951 2. press enter
951 2. press enter
952 3. verify the cursor is hid.
952 3. verify the cursor is hid.
953 4. press enter.
953 4. press enter.
954 5. the display should return to the state before the test.
954 5. the display should return to the state before the test.
956− , confirm_results = generic_output_match_confirm
956+ , confirmResults = genericOutputMatchConfirm
959−output_image_and_wait :: Image -> IO ()
959+outputImageAndWait :: Image -> IO ()
960−output_image_and_wait image = do
960+outputImageAndWait image = do
961− let pic = pic_for_image image
961+ let pic = picForImage image
962− output_pic_and_wait pic
962+ outputPicAndWait pic
964−output_pic_and_wait :: Picture -> IO ()
964+outputPicAndWait :: Picture -> IO ()
965−output_pic_and_wait pic = do
965+outputPicAndWait pic = do
966− t <- output_for_current_terminal
966+ t <- outputForCurrentTerminal
967− reserve_display t
967+ reserveDisplay t
968− d <- display_bounds t >>= display_context t
968+ d <- displayBounds t >>= displayContext t
969− output_picture d pic
969+ outputPicture d pic
971− release_display t
971+ releaseDisplay t
972− release_terminal t
972+ releaseTerminal t
973 return ()
973 return ()
975−vert_crop_test_0 :: Test
975+vertCropTest0 :: Test
976−vert_crop_test_0 = Test
976+vertCropTest0 = Test
977− { test_name = "Verify bottom cropping works as expected with single column chars"
977+ { testName = "Verify bottom cropping works as expected with single column chars"
978− , test_ID = "crop_test_0"
978+ , testID = "crop_test_0"
979− , test_action = do
979+ , testAction = do
980− let block_0 = crop_bottom 2 $ vert_cat $ map (string def_attr) lorum_ipsum
980+ let block0 = cropBottom 2 $ vertCat $ map (string defAttr) lorumIpsum
981− block_1 = vert_cat $ map (string def_attr) $ take 2 lorum_ipsum
981+ block1 = vertCat $ map (string defAttr) $ take 2 lorumIpsum
982− image = block_0 <-> background_fill 10 2 <-> block_1
982+ image = block0 <-> backgroundFill 10 2 <-> block1
983− output_image_and_wait image
983+ outputImageAndWait image
984− , print_summary = putStr $ [s|
984+ , printSummary = putStr $ [s|
985 1. Verify the two text blocks are identical.
985 1. Verify the two text blocks are identical.
986 2. press enter.
986 2. press enter.
987 3. the display should return to the state before the test.
987 3. the display should return to the state before the test.
989− , confirm_results = generic_output_match_confirm
989+ , confirmResults = genericOutputMatchConfirm
992−vert_crop_test_1 :: Test
992+vertCropTest1 :: Test
993−vert_crop_test_1 = Test
993+vertCropTest1 = Test
994− { test_name = "Verify bottom cropping works as expected with double column chars"
994+ { testName = "Verify bottom cropping works as expected with double column chars"
995− , test_ID = "crop_test_0"
995+ , testID = "crop_test_0"
996− , test_action = do
996+ , testAction = do
997− let block_0 = crop_bottom 2 $ vert_cat $ map (string def_attr) lorum_ipsum_chinese
997+ let block0 = cropBottom 2 $ vertCat $ map (string defAttr) lorumIpsumChinese
998− block_1 = vert_cat $ map (string def_attr) $ take 2 lorum_ipsum_chinese
998+ block1 = vertCat $ map (string defAttr) $ take 2 lorumIpsumChinese
999− image = block_0 <-> background_fill 10 2 <-> block_1
999+ image = block0 <-> backgroundFill 10 2 <-> block1
1000− output_image_and_wait image
1000+ outputImageAndWait image
1001− , print_summary = putStr $ [s|
1001+ , printSummary = putStr $ [s|
1002 1. Verify the two text blocks are identical.
1002 1. Verify the two text blocks are identical.
1003 2. press enter.
1003 2. press enter.
1004 3. the display should return to the state before the test.
1004 3. the display should return to the state before the test.
1006− , confirm_results = generic_output_match_confirm
1006+ , confirmResults = genericOutputMatchConfirm
1009−vert_crop_test_2 :: Test
1009+vertCropTest2 :: Test
1010−vert_crop_test_2 = Test
1010+vertCropTest2 = Test
1011− { test_name = "Verify top cropping works as expected with single column chars"
1011+ { testName = "Verify top cropping works as expected with single column chars"
1012− , test_ID = "crop_test_0"
1012+ , testID = "crop_test_2"
1013− , test_action = do
1013+ , testAction = do
1014− let block_0 = crop_top 2 $ vert_cat $ map (string def_attr) lorum_ipsum
1014+ let block0 = cropTop 2 $ vertCat $ map (string defAttr) lorumIpsum
1015− block_1 = vert_cat $ map (string def_attr) $ drop (length lorum_ipsum - 2) lorum_ipsum
1015+ block1 = vertCat $ map (string defAttr) $ drop (length lorumIpsum - 2) lorumIpsum
1016− image = block_0 <-> background_fill 10 2 <-> block_1
1016+ image = block0 <-> backgroundFill 10 2 <-> block1
1017− output_image_and_wait image
1017+ outputImageAndWait image
1018− , print_summary = putStr $ [s|
1018+ , printSummary = putStr $ [s|
1019 1. Verify the two text blocks are identical.
1019 1. Verify the two text blocks are identical.
1020 2. press enter.
1020 2. press enter.
1021 3. the display should return to the state before the test.
1021 3. the display should return to the state before the test.
1023− , confirm_results = generic_output_match_confirm
1023+ , confirmResults = genericOutputMatchConfirm
1026−vert_crop_test_3 :: Test
1026+vertCropTest3 :: Test
1027−vert_crop_test_3 = Test
1027+vertCropTest3 = Test
1028− { test_name = "Verify top cropping works as expected with double column chars"
1028+ { testName = "Verify top cropping works as expected with double column chars"
1029− , test_ID = "crop_test_0"
1029+ , testID = "crop_test_0"
1030− , test_action = do
1030+ , testAction = do
1031− let block_0 = crop_top 2 $ vert_cat $ map (string def_attr) lorum_ipsum_chinese
1031+ let block0 = cropTop 2 $ vertCat $ map (string defAttr) lorumIpsumChinese
1032− block_1 = vert_cat $ map (string def_attr) $ drop (length lorum_ipsum_chinese - 2 ) lorum_ipsum_chinese
1032+ block1 = vertCat $ map (string defAttr) $ drop (length lorumIpsumChinese - 2 ) lorumIpsumChinese
1033− image = block_0 <-> background_fill 10 2 <-> block_1
1033+ image = block0 <-> backgroundFill 10 2 <-> block1
1034− output_image_and_wait image
1034+ outputImageAndWait image
1035− , print_summary = putStr $ [s|
1035+ , printSummary = putStr $ [s|
1036 1. Verify the two text blocks are identical.
1036 1. Verify the two text blocks are identical.
1037 2. press enter.
1037 2. press enter.
1038 3. the display should return to the state before the test.
1038 3. the display should return to the state before the test.
1040− , confirm_results = generic_output_match_confirm
1040+ , confirmResults = genericOutputMatchConfirm
1043−horiz_crop_test_0 :: Test
1043+horizCropTest0 :: Test
1044−horiz_crop_test_0 = Test
1044+horizCropTest0 = Test
1045− { test_name = "Verify right cropping works as expected with single column chars"
1045+ { testName = "Verify right cropping works as expected with single column chars"
1046− , test_ID = "crop_test_0"
1046+ , testID = "crop_test_0"
1047− , test_action = do
1047+ , testAction = do
1048− let base_image = vert_cat $ map (string def_attr) lorum_ipsum
1048+ let baseImage = vertCat $ map (string defAttr) lorumIpsum
1049− cropped_image = crop_right (image_width base_image `div` 2) base_image
1049+ croppedImage = cropRight (imageWidth baseImage `div` 2) baseImage
1050− image = base_image <-> background_fill 10 2 <-> cropped_image
1050+ image = baseImage <-> backgroundFill 10 2 <-> croppedImage
1051− output_image_and_wait image
1051+ outputImageAndWait image
1052− , print_summary = putStr $ [s|
1052+ , printSummary = putStr $ [s|
1053 1. Verify the bottom text block is about half the width of the top text block.
1053 1. Verify the bottom text block is about half the width of the top text block.
1054 2. press enter.
1054 2. press enter.
1055 3. the display should return to the state before the test.
1055 3. the display should return to the state before the test.
1057− , confirm_results = generic_output_match_confirm
1057+ , confirmResults = genericOutputMatchConfirm
1060−horiz_crop_test_1 :: Test
1060+horizCropTest1 :: Test
1061−horiz_crop_test_1 = Test
1061+horizCropTest1 = Test
1062− { test_name = "Verify right cropping works as expected with double column chars"
1062+ { testName = "Verify right cropping works as expected with double column chars"
1063− , test_ID = "crop_test_0"
1063+ , testID = "crop_test_0"
1064− , test_action = do
1064+ , testAction = do
1065− let base_image = vert_cat $ map (string def_attr) lorum_ipsum_chinese
1065+ let baseImage = vertCat $ map (string defAttr) lorumIpsumChinese
1066− cropped_image = crop_right (image_width base_image `div` 2) base_image
1066+ croppedImage = cropRight (imageWidth baseImage `div` 2) baseImage
1067− image = base_image <-> background_fill 10 2 <-> cropped_image
1067+ image = baseImage <-> backgroundFill 10 2 <-> croppedImage
1068− output_image_and_wait image
1068+ outputImageAndWait image
1069− , print_summary = putStr $ [s|
1069+ , printSummary = putStr $ [s|
1070 1. Verify the bottom text block is the left half of the top block. Ellipses on the right edge are OK.
1070 1. Verify the bottom text block is the left half of the top block. Ellipses on the right edge are OK.
1071 2. press enter.
1071 2. press enter.
1072 3. the display should return to the state before the test.
1072 3. the display should return to the state before the test.
1074− , confirm_results = generic_output_match_confirm
1074+ , confirmResults = genericOutputMatchConfirm
1077−horiz_crop_test_2 :: Test
1077+horizCropTest2 :: Test
1078−horiz_crop_test_2 = Test
1078+horizCropTest2 = Test
1079− { test_name = "Verify left cropping works as expected with single column chars"
1079+ { testName = "Verify left cropping works as expected with single column chars"
1080− , test_ID = "crop_test_0"
1080+ , testID = "crop_test_0"
1081− , test_action = do
1081+ , testAction = do
1082− let base_image = vert_cat $ map (string def_attr) lorum_ipsum
1082+ let baseImage = vertCat $ map (string defAttr) lorumIpsum
1083− cropped_image = crop_left (image_width base_image `div` 2) base_image
1083+ croppedImage = cropLeft (imageWidth baseImage `div` 2) baseImage
1084− image = base_image <-> background_fill 10 2 <-> cropped_image
1084+ image = baseImage <-> backgroundFill 10 2 <-> croppedImage
1085− output_image_and_wait image
1085+ outputImageAndWait image
1086− , print_summary = putStr $ [s|
1086+ , printSummary = putStr $ [s|
1087 1. Verify the bottom text block is the right half of the top text block.
1087 1. Verify the bottom text block is the right half of the top text block.
1088 2. press enter.
1088 2. press enter.
1089 3. the display should return to the state before the test.
1089 3. the display should return to the state before the test.
1091− , confirm_results = generic_output_match_confirm
1091+ , confirmResults = genericOutputMatchConfirm
1094−horiz_crop_test_3 :: Test
1094+horizCropTest3 :: Test
1095−horiz_crop_test_3 = Test
1095+horizCropTest3 = Test
1096− { test_name = "Verify right cropping works as expected with double column chars"
1096+ { testName = "Verify right cropping works as expected with double column chars"
1097− , test_ID = "crop_test_0"
1097+ , testID = "crop_test_0"
1098− , test_action = do
1098+ , testAction = do
1099− let base_image = vert_cat $ map (string def_attr) lorum_ipsum_chinese
1099+ let baseImage = vertCat $ map (string defAttr) lorumIpsumChinese
1100− cropped_image = crop_left (image_width base_image `div` 2) base_image
1100+ croppedImage = cropLeft (imageWidth baseImage `div` 2) baseImage
1101− image = base_image <-> background_fill 10 2 <-> cropped_image
1101+ image = baseImage <-> backgroundFill 10 2 <-> croppedImage
1102− output_image_and_wait image
1102+ outputImageAndWait image
1103− , print_summary = putStr $ [s|
1103+ , printSummary = putStr $ [s|
1104 1. Verify the bottom text block is the right half of the top block. Ellipses on the left edge are OK.
1104 1. Verify the bottom text block is the right half of the top block. Ellipses on the left edge are OK.
1105 2. press enter.
1105 2. press enter.
1106 3. the display should return to the state before the test.
1106 3. the display should return to the state before the test.
1108− , confirm_results = generic_output_match_confirm
1108+ , confirmResults = genericOutputMatchConfirm
1111−layer_0 :: Test
1111+layer0 :: Test
1112−layer_0 = Test
1112+layer0 = Test
1113− { test_name = "verify layer 0"
1113+ { testName = "verify layer 0"
1114− , test_ID = "layer_0"
1114+ , testID = "layer0"
1115− , test_action = do
1115+ , testAction = do
1116− let upper_image = vert_cat $ map (string def_attr) lorum_ipsum_chinese
1116+ let upperImage = vertCat $ map (string defAttr) lorumIpsumChinese
1117− lower_image = vert_cat $ map (string def_attr) lorum_ipsum
1117+ lowerImage = vertCat $ map (string defAttr) lorumIpsum
1118− p = pic_for_layers [upper_image, lower_image]
1118+ p = picForLayers [upperImage, lowerImage]
1119− output_pic_and_wait p
1119+ outputPicAndWait p
1120− , print_summary = putStr $ [s|
1120+ , printSummary = putStr $ [s|
1121 1. Verify the text block appears to be Chinese text placed on top Latin text.
1121 1. Verify the text block appears to be Chinese text placed on top Latin text.
1122 2. press enter.
1122 2. press enter.
1123 3. the display should return to the state before the test.
1123 3. the display should return to the state before the test.
1125− , confirm_results = generic_output_match_confirm
1125+ , confirmResults = genericOutputMatchConfirm
1128−layer_1 :: Test
1128+layer1 :: Test
1129−layer_1 = Test
1129+layer1 = Test
1130− { test_name = "verify layer 1"
1130+ { testName = "verify layer 1"
1131− , test_ID = "layer_1"
1131+ , testID = "layer1"
1132− , test_action = do
1132+ , testAction = do
1133− let upper_image = vert_cat $ map (string def_attr) lorum_ipsum_chinese
1133+ let upperImage = vertCat $ map (string defAttr) lorumIpsumChinese
1134− block = resize 10 10 upper_image
1134+ block = resize 10 10 upperImage
1135− layer_0 = vert_cat $ map (string def_attr) lorum_ipsum
1135+ layer0 = vertCat $ map (string defAttr) lorumIpsum
1136− layer_1 = char_fill (def_attr `with_back_color` blue) '#' 1000 1000
1136+ layer1 = charFill (defAttr `withBackColor` blue) '#' 1000 1000
1137− cheesy_anim_0 block [layer_0, layer_1]
1137+ cheesyAnim0 block [layer0, layer1]
1138− , print_summary = putStr $ [s|
1138+ , printSummary = putStr $ [s|
1139 1. Verify the text block appears to be Chinese text moving on top a Latin text.
1139 1. Verify the text block appears to be Chinese text moving on top a Latin text.
1140 Which is all on a background of '#' characters over blue.
1140 Which is all on a background of '#' characters over blue.
1141 2. press enter.
1141 2. press enter.
1142 3. the display should return to the state before the test.
1142 3. the display should return to the state before the test.
1144− , confirm_results = generic_output_match_confirm
1144+ , confirmResults = genericOutputMatchConfirm
1147−cheesy_anim_0 :: Image -> [Image] -> IO ()
1147+cheesyAnim0 :: Image -> [Image] -> IO ()
1148−cheesy_anim_0 i background = do
1148+cheesyAnim0 i background = do
1149− t <- output_for_current_terminal
1149+ t <- outputForCurrentTerminal
1150− reserve_display t
1150+ reserveDisplay t
1151− bounds <- display_bounds t
1151+ bounds <- displayBounds t
1152− d <- display_context t bounds
1152+ d <- displayContext t bounds
1153 forM_ [0..100] $ \t -> do
1153 forM_ [0..100] $ \t -> do
1154 let i_offset = translate (t `mod` fst bounds)
1154 let i_offset = translate (t `mod` fst bounds)
1155 (t `div` 2 `mod` snd bounds)
1155 (t `div` 2 `mod` snd bounds)
1157− let pic = pic_for_layers $ i_offset : background
1157+ let pic = picForLayers $ i_offset : background
1158− output_picture d pic
1158+ outputPicture d pic
1159 threadDelay 50000
1159 threadDelay 50000
1160− release_display t
1160+ releaseDisplay t
1161− release_terminal t
1161+ releaseTerminal t
1162 return ()
1162 return ()
1164−lorum_ipsum :: [String]
1164+lorumIpsum :: [String]
1165−lorum_ipsum = lines [s|
1165+lorumIpsum = lines [s|
1166Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium,
1166Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium,
1167totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae
1167totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae
1168dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit,
1168dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit,
@@ -1174,8 +1174,8 @@ commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate v
1174molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?
1174molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?
1177−lorum_ipsum_chinese :: [String]
1177+lorumIpsumChinese :: [String]
1178−lorum_ipsum_chinese = lines [s|
1178+lorumIpsumChinese = lines [s|
1179輐銛 螷蟞覮 裌覅詵 暕 鴅噮 槶 惝掭掝 婸媥媕 耏胠臿, 汫汭沎 忕汌卣 蚡袀 僣 蒮 瀁瀎瀊 渮湸湤 緌翢,
1179輐銛 螷蟞覮 裌覅詵 暕 鴅噮 槶 惝掭掝 婸媥媕 耏胠臿, 汫汭沎 忕汌卣 蚡袀 僣 蒮 瀁瀎瀊 渮湸湤 緌翢,
1180腠腶舝 糲蘥蠩 樏殣氀 蒮 蹢鎒 滍 鸄齴 櫧櫋瀩 鬄鵊鵙 莃荶衒, 毸溠 橀 簎艜薤 莃荶衒 翣聜蒢
1180腠腶舝 糲蘥蠩 樏殣氀 蒮 蹢鎒 滍 鸄齴 櫧櫋瀩 鬄鵊鵙 莃荶衒, 毸溠 橀 簎艜薤 莃荶衒 翣聜蒢
1181斔櫅檷 晛桼桾 拻敁柧 犿玒 膣, 墐 笓粊紒 bacon 鼀齕, 蔝蓶蓨 顊顃餭 姴怤 骱 暕 蹢鎒鎛 藒襓謥 鄻鎟霣
1181斔櫅檷 晛桼桾 拻敁柧 犿玒 膣, 墐 笓粊紒 bacon 鼀齕, 蔝蓶蓨 顊顃餭 姴怤 骱 暕 蹢鎒鎛 藒襓謥 鄻鎟霣