@@ -98,7 +98,7 @@ main = do
9898 case Terminfo.getCapability ti (Terminfo.tiGetStr cap_name) of
9999 Just cap_def -> do
100100 verify ( "\tparse cap " ++ cap_name ++ " -> " ++ show cap_def )
101− ( verify_parse_cap cap_def $ const (liftResult succeeded) )
101+ ( verify_parse_cap cap_def $ const ( return succeeded ) )
102102 return ()
103103 Nothing -> do
104104 return ()
@@ -110,9 +110,10 @@ main = do
110110 return ()
111111 return ()
112112
113−verify_parse_cap cap_string on_parse = do
114− case parse_cap_expression cap_string of
115− Left error -> liftResult $ failed { reason = "parse error " ++ show error }
113+verify_parse_cap cap_string on_parse = liftIOResult $ do
114+ parse_result <- parse_cap_expression cap_string
115+ case parse_result of
116+ Left error -> return $ failed { reason = "parse error " ++ show error }
116117 Right e -> on_parse e
117118
118119non_paramaterized_caps (NonParamCapString cap) = do
@@ -120,39 +121,42 @@ non_paramaterized_caps (NonParamCapString cap) = do
120121 let expected_count :: Word8 = toEnum $ length cap
121122 expected_bytes = map (toEnum . fromEnum) cap
122123 out_bytes = bytes_for_range e 0 expected_count
123− in verify_bytes_equal out_bytes expected_bytes
124+ in return $ verify_bytes_equal out_bytes expected_bytes
124125
125126literal_percent_caps (LiteralPercentCap cap_string expected_bytes) = do
126127 verify_parse_cap cap_string $ \e ->
127128 let expected_count :: Word8 = toEnum $ length expected_bytes
128129 out_bytes = collect_bytes e
129− in verify_bytes_equal out_bytes expected_bytes
130+ in return $ verify_bytes_equal out_bytes expected_bytes
130131
131132inc_first_two_caps (IncFirstTwoCap cap_string expected_bytes) = do
132133 verify_parse_cap cap_string $ \e ->
133134 let expected_count :: Word8 = toEnum $ length expected_bytes
134135 out_bytes = collect_bytes e
135− in verify_bytes_equal out_bytes expected_bytes
136+ in return $ verify_bytes_equal out_bytes expected_bytes
136137
137138push_param_caps (PushParamCap cap_string expected_param_count expected_bytes) = do
138139 verify_parse_cap cap_string $ \e ->
139140 let expected_count :: Word8 = toEnum $ length expected_bytes
140141 out_bytes = collect_bytes e
141142 out_param_count = param_count e
142− in verify_bytes_equal out_bytes expected_bytes
143− .&. out_param_count == expected_param_count
143+ in return $ if out_param_count == expected_param_count
144+ then verify_bytes_equal out_bytes expected_bytes
145+ else failed { reason = "out param count /= expected param count" }
144146
145147dec_print_param_caps (DecPrintCap cap_string expected_param_count expected_bytes) = do
146148 verify_parse_cap cap_string $ \e ->
147149 let expected_count :: Word8 = toEnum $ length expected_bytes
148150 out_bytes = collect_bytes e
149151 out_param_count = param_count e
150− in verify_bytes_equal out_bytes expected_bytes
151− .&. out_param_count == expected_param_count
152+ in return $ if out_param_count == expected_param_count
153+ then verify_bytes_equal out_bytes expected_bytes
154+ else failed { reason = "out param count /= expected param count" }
152155
153156print_cap ti cap_name = do
154157 putStrLn $ cap_name ++ ": " ++ show (from_capname ti cap_name)
155158
156159print_expression ti cap_name = do
157− putStrLn $ cap_name ++ ": " ++ show (parse_cap_expression $ from_capname ti cap_name)
160+ parse_result <- parse_cap_expression $ from_capname ti cap_name
161+ putStrLn $ cap_name ++ ": " ++ show parse_result
158162