@@ -6,7 +6,8 @@ import Graphics.Vty
6import Graphics.Vty.Attributes
6import Graphics.Vty.Attributes
7import Graphics.Vty.Inline
7import Graphics.Vty.Inline
8import Graphics.Vty.Picture
8import Graphics.Vty.Picture
9−import Graphics.Vty.Output
9+import Graphics.Vty.Terminal
10+import Graphics.Vty.DisplayRegion
11import Control.Concurrent (threadDelay)
12import Control.Concurrent (threadDelay)
12import Control.Exception
13import Control.Exception
@@ -18,18 +19,18 @@ import Data.Monoid
18import Data.String.QQ
19import Data.String.QQ
19import Data.Word
20import Data.Word
21−import Foreign.Marshal.Array
22+import Foreign.Marshal.Array
23import qualified System.Environment as Env
24import qualified System.Environment as Env
25import System.IO ( hFlush, hPutStr, hPutBuf, stdout )
26import System.IO ( hFlush, hPutStr, hPutBuf, stdout )
28− printIntro
29+ print_intro
30−outputFilePath = "test_results.list"
31+output_file_path = "test_results.list"
32−printIntro = do
33+print_intro = do
33 putStr $ [s|
34 putStr $ [s|
34This is an interactive verification program for the terminal input and output
35This 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
36support of the VTY library. This will ask a series of questions about what you
@@ -37,7 +38,7 @@ see on screen. The goal is to verify that VTY's output and input support
37performs as expected with your terminal.
38performs as expected with your terminal.
39This program produces a file named
40This program produces a file named
40− |] ++ outputFilePath ++ [s|
41+ |] ++ output_file_path ++ [s|
41in the current directory that contains the results for each test assertion. This
42in 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
43can 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.
44support for your terminal. No personal information is contained in the report.
@@ -66,40 +67,41 @@ All the tests assume the following about the terminal display:
66Thanks for the help! :-D
67Thanks for the help! :-D
67To exit the test early enter "q" anytime at the following menu screen.
68To exit the test early enter "q" anytime at the following menu screen.
69−If any test fails then please post an issue to
70+If any test failed then please post an issue to
70 https://github.com/coreyoconnor/vty/issues
71 https://github.com/coreyoconnor/vty/issues
71−with the test_results.list file pasted into the issue. A suitable summary is:
72+with the test_results.list file pasted into the issue. The issue summary can
72−"interactive terminal test failure".
73+mention the specific tests that failed or just say "interactive terminal test
74− waitForReturn
76+ wait_for_return
75− results <- doTestMenu 1
77+ results <- do_test_menu 1
76− envAttributes <- mapM ( \envName -> Control.Exception.catch ( Env.getEnv envName >>= return . (,) envName )
78+ env_attributes <- mapM ( \env_name -> Control.Exception.catch ( Env.getEnv env_name >>= return . (,) env_name )
77− ( \ (_ :: SomeException) -> return (envName, "") )
79+ ( \ (_ :: SomeException) -> return (env_name, "") )
79− [ "TERM", "COLORTERM", "LANG", "TERM_PROGRAM", "XTERM_VERSION" ]
81+ [ "TERM", "COLORTERM", "LANG", "TERM_PROGRAM", "XTERM_VERSION" ]
80− t <- standardIOConfig >>= outputForConfig
82+ t <- current_terminal
81− let resultsTxt = show envAttributes ++ "\n"
83+ let results_txt = show env_attributes ++ "\n"
82− ++ terminalID t ++ "\n"
84+ ++ terminal_ID t ++ "\n"
83− ++ show results ++ "\n"
85+ ++ show results ++ "\n"
84− releaseTerminal t
86+ release_terminal t
85− writeFile outputFilePath resultsTxt
87+ writeFile output_file_path results_txt
87−waitForReturn = do
89+wait_for_return = do
88 putStr "\n(press return to continue)"
90 putStr "\n(press return to continue)"
89 hFlush stdout
91 hFlush stdout
92−testMenu :: [(String, Test)]
94+test_menu :: [(String, Test)]
93−testMenu = zip (map show [1..]) allTests
95+test_menu = zip (map show [1..]) all_tests
95−doTestMenu :: Int -> IO [(String, Bool)]
97+do_test_menu :: Int -> IO [(String, Bool)]
96−doTestMenu nextID
98+do_test_menu next_ID
97− | nextID > length allTests = do
99+ | next_ID > length all_tests = do
98− putStrLn $ "Done! Please email the " ++ outputFilePath ++ " file to coreyoconnor@gmail.com"
100+ putStrLn $ "Done! Please email the " ++ output_file_path ++ " file to coreyoconnor@gmail.com"
99 return []
101 return []
100 | otherwise = do
102 | otherwise = do
101− displayTestMenu
103+ display_test_menu
102− putStrLn $ "Press return to start with #" ++ show nextID ++ "."
104+ putStrLn $ "Press return to start with #" ++ show next_ID ++ "."
103 putStrLn "Enter a test number to perform only that test."
105 putStrLn "Enter a test number to perform only that test."
104 putStrLn "q (or control-C) to quit."
106 putStrLn "q (or control-C) to quit."
105 putStr "> "
107 putStr "> "
@@ -107,102 +109,102 @@ doTestMenu nextID
107 s <- getLine >>= return . filter (/= '\n')
109 s <- getLine >>= return . filter (/= '\n')
108 case s of
110 case s of
109 "q" -> return mempty
111 "q" -> return mempty
110− "" -> do
112+ "" -> do
111− r <- runTest $ show nextID
113+ r <- run_test $ show next_ID
112− rs <- doTestMenu ( nextID + 1 )
114+ rs <- do_test_menu ( next_ID + 1 )
113 return $ r : rs
115 return $ r : rs
114− i | isJust ( lookup i testMenu ) -> do
116+ i | isJust ( lookup i test_menu ) -> do
115− r <- runTest i
117+ r <- run_test i
116− rs <- doTestMenu ( read i + 1 )
118+ rs <- do_test_menu ( read i + 1 )
117 return $ r : rs
119 return $ r : rs
119− displayTestMenu
121+ display_test_menu
120− = mapM_ displayTestMenu' testMenu
122+ = mapM_ display_test_menu' test_menu
121− displayTestMenu' ( i, t )
123+ display_test_menu' ( i, t )
122− = putStrLn $ ( if i == show nextID
124+ = putStrLn $ ( if i == show next_ID
123− then "> "
125+ then "> "
125− ) ++ i ++ ". " ++ testName t
127+ ) ++ i ++ ". " ++ test_name t
127−runTest :: String -> IO (String, Bool)
129+run_test :: String -> IO (String, Bool)
128−runTest i = do
130+run_test i = do
129− let t = fromJust $ lookup i testMenu
131+ let t = fromJust $ lookup i test_menu
130− printSummary t
132+ print_summary t
131− waitForReturn
133+ wait_for_return
132− testAction t
134+ test_action t
133− r <- confirmResults t
135+ r <- confirm_results t
134− return (testID t, r)
136+ return (test_ID t, r)
136−defaultSuccessConfirmResults = do
138+default_success_confirm_results = do
137 putStr "\n"
139 putStr "\n"
138 putStr "[Y/n] "
140 putStr "[Y/n] "
139 hFlush stdout
141 hFlush stdout
140 r <- getLine
142 r <- getLine
141 case r of
143 case r of
142− "" -> return True
144+ "" -> return True
143 "y" -> return True
145 "y" -> return True
144 "Y" -> return True
146 "Y" -> return True
145 "n" -> return False
147 "n" -> return False
147data Test = Test
149data Test = Test
148− { testName :: String
150+ { test_name :: String
149− , testID :: String
151+ , test_ID :: String
150− , testAction :: IO ()
152+ , test_action :: IO ()
151− , printSummary :: IO ()
153+ , print_summary :: IO ()
152− , confirmResults :: IO Bool
154+ , confirm_results :: IO Bool
155−allTests
157+all_tests
156− = [ reserveOutputTest
158+ = [ reserve_output_test
157− , displayBoundsTest0
159+ , display_bounds_test_0
158− , displayBoundsTest1
160+ , display_bounds_test_1
159− , displayBoundsTest2
161+ , display_bounds_test_2
160− , displayBoundsTest3
162+ , display_bounds_test_3
161− , unicodeSingleWidth0
163+ , unicode_single_width_0
162− , unicodeSingleWidth1
164+ , unicode_single_width_1
163− , unicodeDoubleWidth0
165+ , unicode_double_width_0
164− , unicodeDoubleWidth1
166+ , unicode_double_width_1
165− , attributesTest0
167+ , attributes_test_0
166− , attributesTest1
168+ , attributes_test_1
167− , attributesTest2
169+ , attributes_test_2
168− , attributesTest3
170+ , attributes_test_3
169− , attributesTest4
171+ , attributes_test_4
170− , attributesTest5
172+ , attributes_test_5
171− , inlineTest0
173+ , inline_test_0
172− , inlineTest1
174+ , inline_test_1
173− , inlineTest2
175+ , inline_test_2
174− , cursorHideTest0
176+ , cursor_hide_test_0
175− , vertCropTest0
177+ , vert_crop_test_0
176− , vertCropTest1
178+ , vert_crop_test_1
177− , vertCropTest2
179+ , vert_crop_test_2
178− , vertCropTest3
180+ , vert_crop_test_3
179− , horizCropTest0
181+ , horiz_crop_test_0
180− , horizCropTest1
182+ , horiz_crop_test_1
181− , horizCropTest2
183+ , horiz_crop_test_2
182− , horizCropTest3
184+ , horiz_crop_test_3
183− , layer0
185+ , layer_0
184− , layer1
186+ , layer_1
187−reserveOutputTest = Test
189+reserve_output_test = Test
188− { testName = "Initialize and reserve terminal output then restore previous state."
190+ { test_name = "Initialize and reserve terminal output then restore previous state."
189− , testID = "reserveOutputTest"
191+ , test_ID = "reserve_output_test"
190− , testAction = do
192+ , test_action = do
191− t <- standardIOConfig >>= outputForConfig
193+ t <- current_terminal
192− reserveDisplay t
194+ reserve_display t
193 putStrLn "Line 1"
195 putStrLn "Line 1"
194 putStrLn "Line 2"
196 putStrLn "Line 2"
195 putStrLn "Line 3"
197 putStrLn "Line 3"
196 putStrLn "Line 4 (press return)"
198 putStrLn "Line 4 (press return)"
197 hFlush stdout
199 hFlush stdout
199− releaseDisplay t
201+ release_display t
200− releaseTerminal t
202+ release_terminal t
201 return ()
203 return ()
202− , printSummary = do
204+ , print_summary = do
203 putStr $ [s|
205 putStr $ [s|
204Once return is pressed:
206Once return is pressed:
205− 0. The screen will be cleared.
207+ 0. The screen will be cleared.
206 1. Four lines of text should be visible.
208 1. Four lines of text should be visible.
207 1. The cursor should be visible and at the start of the fifth line.
209 1. The cursor should be visible and at the start of the fifth line.
@@ -210,123 +212,123 @@ After return is pressed for the second time this test then:
210 * The screen containing the test summary should be restored;
212 * The screen containing the test summary should be restored;
211 * The cursor is visible.
213 * The cursor is visible.
213− , confirmResults = do
215+ , confirm_results = do
214 putStr $ [s|
216 putStr $ [s|
215Did the test output match the description?
217Did the test output match the description?
217− defaultSuccessConfirmResults
219+ default_success_confirm_results
220−displayBoundsTest0 = Test
222+display_bounds_test_0 = Test
221− { testName = "Verify display bounds are correct test 0: Using spaces."
223+ { test_name = "Verify display bounds are correct test 0: Using spaces."
222− , testID = "displayBoundsTest0"
224+ , test_ID = "display_bounds_test_0"
223− , testAction = do
225+ , test_action = do
224− t <- standardIOConfig >>= outputForConfig
226+ t <- current_terminal
225− reserveDisplay t
227+ reserve_display t
226− (w,h) <- displayBounds t
228+ DisplayRegion w h <- display_bounds t
227− let row0 = replicate (fromEnum w) 'X' ++ "\n"
229+ let row_0 = replicate (fromEnum w) 'X' ++ "\n"
228− rowH = replicate (fromEnum w - 1) 'X'
230+ row_h = replicate (fromEnum w - 1) 'X'
229− rowN = "X" ++ replicate (fromEnum w - 2) ' ' ++ "X\n"
231+ row_n = "X" ++ replicate (fromEnum w - 2) ' ' ++ "X\n"
230− image = row0 ++ (concat $ replicate (fromEnum h - 2) rowN) ++ rowH
232+ image = row_0 ++ (concat $ replicate (fromEnum h - 2) row_n) ++ row_h
231 putStr image
233 putStr image
232 hFlush stdout
234 hFlush stdout
234− releaseDisplay t
236+ release_display t
235− releaseTerminal t
237+ release_terminal t
236 return ()
238 return ()
237− , printSummary = displayBoundsTestSummary True
239+ , print_summary = display_bounds_test_summary True
238− , confirmResults = genericOutputMatchConfirm
240+ , confirm_results = generic_output_match_confirm
241−displayBoundsTest1 = Test
243+display_bounds_test_1 = Test
242− { testName = "Verify display bounds are correct test 0: Using cursor movement."
244+ { test_name = "Verify display bounds are correct test 0: Using cursor movement."
243− , testID = "displayBoundsTest1"
245+ , test_ID = "display_bounds_test_1"
244− , testAction = do
246+ , test_action = do
245− t <- standardIOConfig >>= outputForConfig
247+ t <- current_terminal
246− reserveDisplay t
248+ reserve_display t
247− (w,h) <- displayBounds t
249+ DisplayRegion w h <- display_bounds t
248− setCursorPos t 0 0
250+ set_cursor_pos t 0 0
249− let row0 = replicate (fromEnum w) 'X' ++ "\n"
251+ let row_0 = replicate (fromEnum w) 'X' ++ "\n"
250− putStr row0
252+ putStr row_0
251 forM_ [1 .. h - 2] $ \y -> do
253 forM_ [1 .. h - 2] $ \y -> do
252− setCursorPos t 0 y
254+ set_cursor_pos t 0 y
253 putStr "X"
255 putStr "X"
254 hFlush stdout
256 hFlush stdout
255− setCursorPos t (w - 1) y
257+ set_cursor_pos t (w - 1) y
256 putStr "X"
258 putStr "X"
257 hFlush stdout
259 hFlush stdout
258− setCursorPos t 0 (h - 1)
260+ set_cursor_pos t 0 (h - 1)
259− let rowH = replicate (fromEnum w - 1) 'X'
261+ let row_h = replicate (fromEnum w - 1) 'X'
260− putStr rowH
262+ putStr row_h
261 hFlush stdout
263 hFlush stdout
263− releaseDisplay t
265+ release_display t
264− releaseTerminal t
266+ release_terminal t
265 return ()
267 return ()
266− , printSummary = displayBoundsTestSummary True
268+ , print_summary = display_bounds_test_summary True
267− , confirmResults = genericOutputMatchConfirm
269+ , confirm_results = generic_output_match_confirm
270−displayBoundsTest2 = Test
272+display_bounds_test_2 = Test
271− { testName = "Verify display bounds are correct test 0: Using Image ops."
273+ { test_name = "Verify display bounds are correct test 0: Using Image ops."
272− , testID = "displayBoundsTest2"
274+ , test_ID = "display_bounds_test_2"
273− , testAction = do
275+ , test_action = do
274− t <- standardIOConfig >>= outputForConfig
276+ t <- current_terminal
275− reserveDisplay t
277+ reserve_display t
276− bounds@(w,h) <- displayBounds t
278+ bounds@(DisplayRegion w h) <- display_bounds t
277− let firstRow = horizCat $ replicate (fromEnum w) (char defAttr 'X')
279+ let first_row = horiz_cat $ replicate (fromEnum w) (char def_attr 'X')
278− middleRows = vertCat $ replicate (fromEnum h - 2) middleRow
280+ middle_rows = vert_cat $ replicate (fromEnum h - 2) middle_row
279− middleRow = (char defAttr 'X') <|> backgroundFill (w - 2) 1 <|> (char defAttr 'X')
281+ middle_row = (char def_attr 'X') <|> background_fill (w - 2) 1 <|> (char def_attr 'X')
280− endRow = firstRow
282+ end_row = first_row
281− image = firstRow <-> middleRows <-> endRow
283+ image = first_row <-> middle_rows <-> end_row
282− pic = (picForImage image) { picCursor = Cursor (w - 1) (h - 1) }
284+ pic = (pic_for_image image) { pic_cursor = Cursor (w - 1) (h - 1) }
283− d <- displayContext t bounds
285+ d <- display_context t bounds
284− outputPicture d pic
286+ output_picture d pic
286− releaseDisplay t
288+ release_display t
287− releaseTerminal t
289+ release_terminal t
288 return ()
290 return ()
289− , printSummary = displayBoundsTestSummary True
291+ , print_summary = display_bounds_test_summary True
290− , confirmResults = genericOutputMatchConfirm
292+ , confirm_results = generic_output_match_confirm
293−displayBoundsTest3 = Test
295+display_bounds_test_3 = Test
294− { testName = "Verify display bounds are correct test 0: Hide cursor; Set cursor pos."
296+ { test_name = "Verify display bounds are correct test 0: Hide cursor; Set cursor pos."
295− , testID = "displayBoundsTest3"
297+ , test_ID = "display_bounds_test_3"
296− , testAction = do
298+ , test_action = do
297− t <- standardIOConfig >>= outputForConfig
299+ t <- current_terminal
298− reserveDisplay t
300+ reserve_display t
299− (w,h) <- displayBounds t
301+ DisplayRegion w h <- display_bounds t
300− hideCursor t
302+ hide_cursor t
301− setCursorPos t 0 0
303+ set_cursor_pos t 0 0
302− let row0 = replicate (fromEnum w) 'X'
304+ let row_0 = replicate (fromEnum w) 'X'
303− putStrLn row0
305+ putStrLn row_0
304 forM_ [1 .. h - 2] $ \y -> do
306 forM_ [1 .. h - 2] $ \y -> do
305− setCursorPos t 0 y
307+ set_cursor_pos t 0 y
306 putStr "X"
308 putStr "X"
307 hFlush stdout
309 hFlush stdout
308− setCursorPos t (w - 1) y
310+ set_cursor_pos t (w - 1) y
309 putStr "X"
311 putStr "X"
310 hFlush stdout
312 hFlush stdout
311− setCursorPos t 0 (h - 1)
313+ set_cursor_pos t 0 (h - 1)
312− let rowH = row0
314+ let row_h = row_0
313− putStr rowH
315+ putStr row_h
314 hFlush stdout
316 hFlush stdout
316− showCursor t
318+ show_cursor t
317− releaseDisplay t
319+ release_display t
318− releaseTerminal t
320+ release_terminal t
319 return ()
321 return ()
320− , printSummary = displayBoundsTestSummary False
322+ , print_summary = display_bounds_test_summary False
321− , confirmResults = genericOutputMatchConfirm
323+ , confirm_results = generic_output_match_confirm
324−displayBoundsTestSummary hasCursor = do
326+display_bounds_test_summary has_cursor = do
325 putStr $ [s|
327 putStr $ [s|
326Once return is pressed:
328Once return is pressed:
327 0. The screen will be cleared.
329 0. The screen will be cleared.
329− if hasCursor
331+ if has_cursor
330 then putStr " 1. The cursor will be visible."
332 then putStr " 1. The cursor will be visible."
331 else putStr " 1. The cursor will NOT be visible."
333 else putStr " 1. The cursor will NOT be visible."
332 putStr [s|
334 putStr [s|
@@ -337,7 +339,7 @@ Once return is pressed:
337 |XXXXXXXXXXXXX|
339 |XXXXXXXXXXXXX|
340− if hasCursor
342+ if has_cursor
341 then putStr $ [s|
343 then putStr $ [s|
343 |XXXXXXXXXXXXC| |]
345 |XXXXXXXXXXXXC| |]
@@ -358,13 +360,13 @@ After return is pressed for the second time:
358 1. The cursor should be visible.
360 1. The cursor should be visible.
361−genericOutputMatchConfirm = do
363+generic_output_match_confirm = do
362 putStr $ [s|
364 putStr $ [s|
363Did the test output match the description?
365Did the test output match the description?
365− defaultSuccessConfirmResults
367+ default_success_confirm_results
367−-- Explicitly define the bytes that encode each example text.
369+-- Explicitely definethe bytes that encode each example text.
368-- This avoids any issues with how the compiler represents string literals.
370-- This avoids any issues with how the compiler represents string literals.
370-- This document is UTF-8 encoded so the UTF-8 string is still included for
372-- This document is UTF-8 encoded so the UTF-8 string is still included for
@@ -373,24 +375,24 @@ Did the test output match the description?
373-- It's assumed the compiler will at least not barf on UTF-8 encoded text in
375-- It's assumed the compiler will at least not barf on UTF-8 encoded text in
374-- comments ;-)
376-- comments ;-)
376−-- txt0 = ↑↑↓↓←→←→BA
378+-- txt_0 = ↑↑↓↓←→←→BA
378−utf8Txt0 :: [[Word8]]
380+utf8_txt_0 :: [[Word8]]
379−utf8Txt0 = [ [ 0xe2 , 0x86 , 0x91 ]
381+utf8_txt_0 = [ [ 0xe2 , 0x86 , 0x91 ]
380− , [ 0xe2 , 0x86 , 0x91 ]
382+ , [ 0xe2 , 0x86 , 0x91 ]
381− , [ 0xe2 , 0x86 , 0x93 ]
383+ , [ 0xe2 , 0x86 , 0x93 ]
382− , [ 0xe2 , 0x86 , 0x93 ]
384+ , [ 0xe2 , 0x86 , 0x93 ]
383− , [ 0xe2 , 0x86 , 0x90 ]
385+ , [ 0xe2 , 0x86 , 0x90 ]
384− , [ 0xe2 , 0x86 , 0x92 ]
386+ , [ 0xe2 , 0x86 , 0x92 ]
385− , [ 0xe2 , 0x86 , 0x90 ]
387+ , [ 0xe2 , 0x86 , 0x90 ]
386− , [ 0xe2 , 0x86 , 0x92 ]
388+ , [ 0xe2 , 0x86 , 0x92 ]
387− , [ 0x42 ]
389+ , [ 0x42 ]
388− , [ 0x41 ]
390+ , [ 0x41 ]
391−iso10646Txt0 :: String
393+iso_10646_txt_0 :: String
392−iso10646Txt0 = map toEnum
394+iso_10646_txt_0 = map toEnum
@@ -402,46 +404,46 @@ iso10646Txt0 = map toEnum
405−unicodeSingleWidth0 = Test
407+unicode_single_width_0 = Test
406− { testName = "Verify terminal can display unicode single-width characters. (Direct UTF-8)"
408+ { test_name = "Verify terminal can display unicode single-width characters. (Direct UTF-8)"
407− , testID = "unicodeSingleWidth0"
409+ , test_ID = "unicode_single_width_0"
408− , testAction = do
410+ , test_action = do
409− t <- standardIOConfig >>= outputForConfig
411+ t <- current_terminal
410− reserveDisplay t
412+ reserve_display t
411− hideCursor t
413+ hide_cursor t
412− withArrayLen (concat utf8Txt0) (flip $ hPutBuf stdout)
414+ withArrayLen (concat utf8_txt_0) (flip $ hPutBuf stdout)
413 hPutStr stdout "\n"
415 hPutStr stdout "\n"
414 hPutStr stdout "0123456789\n"
416 hPutStr stdout "0123456789\n"
415 hFlush stdout
417 hFlush stdout
417− releaseDisplay t
419+ release_display t
418− releaseTerminal t
420+ release_terminal t
419 return ()
421 return ()
420− , printSummary = unicodeSingleWidthSummary
422+ , print_summary = unicode_single_width_summary
421− , confirmResults = genericOutputMatchConfirm
423+ , confirm_results = generic_output_match_confirm
424−unicodeSingleWidth1 = Test
426+unicode_single_width_1 = Test
425− { testName = "Verify terminal can display unicode single-width characters. (Image ops)"
427+ { test_name = "Verify terminal can display unicode single-width characters. (Image ops)"
426− , testID = "unicodeSingleWidth1"
428+ , test_ID = "unicode_single_width_1"
427− , testAction = do
429+ , test_action = do
428− t <- standardIOConfig >>= outputForConfig
430+ t <- current_terminal
429− reserveDisplay t
431+ reserve_display t
430− let pic = picForImage image
432+ let pic = pic_for_image image
431− image = line0 <-> line1
433+ image = line_0 <-> line_1
432− line0 = iso10646String defAttr iso10646Txt0
434+ line_0 = iso_10646_string def_attr iso_10646_txt_0
433− line1 = string defAttr "0123456789"
435+ line_1 = string def_attr "0123456789"
434− d <- displayBounds t >>= displayContext t
436+ d <- display_bounds t >>= display_context t
435− outputPicture d pic
437+ output_picture d pic
437− releaseDisplay t
439+ release_display t
438− releaseTerminal t
440+ release_terminal t
439 return ()
441 return ()
440− , printSummary = unicodeSingleWidthSummary
442+ , print_summary = unicode_single_width_summary
441− , confirmResults = genericOutputMatchConfirm
443+ , confirm_results = generic_output_match_confirm
444−unicodeSingleWidthSummary = putStr [s|
446+unicode_single_width_summary = putStr [s|
445Once return is pressed:
447Once return is pressed:
446 0. The screen will be cleared.
448 0. The screen will be cleared.
447 1. The cursor will be hidden.
449 1. The cursor will be hidden.
@@ -475,55 +477,55 @@ After return is pressed for the second time:
476-- The second example is a unicode string containing double-width glyphs
478-- The second example is a unicode string containing double-width glyphs
478−utf8Txt1 :: [[Word8]]
480+utf8_txt_1 :: [[Word8]]
479−utf8Txt1 = [ [0xe4,0xbd,0xa0]
481+utf8_txt_1 = [ [0xe4,0xbd,0xa0]
480− , [0xe5,0xa5,0xbd]
482+ , [0xe5,0xa5,0xbd]
481− , [0xe5,0x90,0x97]
483+ , [0xe5,0x90,0x97]
484−iso10646Txt1 :: String
486+iso_10646_txt_1 :: String
485−iso10646Txt1 = map toEnum [20320,22909,21527]
487+iso_10646_txt_1 = map toEnum [20320,22909,21527]
487−unicodeDoubleWidth0 = Test
489+unicode_double_width_0 = Test
488− { testName = "Verify terminal can display unicode double-width characters. (Direct UTF-8)"
490+ { test_name = "Verify terminal can display unicode double-width characters. (Direct UTF-8)"
489− , testID = "unicodeDoubleWidth0"
491+ , test_ID = "unicode_double_width_0"
490− , testAction = do
492+ , test_action = do
491− t <- standardIOConfig >>= outputForConfig
493+ t <- current_terminal
492− reserveDisplay t
494+ reserve_display t
493− hideCursor t
495+ hide_cursor t
494− withArrayLen (concat utf8Txt1) (flip $ hPutBuf stdout)
496+ withArrayLen (concat utf8_txt_1) (flip $ hPutBuf stdout)
495 hPutStr stdout "\n"
497 hPutStr stdout "\n"
496 hPutStr stdout "012345\n"
498 hPutStr stdout "012345\n"
497 hFlush stdout
499 hFlush stdout
499− releaseDisplay t
501+ release_display t
500− releaseTerminal t
502+ release_terminal t
501 return ()
503 return ()
502− , printSummary = unicodeDoubleWidthSummary
504+ , print_summary = unicode_double_width_summary
503− , confirmResults = genericOutputMatchConfirm
505+ , confirm_results = generic_output_match_confirm
506−unicodeDoubleWidth1 = Test
508+unicode_double_width_1 = Test
507− { testName = "Verify terminal can display unicode double-width characters. (Image ops)"
509+ { test_name = "Verify terminal can display unicode double-width characters. (Image ops)"
508− , testID = "unicodeDoubleWidth1"
510+ , test_ID = "unicode_double_width_1"
509− , testAction = do
511+ , test_action = do
510− t <- standardIOConfig >>= outputForConfig
512+ t <- current_terminal
511− reserveDisplay t
513+ reserve_display t
512− let pic = picForImage image
514+ let pic = pic_for_image image
513− image = line0 <-> line1
515+ image = line_0 <-> line_1
514− line0 = iso10646String defAttr iso10646Txt1
516+ line_0 = iso_10646_string def_attr iso_10646_txt_1
515− line1 = string defAttr "012345"
517+ line_1 = string def_attr "012345"
516− d <- displayBounds t >>= displayContext t
518+ d <- display_bounds t >>= display_context t
517− outputPicture d pic
519+ output_picture d pic
519− releaseDisplay t
521+ release_display t
520− releaseTerminal t
522+ release_terminal t
521 return ()
523 return ()
522− , printSummary = unicodeDoubleWidthSummary
524+ , print_summary = unicode_double_width_summary
523− , confirmResults = genericOutputMatchConfirm
525+ , confirm_results = generic_output_match_confirm
526−unicodeDoubleWidthSummary = putStr [s|
528+unicode_double_width_summary = putStr [s|
527Once return is pressed:
529Once return is pressed:
528 0. The screen will be cleared.
530 0. The screen will be cleared.
529 1. The cursor will be hidden.
531 1. The cursor will be hidden.
@@ -550,32 +552,32 @@ After return is pressed for the second time:
550 1. The cursor should be visible.
552 1. The cursor should be visible.
553−allColors = zip [ black, red, green, yellow, blue, magenta, cyan, white ]
555+all_colors = zip [ black, red, green, yellow, blue, magenta, cyan, white ]
554− [ "black", "red", "green", "yellow", "blue", "magenta", "cyan", "white" ]
556+ [ "black", "red", "green", "yellow", "blue", "magenta", "cyan", "white" ]
556−allBrightColors
558+all_bright_colors
557− = zip [ brightBlack, brightRed, brightGreen, brightYellow, brightBlue, brightMagenta, brightCyan, brightWhite ]
559+ = zip [ bright_black, bright_red, bright_green, bright_yellow, bright_blue, bright_magenta, bright_cyan, bright_white ]
558 [ "bright black", "bright red", "bright green", "bright yellow", "bright blue", "bright magenta", "bright cyan", "bright white" ]
560 [ "bright black", "bright red", "bright green", "bright yellow", "bright blue", "bright magenta", "bright cyan", "bright white" ]
560−attributesTest0 = Test
562+attributes_test_0 = Test
561− { testName = "Character attributes: foreground colors."
563+ { test_name = "Character attributes: foreground colors."
562− , testID = "attributesTest0"
564+ , test_ID = "attributes_test_0"
563− , testAction = do
565+ , test_action = do
564− t <- standardIOConfig >>= outputForConfig
566+ t <- current_terminal
565− reserveDisplay t
567+ reserve_display t
566− let pic = picForImage image
568+ let pic = pic_for_image image
567− image = border <|> column0 <|> border <|> column1 <|> border
569+ image = border <|> column_0 <|> border <|> column_1 <|> border
568− column0 = vertCat $ map lineWithColor allColors
570+ column_0 = vert_cat $ map line_with_color all_colors
569− border = vertCat $ replicate (length allColors) $ string defAttr " | "
571+ border = vert_cat $ replicate (length all_colors) $ string def_attr " | "
570− column1 = vertCat $ map (string defAttr . snd) allColors
572+ column_1 = vert_cat $ map (string def_attr . snd) all_colors
571− lineWithColor (c, cName) = string (defAttr `withForeColor` c) cName
573+ line_with_color (c, c_name) = string (def_attr `with_fore_color` c) c_name
572− d <- displayBounds t >>= displayContext t
574+ d <- display_bounds t >>= display_context t
573− outputPicture d pic
575+ output_picture d pic
575− releaseDisplay t
577+ release_display t
576− releaseTerminal t
578+ release_terminal t
577 return ()
579 return ()
578− , printSummary = do
580+ , print_summary = do
579 putStr $ [s|
581 putStr $ [s|
580Once return is pressed:
582Once return is pressed:
581 0. The screen will be cleared.
583 0. The screen will be cleared.
@@ -596,32 +598,32 @@ After return is pressed for the second time:
596 0. The screen containing the test summary should be restored.
598 0. The screen containing the test summary should be restored.
597 1. The cursor should be visible.
599 1. The cursor should be visible.
599− , confirmResults = do
601+ , confirm_results = do
600 putStr $ [s|
602 putStr $ [s|
601Did the test output match the description?
603Did the test output match the description?
603− defaultSuccessConfirmResults
605+ default_success_confirm_results
606−attributesTest1 = Test
608+attributes_test_1 = Test
607− { testName = "Character attributes: background colors."
609+ { test_name = "Character attributes: background colors."
608− , testID = "attributesTest1"
610+ , test_ID = "attributes_test_1"
609− , testAction = do
611+ , test_action = do
610− t <- standardIOConfig >>= outputForConfig
612+ t <- current_terminal
611− reserveDisplay t
613+ reserve_display t
612− let pic = picForImage image
614+ let pic = pic_for_image image
613− image = border <|> column0 <|> border <|> column1 <|> border
615+ image = border <|> column_0 <|> border <|> column_1 <|> border
614− column0 = vertCat $ map lineWithColor allColors
616+ column_0 = vert_cat $ map line_with_color all_colors
615− border = vertCat $ replicate (length allColors) $ string defAttr " | "
617+ border = vert_cat $ replicate (length all_colors) $ string def_attr " | "
616− column1 = vertCat $ map (string defAttr . snd) allColors
618+ column_1 = vert_cat $ map (string def_attr . snd) all_colors
617− lineWithColor (c, cName) = string (defAttr `withBackColor` c) cName
619+ line_with_color (c, c_name) = string (def_attr `with_back_color` c) c_name
618− d <- displayBounds t >>= displayContext t
620+ d <- display_bounds t >>= display_context t
619− outputPicture d pic
621+ output_picture d pic
621− releaseDisplay t
623+ release_display t
622− releaseTerminal t
624+ release_terminal t
623 return ()
625 return ()
624− , printSummary = do
626+ , print_summary = do
625 putStr $ [s|
627 putStr $ [s|
626Once return is pressed:
628Once return is pressed:
627 0. The screen will be cleared.
629 0. The screen will be cleared.
@@ -651,57 +653,57 @@ After return is pressed for the second time:
651 0. The screen containing the test summary should be restored.
653 0. The screen containing the test summary should be restored.
652 1. The cursor should be visible.
654 1. The cursor should be visible.
654− , confirmResults = do
656+ , confirm_results = do
655 putStr $ [s|
657 putStr $ [s|
656Did the test output match the description?
658Did the test output match the description?
658− defaultSuccessConfirmResults
660+ default_success_confirm_results
661−attributesTest2 = Test
663+attributes_test_2 = Test
662− { testName = "Character attributes: Vivid foreground colors."
664+ { test_name = "Character attributes: Vivid foreground colors."
663− , testID = "attributesTest2"
665+ , test_ID = "attributes_test_2"
664− , testAction = do
666+ , test_action = do
665− t <- standardIOConfig >>= outputForConfig
667+ t <- current_terminal
666− reserveDisplay t
668+ reserve_display t
667− let pic = picForImage image
669+ let pic = pic_for_image image
668− image = horizCat [border, column0, border, column1, border, column2, border]
670+ image = horiz_cat [border, column_0, border, column_1, border, column_2, border]
669− border = vertCat $ replicate (length allColors) $ string defAttr " | "
671+ border = vert_cat $ replicate (length all_colors) $ string def_attr " | "
670− column0 = vertCat $ map lineWithColor0 allColors
672+ column_0 = vert_cat $ map line_with_color_0 all_colors
671− column1 = vertCat $ map lineWithColor1 allBrightColors
673+ column_1 = vert_cat $ map line_with_color_1 all_bright_colors
672− column2 = vertCat $ map (string defAttr . snd) allColors
674+ column_2 = vert_cat $ map (string def_attr . snd) all_colors
673− lineWithColor0 (c, cName) = string (defAttr `withForeColor` c) cName
675+ line_with_color_0 (c, c_name) = string (def_attr `with_fore_color` c) c_name
674− lineWithColor1 (c, cName) = string (defAttr `withForeColor` c) cName
676+ line_with_color_1 (c, c_name) = string (def_attr `with_fore_color` c) c_name
675− d <- displayBounds t >>= displayContext t
677+ d <- display_bounds t >>= display_context t
676− outputPicture d pic
678+ output_picture d pic
678− releaseDisplay t
680+ release_display t
679− releaseTerminal t
681+ release_terminal t
680 return ()
682 return ()
681− , printSummary = do
683+ , print_summary = do
682 putStr $ [s|
684 putStr $ [s|
683Once return is pressed:
685Once return is pressed:
684 0. The screen will be cleared.
686 0. The screen will be cleared.
685 1. The cursor will be hidden.
687 1. The cursor will be hidden.
686 2. 9 lines of text in three columns will be drawn:
688 2. 9 lines of text in three columns will be drawn:
687 a. The first column will be a name of a standard color (for an 8 color
689 a. The first column will be a name of a standard color (for an 8 color
688− terminal) rendered with that color as the foreground color.
690+ terminal) rendered with that color as the foreground color.
689 b. The next column will be also be the name of a standard color rendered
691 b. The next column will be also be the name of a standard color rendered
690 with that color as the foreground color but the shade used should be
692 with that color as the foreground color but the shade used should be
691− more vivid than the shade used in the first column.
693+ more vivid than the shade used in the first column.
692 c. The final column will be the name of a color rendered with the
694 c. The final column will be the name of a color rendered with the
693 default attributes.
695 default attributes.
695For instance, one line will be the word "magenta" and that word should be
697For instance, one line will be the word "magenta" and that word should be
696−rendered in the magenta color.
698+rendered in the magenta color.
698I'm not actually sure exactly what "vivid" means in this context. For xterm the
700I'm not actually sure exactly what "vivid" means in this context. For xterm the
699−vivid colors are brighter.
701+vivid colors are brighter.
702 * The first column: The foreground color matches the named color.
704 * The first column: The foreground color matches the named color.
703 * The second column: The foreground color matches the named color but is
705 * The second column: The foreground color matches the named color but is
704− more vivid than the color used in the first column.
706+ more vivid than the color used in the first column.
705 * The third column: All text is rendered with the default attributes.
707 * The third column: All text is rendered with the default attributes.
706 * The vertical bars used in each line to mark the border of a column are
708 * The vertical bars used in each line to mark the border of a column are
707 lined up.
709 lined up.
@@ -710,34 +712,34 @@ After return is pressed for the second time:
710 0. The screen containing the test summary should be restored.
712 0. The screen containing the test summary should be restored.
711 1. The cursor should be visible.
713 1. The cursor should be visible.
713− , confirmResults = do
715+ , confirm_results = do
714 putStr $ [s|
716 putStr $ [s|
715Did the test output match the description?
717Did the test output match the description?
717− defaultSuccessConfirmResults
719+ default_success_confirm_results
720−attributesTest3 = Test
722+attributes_test_3 = Test
721− { testName = "Character attributes: Vivid background colors."
723+ { test_name = "Character attributes: Vivid background colors."
722− , testID = "attributesTest3"
724+ , test_ID = "attributes_test_3"
723− , testAction = do
725+ , test_action = do
724− t <- standardIOConfig >>= outputForConfig
726+ t <- current_terminal
725− reserveDisplay t
727+ reserve_display t
726− let pic = picForImage image
728+ let pic = pic_for_image image
727− image = horizCat [border, column0, border, column1, border, column2, border]
729+ image = horiz_cat [border, column_0, border, column_1, border, column_2, border]
728− border = vertCat $ replicate (length allColors) $ string defAttr " | "
730+ border = vert_cat $ replicate (length all_colors) $ string def_attr " | "
729− column0 = vertCat $ map lineWithColor0 allColors
731+ column_0 = vert_cat $ map line_with_color_0 all_colors
730− column1 = vertCat $ map lineWithColor1 allBrightColors
732+ column_1 = vert_cat $ map line_with_color_1 all_bright_colors
731− column2 = vertCat $ map (string defAttr . snd) allColors
733+ column_2 = vert_cat $ map (string def_attr . snd) all_colors
732− lineWithColor0 (c, cName) = string (defAttr `withBackColor` c) cName
734+ line_with_color_0 (c, c_name) = string (def_attr `with_back_color` c) c_name
733− lineWithColor1 (c, cName) = string (defAttr `withBackColor` c) cName
735+ line_with_color_1 (c, c_name) = string (def_attr `with_back_color` c) c_name
734− d <- displayBounds t >>= displayContext t
736+ d <- display_bounds t >>= display_context t
735− outputPicture d pic
737+ output_picture d pic
737− releaseDisplay t
739+ release_display t
738− releaseTerminal t
740+ release_terminal t
739 return ()
741 return ()
740− , printSummary = do
742+ , print_summary = do
741 putStr $ [s|
743 putStr $ [s|
742Once return is pressed:
744Once return is pressed:
743 0. The screen will be cleared.
745 0. The screen will be cleared.
@@ -745,23 +747,23 @@ Once return is pressed:
745 2. 9 lines of text in three columns will be drawn:
747 2. 9 lines of text in three columns will be drawn:
746 a. The first column will contain be a name of a standard color for an 8
748 a. The first column will contain be a name of a standard color for an 8
747 color terminal rendered with the default foreground color with a
749 color terminal rendered with the default foreground color with a
748− background the named color.
750+ background the named color.
749 b. The first column will contain be a name of a standard color for an 8
751 b. The first column will contain be a name of a standard color for an 8
750 color terminal rendered with the default foreground color with the
752 color terminal rendered with the default foreground color with the
751− background a vivid version of the named color.
753+ background a vivid version of the named color.
752 c. The third column will be the name of a standard color rendered with
754 c. The third column will be the name of a standard color rendered with
753 the default attributes.
755 the default attributes.
755For instance, one line will contain be the word "magenta" and the word should
757For instance, one line will contain be the word "magenta" and the word should
756−be rendered in the default foreground color over a magenta background.
758+be rendered in the default foreground color over a magenta background.
758I'm not actually sure exactly what "vivid" means in this context. For xterm the
760I'm not actually sure exactly what "vivid" means in this context. For xterm the
759vivid colors are brighter.
761vivid colors are brighter.
762 * The first column: The background color matches the named color.
764 * The first column: The background color matches the named color.
763 * The second column: The background color matches the named color and is
765 * The second column: The background color matches the named color and is
764− more vivid than the color used in the first column.
766+ more vivid than the color used in the first column.
765 * The third column column: All text is rendered with the default attributes.
767 * The third column column: All text is rendered with the default attributes.
766 * The vertical bars used in each line to mark the border of a column are
768 * The vertical bars used in each line to mark the border of a column are
767 lined up.
769 lined up.
@@ -777,51 +779,51 @@ After return is pressed for the second time:
777 0. The screen containing the test summary should be restored.
779 0. The screen containing the test summary should be restored.
778 1. The cursor should be visible.
780 1. The cursor should be visible.
780− , confirmResults = do
782+ , confirm_results = do
781 putStr $ [s|
783 putStr $ [s|
782Did the test output match the description?
784Did the test output match the description?
784− defaultSuccessConfirmResults
786+ default_success_confirm_results
787−attrCombos =
789+attr_combos =
788 [ ( "default", id )
790 [ ( "default", id )
789− , ( "bold", flip withStyle bold )
791+ , ( "bold", flip with_style bold )
790− , ( "blink", flip withStyle blink )
792+ , ( "blink", flip with_style blink )
791− , ( "underline", flip withStyle underline )
793+ , ( "underline", flip with_style underline )
792− , ( "bold + blink", flip withStyle (bold + blink) )
794+ , ( "bold + blink", flip with_style (bold + blink) )
793− , ( "bold + underline", flip withStyle (bold + underline) )
795+ , ( "bold + underline", flip with_style (bold + underline) )
794− , ( "underline + blink", flip withStyle (underline + blink) )
796+ , ( "underline + blink", flip with_style (underline + blink) )
795− , ( "bold + blink + underline", flip withStyle (bold + blink + underline) )
797+ , ( "bold + blink + underline", flip with_style (bold + blink + underline) )
798−attributesTest4 = Test
800+attributes_test_4 = Test
799− { testName = "Character attributes: Bold; Blink; Underline."
801+ { test_name = "Character attributes: Bold; Blink; Underline."
800− , testID = "attributesTest4"
802+ , test_ID = "attributes_test_4"
801− , testAction = do
803+ , test_action = do
802− t <- standardIOConfig >>= outputForConfig
804+ t <- current_terminal
803− reserveDisplay t
805+ reserve_display t
804− let pic = picForImage image
806+ let pic = pic_for_image image
805− image = horizCat [border, column0, border, column1, border]
807+ image = horiz_cat [border, column_0, border, column_1, border]
806− border = vertCat $ replicate (length attrCombos) $ string defAttr " | "
808+ border = vert_cat $ replicate (length attr_combos) $ string def_attr " | "
807− column0 = vertCat $ map lineWithAttrs attrCombos
809+ column_0 = vert_cat $ map line_with_attrs attr_combos
808− column1 = vertCat $ map (string defAttr . fst) attrCombos
810+ column_1 = vert_cat $ map (string def_attr . fst) attr_combos
809− lineWithAttrs (desc, attrF) = string (attrF defAttr) desc
811+ line_with_attrs (desc, attr_f) = string (attr_f def_attr) desc
810− d <- displayBounds t >>= displayContext t
812+ d <- display_bounds t >>= display_context t
811− outputPicture d pic
813+ output_picture d pic
813− releaseDisplay t
815+ release_display t
814− releaseTerminal t
816+ release_terminal t
815 return ()
817 return ()
816− , printSummary = do
818+ , print_summary = do
817 putStr $ [s|
819 putStr $ [s|
818Once return is pressed:
820Once return is pressed:
819 0. The screen will be cleared.
821 0. The screen will be cleared.
820 1. The cursor will be hidden.
822 1. The cursor will be hidden.
821− 2. 8 rows of text in two columns.
823+ 2. 8 rows of text in two columns.
822 The rows will contain the following text:
824 The rows will contain the following text:
826 underline
828 underline
827 bold + blink
829 bold + blink
@@ -830,8 +832,8 @@ Once return is pressed:
830 bold + blink + underline
832 bold + blink + underline
831 The first column will be rendered with the described attributes. The second
833 The first column will be rendered with the described attributes. The second
832 column will be rendered with the default attributes.
834 column will be rendered with the default attributes.
835 * The vertical bars used in each line to mark the border of a column are
837 * The vertical bars used in each line to mark the border of a column are
836 lined up.
838 lined up.
837 * The text in the first column is rendered as described.
839 * The text in the first column is rendered as described.
@@ -840,31 +842,31 @@ After return is pressed for the second time:
840 0. The screen containing the test summary should be restored.
842 0. The screen containing the test summary should be restored.
841 1. The cursor should be visible.
843 1. The cursor should be visible.
843− , confirmResults = do
845+ , confirm_results = do
844 putStr $ [s|
846 putStr $ [s|
845Did the test output match the description?
847Did the test output match the description?
847− defaultSuccessConfirmResults
849+ default_success_confirm_results
850−attributesTest5 = Test
852+attributes_test_5 = Test
851− { testName = "Character attributes: 240 color palette"
853+ { test_name = "Character attributes: 240 color palette"
852− , testID = "attributesTest5"
854+ , test_ID = "attributes_test_5"
853− , testAction = do
855+ , test_action = do
854− t <- standardIOConfig >>= outputForConfig
856+ t <- current_terminal
855− reserveDisplay t
857+ reserve_display t
856− let pic = picForImage image
858+ let pic = pic_for_image image
857− image = vertCat $ map horizCat $ splitColorImages colorImages
859+ image = vert_cat $ map horiz_cat $ split_color_images color_images
858− colorImages = map (\i -> string (currentAttr `withBackColor` Color240 i) " ") [0..239]
860+ color_images = map (\i -> string (current_attr `with_back_color` Color240 i) " ") [0..239]
859− splitColorImages [] = []
861+ split_color_images [] = []
860− splitColorImages is = (take 20 is ++ [string defAttr " "]) : (splitColorImages (drop 20 is))
862+ split_color_images is = (take 20 is ++ [string def_attr " "]) : (split_color_images (drop 20 is))
861− d <- displayBounds t >>= displayContext t
863+ d <- display_bounds t >>= display_context t
862− outputPicture d pic
864+ output_picture d pic
864− releaseDisplay t
866+ release_display t
865− releaseTerminal t
867+ release_terminal t
866 return ()
868 return ()
867− , printSummary = do
869+ , print_summary = do
868 putStr $ [s|
870 putStr $ [s|
869Once return is pressed:
871Once return is pressed:
870 0. The screen will be cleared.
872 0. The screen will be cleared.
@@ -872,304 +874,296 @@ Once return is pressed:
872 2. A 20 character wide and 12 row high block of color squares. This should look like a palette
874 2. A 20 character wide and 12 row high block of color squares. This should look like a palette
873 of some sort. I'm not exactly sure if all color terminals use the same palette. I doubt it...
875 of some sort. I'm not exactly sure if all color terminals use the same palette. I doubt it...
877After return is pressed for the second time:
879After return is pressed for the second time:
878 0. The screen containing the test summary should be restored.
880 0. The screen containing the test summary should be restored.
879 1. The cursor should be visible.
881 1. The cursor should be visible.
881− , confirmResults = do
883+ , confirm_results = do
882 putStr $ [s|
884 putStr $ [s|
883Did the test output match the description?
885Did the test output match the description?
885− defaultSuccessConfirmResults
887+ default_success_confirm_results
888−inlineTest0 = Test
890+inline_test_0 = Test
889− { testName = "Verify styled output can be performed without clearing the screen."
891+ { test_name = "Verify styled output can be performed without clearing the screen."
890− , testID = "inlineTest0"
892+ , test_ID = "inline_test_0"
891− , testAction = do
893+ , test_action = do
892 putStrLn "line 1."
894 putStrLn "line 1."
893− putAttrChange_ $ backColor red >> applyStyle underline
895+ put_attr_change_ $ back_color red >> apply_style underline
894 putStrLn "line 2."
896 putStrLn "line 2."
895− putAttrChange_ $ defaultAll
897+ put_attr_change_ $ default_all
896 putStrLn "line 3."
898 putStrLn "line 3."
897− , printSummary = putStr $ [s|
899+ , print_summary = putStr $ [s|
898lines are in order.
900lines are in order.
899The second line "line 2" should have a red background and the text underline.
901The second line "line 2" should have a red background and the text underline.
900The third line "line 3" should be drawn in the same style as the first line.
902The third line "line 3" should be drawn in the same style as the first line.
903− , confirmResults = genericOutputMatchConfirm
905+ , confirm_results = generic_output_match_confirm
906−inlineTest1 = Test
908+inline_test_1 = Test
907− { testName = "Verify styled output can be performed without clearing the screen."
909+ { test_name = "Verify styled output can be performed without clearing the screen."
908− , testID = "inlineTest1"
910+ , test_ID = "inline_test_1"
909− , testAction = do
911+ , test_action = do
910 putStr "Not styled. "
912 putStr "Not styled. "
911− putAttrChange_ $ backColor red >> applyStyle underline
913+ put_attr_change_ $ back_color red >> apply_style underline
912 putStr " Styled! "
914 putStr " Styled! "
913− putAttrChange_ $ defaultAll
915+ put_attr_change_ $ default_all
914 putStrLn "Not styled."
916 putStrLn "Not styled."
915− , printSummary = putStr $ [s|
917+ , print_summary = putStr $ [s|
918− , confirmResults = genericOutputMatchConfirm
920+ , confirm_results = generic_output_match_confirm
921−inlineTest2 = Test
923+inline_test_2 = Test
922− { testName = "Verify styled output can be performed without clearing the screen."
924+ { test_name = "Verify styled output can be performed without clearing the screen."
923− , testID = "inlineTest1"
925+ , test_ID = "inline_test_1"
924− , testAction = do
926+ , test_action = do
925 putStr "Not styled. "
927 putStr "Not styled. "
926− putAttrChange_ $ backColor red >> applyStyle underline
928+ put_attr_change_ $ back_color red >> apply_style underline
927 putStr " Styled! "
929 putStr " Styled! "
928− putAttrChange_ $ defaultAll
930+ put_attr_change_ $ default_all
929 putStr "Not styled.\n"
931 putStr "Not styled.\n"
930− , printSummary = putStr $ [s|
932+ , print_summary = putStr $ [s|
932− , confirmResults = genericOutputMatchConfirm
934+ , confirm_results = generic_output_match_confirm
935−cursorHideTest0 :: Test
937+cursor_hide_test_0 :: Test
936−cursorHideTest0 = Test
938+cursor_hide_test_0 = Test
937− { testName = "Verify the cursor is hid and re-shown. issue #7"
939+ { test_name = "Verify the cursor is hid and re-shown. issue #7"
938− , testID = "cursorHideTest0"
940+ , test_ID = "cursor_hide_test_0"
939− , testAction = do
941+ , test_action = do
940− vty <- mkVty defaultConfig
942+ vty <- mkVty
941− showCursor $ outputIface vty
943+ show_cursor $ terminal vty
942− setCursorPos (outputIface vty) 5 5
944+ set_cursor_pos (terminal vty) 5 5
943− nextEvent vty
945+ next_event vty
944− hideCursor $ outputIface vty
946+ hide_cursor $ terminal vty
945− nextEvent vty
947+ next_event vty
946 shutdown vty
948 shutdown vty
947 return ()
949 return ()
948− , printSummary = putStr $ [s|
950+ , print_summary = putStr $ [s|
949 1. verify the cursor is displayed.
951 1. verify the cursor is displayed.
950 2. press enter
952 2. press enter
951 3. verify the cursor is hid.
953 3. verify the cursor is hid.
952 4. press enter.
954 4. press enter.
953 5. the display should return to the state before the test.
955 5. the display should return to the state before the test.
955− , confirmResults = genericOutputMatchConfirm
957+ , confirm_results = generic_output_match_confirm
958−outputImageAndWait :: Image -> IO ()
960+output_image_and_wait :: Image -> IO ()
959−outputImageAndWait image = do
961+output_image_and_wait image = do
960− let pic = picForImage image
962+ let pic = pic_for_image image
961− outputPicAndWait pic
963+ output_pic_and_wait pic
963−outputPicAndWait :: Picture -> IO ()
965+output_pic_and_wait :: Picture -> IO ()
964−outputPicAndWait pic = do
966+output_pic_and_wait pic = do
965− t <- standardIOConfig >>= outputForConfig
967+ t <- current_terminal
966− reserveDisplay t
968+ reserve_display t
967− d <- displayBounds t >>= displayContext t
969+ d <- display_bounds t >>= display_context t
968− outputPicture d pic
970+ output_picture d pic
970− releaseDisplay t
972+ release_display t
971− releaseTerminal t
973+ release_terminal t
972 return ()
974 return ()
974−vertCropTest0 :: Test
976+vert_crop_test_0 :: Test
975−vertCropTest0 = Test
977+vert_crop_test_0 = Test
976− { testName = "Verify bottom cropping works as expected with single column chars"
978+ { test_name = "Verify bottom cropping works as expected with single column chars"
977− , testID = "cropTest0"
979+ , test_ID = "crop_test_0"
978− , testAction = do
980+ , test_action = do
979− let block0 = cropBottom 2 $ vertCat $ map (string defAttr) lorumIpsum
981+ let block_0 = crop_bottom 2 $ vert_cat $ map (string def_attr) lorum_ipsum
980− block1 = vertCat $ map (string defAttr) $ take 2 lorumIpsum
982+ block_1 = vert_cat $ map (string def_attr) $ take 2 lorum_ipsum
981− image = block0 <-> backgroundFill 10 2 <-> block1
983+ image = block_0 <-> background_fill 10 2 <-> block_1
982− outputImageAndWait image
984+ output_image_and_wait image
983− , printSummary = putStr $ [s|
985+ , print_summary = putStr $ [s|
984 1. Verify the two text blocks are identical.
986 1. Verify the two text blocks are identical.
985 2. press enter.
987 2. press enter.
986 3. the display should return to the state before the test.
988 3. the display should return to the state before the test.
988− , confirmResults = genericOutputMatchConfirm
990+ , confirm_results = generic_output_match_confirm
991−vertCropTest1 :: Test
993+vert_crop_test_1 :: Test
992−vertCropTest1 = Test
994+vert_crop_test_1 = Test
993− { testName = "Verify bottom cropping works as expected with double column chars"
995+ { test_name = "Verify bottom cropping works as expected with double column chars"
994− , testID = "cropTest0"
996+ , test_ID = "crop_test_0"
995− , testAction = do
997+ , test_action = do
996− let block0 = cropBottom 2 $ vertCat $ map (string defAttr) lorumIpsumChinese
998+ let block_0 = crop_bottom 2 $ vert_cat $ map (string def_attr) lorum_ipsum_chinese
997− block1 = vertCat $ map (string defAttr) $ take 2 lorumIpsumChinese
999+ block_1 = vert_cat $ map (string def_attr) $ take 2 lorum_ipsum_chinese
998− image = block0 <-> backgroundFill 10 2 <-> block1
1000+ image = block_0 <-> background_fill 10 2 <-> block_1
999− outputImageAndWait image
1001+ output_image_and_wait image
1000− , printSummary = putStr $ [s|
1002+ , print_summary = putStr $ [s|
1001 1. Verify the two text blocks are identical.
1003 1. Verify the two text blocks are identical.
1002 2. press enter.
1004 2. press enter.
1003 3. the display should return to the state before the test.
1005 3. the display should return to the state before the test.
1005− , confirmResults = genericOutputMatchConfirm
1007+ , confirm_results = generic_output_match_confirm
1008−vertCropTest2 :: Test
1010+vert_crop_test_2 :: Test
1009−vertCropTest2 = Test
1011+vert_crop_test_2 = Test
1010− { testName = "Verify top cropping works as expected with single column chars"
1012+ { test_name = "Verify top cropping works as expected with single column chars"
1011− , testID = "cropTest2"
1013+ , test_ID = "crop_test_0"
1012− , testAction = do
1014+ , test_action = do
1013− let block0 = cropTop 2 $ vertCat $ map (string defAttr) lorumIpsum
1015+ let block_0 = crop_top 2 $ vert_cat $ map (string def_attr) lorum_ipsum
1014− block1 = vertCat $ map (string defAttr) $ drop (length lorumIpsum - 2) lorumIpsum
1016+ block_1 = vert_cat $ map (string def_attr) $ drop (length lorum_ipsum - 2) lorum_ipsum
1015− image = block0 <-> backgroundFill 10 2 <-> block1
1017+ image = block_0 <-> background_fill 10 2 <-> block_1
1016− outputImageAndWait image
1018+ output_image_and_wait image
1017− , printSummary = putStr $ [s|
1019+ , print_summary = putStr $ [s|
1018 1. Verify the two text blocks are identical.
1020 1. Verify the two text blocks are identical.
1019 2. press enter.
1021 2. press enter.
1020 3. the display should return to the state before the test.
1022 3. the display should return to the state before the test.
1022− , confirmResults = genericOutputMatchConfirm
1024+ , confirm_results = generic_output_match_confirm
1025−vertCropTest3 :: Test
1027+vert_crop_test_3 :: Test
1026−vertCropTest3 = Test
1028+vert_crop_test_3 = Test
1027− { testName = "Verify top cropping works as expected with double column chars"
1029+ { test_name = "Verify top cropping works as expected with double column chars"
1028− , testID = "cropTest0"
1030+ , test_ID = "crop_test_0"
1029− , testAction = do
1031+ , test_action = do
1030− let block0 = cropTop 2 $ vertCat $ map (string defAttr) lorumIpsumChinese
1032+ let block_0 = crop_top 2 $ vert_cat $ map (string def_attr) lorum_ipsum_chinese
1031− block1 = vertCat $ map (string defAttr) $ drop (length lorumIpsumChinese - 2 ) lorumIpsumChinese
1033+ block_1 = vert_cat $ map (string def_attr) $ drop (length lorum_ipsum_chinese - 2 ) lorum_ipsum_chinese
1032− image = block0 <-> backgroundFill 10 2 <-> block1
1034+ image = block_0 <-> background_fill 10 2 <-> block_1
1033− outputImageAndWait image
1035+ output_image_and_wait image
1034− , printSummary = putStr $ [s|
1036+ , print_summary = putStr $ [s|
1035 1. Verify the two text blocks are identical.
1037 1. Verify the two text blocks are identical.
1036 2. press enter.
1038 2. press enter.
1037 3. the display should return to the state before the test.
1039 3. the display should return to the state before the test.
1039− , confirmResults = genericOutputMatchConfirm
1041+ , confirm_results = generic_output_match_confirm
1042−horizCropTest0 :: Test
1044+horiz_crop_test_0 :: Test
1043−horizCropTest0 = Test
1045+horiz_crop_test_0 = Test
1044− { testName = "Verify right cropping works as expected with single column chars"
1046+ { test_name = "Verify right cropping works as expected with single column chars"
1045− , testID = "cropTest0"
1047+ , test_ID = "crop_test_0"
1046− , testAction = do
1048+ , test_action = do
1047− let baseImage = vertCat $ map (string defAttr) lorumIpsum
1049+ let base_image = vert_cat $ map (string def_attr) lorum_ipsum
1048− croppedImage = cropRight (imageWidth baseImage `div` 2) baseImage
1050+ cropped_image = crop_right (image_width base_image `div` 2) base_image
1049− image = baseImage <-> backgroundFill 10 2 <-> croppedImage
1051+ image = base_image <-> background_fill 10 2 <-> cropped_image
1050− outputImageAndWait image
1052+ output_image_and_wait image
1051− , printSummary = putStr $ [s|
1053+ , print_summary = putStr $ [s|
1052 1. Verify the bottom text block is about half the width of the top text block.
1054 1. Verify the bottom text block is about half the width of the top text block.
1053 2. press enter.
1055 2. press enter.
1054 3. the display should return to the state before the test.
1056 3. the display should return to the state before the test.
1056− , confirmResults = genericOutputMatchConfirm
1058+ , confirm_results = generic_output_match_confirm
1059−horizCropTest1 :: Test
1061+horiz_crop_test_1 :: Test
1060−horizCropTest1 = Test
1062+horiz_crop_test_1 = Test
1061− { testName = "Verify right cropping works as expected with double column chars"
1063+ { test_name = "Verify right cropping works as expected with double column chars"
1062− , testID = "cropTest0"
1064+ , test_ID = "crop_test_0"
1063− , testAction = do
1065+ , test_action = do
1064− let baseImage = vertCat $ map (string defAttr) lorumIpsumChinese
1066+ let base_image = vert_cat $ map (string def_attr) lorum_ipsum_chinese
1065− croppedImage = cropRight (imageWidth baseImage `div` 2) baseImage
1067+ cropped_image = crop_right (image_width base_image `div` 2) base_image
1066− image = baseImage <-> backgroundFill 10 2 <-> croppedImage
1068+ image = base_image <-> background_fill 10 2 <-> cropped_image
1067− outputImageAndWait image
1069+ output_image_and_wait image
1068− , printSummary = putStr $ [s|
1070+ , print_summary = putStr $ [s|
1069 1. Verify the bottom text block is the left half of the top block. Ellipses on the right edge are OK.
1071 1. Verify the bottom text block is the left half of the top block. Ellipses on the right edge are OK.
1070 2. press enter.
1072 2. press enter.
1071 3. the display should return to the state before the test.
1073 3. the display should return to the state before the test.
1073− , confirmResults = genericOutputMatchConfirm
1075+ , confirm_results = generic_output_match_confirm
1076−horizCropTest2 :: Test
1078+horiz_crop_test_2 :: Test
1077−horizCropTest2 = Test
1079+horiz_crop_test_2 = Test
1078− { testName = "Verify left cropping works as expected with single column chars"
1080+ { test_name = "Verify left cropping works as expected with single column chars"
1079− , testID = "cropTest0"
1081+ , test_ID = "crop_test_0"
1080− , testAction = do
1082+ , test_action = do
1081− let baseImage = vertCat $ map (string defAttr) lorumIpsum
1083+ let base_image = vert_cat $ map (string def_attr) lorum_ipsum
1082− croppedImage = cropLeft (imageWidth baseImage `div` 2) baseImage
1084+ cropped_image = crop_left (image_width base_image `div` 2) base_image
1083− image = baseImage <-> backgroundFill 10 2 <-> croppedImage
1085+ image = base_image <-> background_fill 10 2 <-> cropped_image
1084− outputImageAndWait image
1086+ output_image_and_wait image
1085− , printSummary = putStr $ [s|
1087+ , print_summary = putStr $ [s|
1086 1. Verify the bottom text block is the right half of the top text block.
1088 1. Verify the bottom text block is the right half of the top text block.
1087 2. press enter.
1089 2. press enter.
1088 3. the display should return to the state before the test.
1090 3. the display should return to the state before the test.
1090− , confirmResults = genericOutputMatchConfirm
1092+ , confirm_results = generic_output_match_confirm
1093−horizCropTest3 :: Test
1095+horiz_crop_test_3 :: Test
1094−horizCropTest3 = Test
1096+horiz_crop_test_3 = Test
1095− { testName = "Verify right cropping works as expected with double column chars"
1097+ { test_name = "Verify right cropping works as expected with double column chars"
1096− , testID = "cropTest0"
1098+ , test_ID = "crop_test_0"
1097− , testAction = do
1099+ , test_action = do
1098− let baseImage = vertCat $ map (string defAttr) lorumIpsumChinese
1100+ let base_image = vert_cat $ map (string def_attr) lorum_ipsum_chinese
1099− croppedImage = cropLeft (imageWidth baseImage `div` 2) baseImage
1101+ cropped_image = crop_left (image_width base_image `div` 2) base_image
1100− image = baseImage <-> backgroundFill 10 2 <-> croppedImage
1102+ image = base_image <-> background_fill 10 2 <-> cropped_image
1101− outputImageAndWait image
1103+ output_image_and_wait image
1102− , printSummary = putStr $ [s|
1104+ , print_summary = putStr $ [s|
1103 1. Verify the bottom text block is the right half of the top block. Ellipses on the left edge are OK.
1105 1. Verify the bottom text block is the right half of the top block. Ellipses on the left edge are OK.
1104 2. press enter.
1106 2. press enter.
1105 3. the display should return to the state before the test.
1107 3. the display should return to the state before the test.
1107− , confirmResults = genericOutputMatchConfirm
1109+ , confirm_results = generic_output_match_confirm
1110−layer0 :: Test
1112+layer_0 :: Test
1111−layer0 = Test
1113+layer_0 = Test
1112− { testName = "verify layer 0"
1114+ { test_name = "verify layer 0"
1113− , testID = "layer0"
1115+ , test_ID = "layer_0"
1114− , testAction = do
1116+ , test_action = do
1115− let upperImage = vertCat $ map (string defAttr) lorumIpsumChinese
1117+ let upper_image = vert_cat $ map (string def_attr) lorum_ipsum_chinese
1116− lowerImage = vertCat $ map (string defAttr) lorumIpsum
1118+ lower_image = vert_cat $ map (string def_attr) lorum_ipsum
1117− p = picForLayers [upperImage, lowerImage]
1119+ p = pic_for_layers [upper_image, lower_image]
1118− outputPicAndWait p
1120+ output_pic_and_wait p
1119− , printSummary = putStr $ [s|
1121+ , print_summary = putStr $ [s|
1120 1. Verify the text block appears to be Chinese text placed on top Latin text.
1122 1. Verify the text block appears to be Chinese text placed on top Latin text.
1121 2. press enter.
1123 2. press enter.
1122 3. the display should return to the state before the test.
1124 3. the display should return to the state before the test.
1124− , confirmResults = genericOutputMatchConfirm
1126+ , confirm_results = generic_output_match_confirm
1127−layer1 :: Test
1129+layer_1 :: Test
1128−layer1 = Test
1130+layer_1 = Test
1129− { testName = "verify layer 1"
1131+ { test_name = "verify layer 1"
1130− , testID = "layer1"
1132+ , test_ID = "layer_1"
1131− , testAction = do
1133+ , test_action = do
1132− let upperImage = vertCat $ map (string defAttr) lorumIpsumChinese
1134+ let upper_image = vert_cat $ map (string def_attr) lorum_ipsum_chinese
1133− block = resize 10 10 upperImage
1135+ block = resize 10 10 upper_image
1134− layer0 = vertCat $ map (string defAttr) lorumIpsum
1136+ layer_0 = vert_cat $ map (string def_attr) lorum_ipsum
1135− layer1 = charFill (defAttr `withBackColor` blue) '#' 1000 1000
1137+ layer_1 = char_fill (def_attr `with_back_color` blue) '#' 1000 1000
1136− cheesyAnim0 block [layer0, layer1]
1138+ cheesy_anim_0 block [layer_0, layer_1]
1137− , printSummary = putStr $ [s|
1139+ , print_summary = putStr $ [s|
1138 1. Verify the text block appears to be Chinese text moving on top a Latin text.
1140 1. Verify the text block appears to be Chinese text moving on top a Latin text.
1139 Which is all on a background of '#' characters over blue.
1141 Which is all on a background of '#' characters over blue.
1140 2. press enter.
1142 2. press enter.
1141 3. the display should return to the state before the test.
1143 3. the display should return to the state before the test.
1143− , confirmResults = genericOutputMatchConfirm
1145+ , confirm_results = generic_output_match_confirm
1146−cheesyAnim0 :: Image -> [Image] -> IO ()
1148+cheesy_anim_0 :: Image -> [Image] -> IO ()
1147−cheesyAnim0 i background = do
1149+cheesy_anim_0 i background = do
1148− t <- standardIOConfig >>= outputForConfig
1150+ t <- current_terminal
1149− reserveDisplay t
1151+ reserve_display t
1150− bounds <- displayBounds t
1152+ bounds <- display_bounds t
1151− d <- displayContext t bounds
1153+ d <- display_context t bounds
1152− forM_ [0..2] $ \t -> do
1154+ forM_ [0..100] $ \t -> do
1153− forM_ [0..100] $ \t -> do
1155+ let i_offset = translate (t `mod` region_width bounds)
1154− let i_offset = translate (t `mod` fst bounds)
1156+ (t `div` 2 `mod` region_height bounds)
1155− (t `div` 2 `mod` snd bounds)
1157− let pic = picForLayers $ i_offset : background
1158− outputPicture d pic
1160− forM_ [0..100] $ \t -> do
1161− let i_offset = translate (t * (-1) `mod` fst bounds)
1162− (t * (-1) `div` 2 `mod` snd bounds)
1164− let pic = picForLayers $ i_offset : background
1158+ let pic = pic_for_layers $ i_offset : background
1165− outputPicture d pic
1159+ output_picture d pic
1166 threadDelay 50000
1160 threadDelay 50000
1167− releaseDisplay t
1161+ release_display t
1168− releaseTerminal t
1162+ release_terminal t
1169 return ()
1163 return ()
1171−lorumIpsum :: [String]
1165+lorum_ipsum :: [String]
1172−lorumIpsum = lines [s|
1166+lorum_ipsum = lines [s|
1173Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium,
1167Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium,
1174totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae
1168totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae
1175dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit,
1169dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit,
@@ -1181,8 +1175,8 @@ commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate v
1181molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?
1175molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?
1184−lorumIpsumChinese :: [String]
1178+lorum_ipsum_chinese :: [String]
1185−lorumIpsumChinese = lines [s|
1179+lorum_ipsum_chinese = lines [s|
1186輐銛 螷蟞覮 裌覅詵 暕 鴅噮 槶 惝掭掝 婸媥媕 耏胠臿, 汫汭沎 忕汌卣 蚡袀 僣 蒮 瀁瀎瀊 渮湸湤 緌翢,
1180輐銛 螷蟞覮 裌覅詵 暕 鴅噮 槶 惝掭掝 婸媥媕 耏胠臿, 汫汭沎 忕汌卣 蚡袀 僣 蒮 瀁瀎瀊 渮湸湤 緌翢,
1187腠腶舝 糲蘥蠩 樏殣氀 蒮 蹢鎒 滍 鸄齴 櫧櫋瀩 鬄鵊鵙 莃荶衒, 毸溠 橀 簎艜薤 莃荶衒 翣聜蒢
1181腠腶舝 糲蘥蠩 樏殣氀 蒮 蹢鎒 滍 鸄齴 櫧櫋瀩 鬄鵊鵙 莃荶衒, 毸溠 橀 簎艜薤 莃荶衒 翣聜蒢
1188斔櫅檷 晛桼桾 拻敁柧 犿玒 膣, 墐 笓粊紒 bacon 鼀齕, 蔝蓶蓨 顊顃餭 姴怤 骱 暕 蹢鎒鎛 藒襓謥 鄻鎟霣
1182斔櫅檷 晛桼桾 拻敁柧 犿玒 膣, 墐 笓粊紒 bacon 鼀齕, 蔝蓶蓨 顊顃餭 姴怤 骱 暕 蹢鎒鎛 藒襓謥 鄻鎟霣