1{-# LANGUAGE DisambiguateRecordFields #-}
2{-# LANGUAGE NamedFieldPuns #-}
5import Verify.Graphics.Vty.Picture
6import Verify.Graphics.Vty.Image
7import Verify.Graphics.Vty.Span
8import Verify.Graphics.Vty.DisplayRegion
10import Graphics.Vty.Debug
16unit_image_and_zero_window_0 :: UnitImage -> EmptyWindow -> Bool
17unit_image_and_zero_window_0 (UnitImage _ i) (EmptyWindow w) =
18 let p = pic_for_image i
19 spans = spans_for_pic p (region_for_window w)
20 in span_ops_columns spans == 0 && span_ops_rows spans == 0
22unit_image_and_zero_window_1 :: UnitImage -> EmptyWindow -> Bool
23unit_image_and_zero_window_1 (UnitImage _ i) (EmptyWindow w) =
24 let p = pic_for_image i
25 spans = spans_for_pic p (region_for_window w)
26 in ( span_ops_effected_rows spans == 0 ) && ( all_spans_have_width spans 0 )
28horiz_span_image_and_zero_window_0 :: SingleRowSingleAttrImage -> EmptyWindow -> Bool
29horiz_span_image_and_zero_window_0 (SingleRowSingleAttrImage { row_image = i }) (EmptyWindow w) =
30 let p = pic_for_image i
31 spans = spans_for_pic p (region_for_window w)
32 in span_ops_columns spans == 0 && span_ops_rows spans == 0
34horiz_span_image_and_zero_window_1 :: SingleRowSingleAttrImage -> EmptyWindow -> Bool
35horiz_span_image_and_zero_window_1 (SingleRowSingleAttrImage { row_image = i }) (EmptyWindow w) =
36 let p = pic_for_image i
37 spans = spans_for_pic p (region_for_window w)
38 in ( span_ops_effected_rows spans == 0 ) && ( all_spans_have_width spans 0 )
40horiz_span_image_and_equal_window_0 :: SingleRowSingleAttrImage -> Result
41horiz_span_image_and_equal_window_0 (SingleRowSingleAttrImage { row_image = i, expected_columns = c }) =
42 let p = pic_for_image i
44 spans = spans_for_pic p (region_for_window w)
45 in verify_all_spans_have_width i spans c
47horiz_span_image_and_equal_window_1 :: SingleRowSingleAttrImage -> Bool
48horiz_span_image_and_equal_window_1 (SingleRowSingleAttrImage { row_image = i, expected_columns = c }) =
49 let p = pic_for_image i
51 spans = spans_for_pic p (region_for_window w)
52 in span_ops_effected_rows spans == 1
54horiz_span_image_and_lesser_window_0 :: SingleRowSingleAttrImage -> Result
55horiz_span_image_and_lesser_window_0 (SingleRowSingleAttrImage { row_image = i, expected_columns = c }) =
56 let p = pic_for_image i
57 lesser_width = c `div` 2
58 w = DebugWindow lesser_width 1
59 spans = spans_for_pic p (region_for_window w)
60 in verify_all_spans_have_width i spans lesser_width
62single_attr_single_span_stack_cropped_0 :: SingleAttrSingleSpanStack -> Result
63single_attr_single_span_stack_cropped_0 stack =
64 let p = pic_for_image (stack_image stack)
65 w = DebugWindow (stack_width stack `div` 2) (stack_height stack)
66 spans = spans_for_pic p (region_for_window w)
67 in verify_all_spans_have_width (stack_image stack) spans (stack_width stack `div` 2)
69single_attr_single_span_stack_cropped_1 :: SingleAttrSingleSpanStack -> Bool
70single_attr_single_span_stack_cropped_1 stack =
71 let p = pic_for_image (stack_image stack)
72 expected_row_count = stack_height stack `div` 2
73 w = DebugWindow (stack_width stack) expected_row_count
74 spans = spans_for_pic p (region_for_window w)
75 actual_row_count = span_ops_effected_rows spans
76 in expected_row_count == actual_row_count
78single_attr_single_span_stack_cropped_2 :: SingleAttrSingleSpanStack -> SingleAttrSingleSpanStack -> Result
79single_attr_single_span_stack_cropped_2 stack_0 stack_1 =
80 let p = pic_for_image (stack_image stack_0 <|> stack_image stack_1)
81 w = DebugWindow (stack_width stack_0) (image_height (pic_image p))
82 spans = spans_for_pic p (region_for_window w)
83 in verify_all_spans_have_width (pic_image p) spans (stack_width stack_0)
85single_attr_single_span_stack_cropped_3 :: SingleAttrSingleSpanStack -> SingleAttrSingleSpanStack -> Bool
86single_attr_single_span_stack_cropped_3 stack_0 stack_1 =
87 let p = pic_for_image (stack_image stack_0 <|> stack_image stack_1)
88 w = DebugWindow (image_width (pic_image p)) expected_row_count
89 spans = spans_for_pic p (region_for_window w)
90 expected_row_count = image_height (pic_image p) `div` 2
91 actual_row_count = span_ops_effected_rows spans
92 in expected_row_count == actual_row_count
94single_attr_single_span_stack_cropped_4 :: SingleAttrSingleSpanStack -> SingleAttrSingleSpanStack -> Result
95single_attr_single_span_stack_cropped_4 stack_0 stack_1 =
96 let p = pic_for_image (stack_image stack_0 <-> stack_image stack_1)
97 w = DebugWindow expected_width (image_height (pic_image p))
98 spans = spans_for_pic p (region_for_window w)
99 expected_width = image_width (pic_image p) `div` 2
100 in verify_all_spans_have_width (pic_image p) spans expected_width
102single_attr_single_span_stack_cropped_5 :: SingleAttrSingleSpanStack -> SingleAttrSingleSpanStack -> Bool
103single_attr_single_span_stack_cropped_5 stack_0 stack_1 =
104 let p = pic_for_image (stack_image stack_0 <-> stack_image stack_1)
105 w = DebugWindow (image_width (pic_image p)) (stack_height stack_0)
106 spans = spans_for_pic p (region_for_window w)
107 expected_row_count = stack_height stack_0
108 actual_row_count = span_ops_effected_rows spans
109 in expected_row_count == actual_row_count
111horiz_span_image_and_greater_window_0 :: SingleRowSingleAttrImage -> Result
112horiz_span_image_and_greater_window_0 (SingleRowSingleAttrImage { row_image = i, expected_columns = c }) =
113 let p = pic_for_image i
114 -- SingleRowSingleAttrImage always has width >= 1
115 greater_width = c * 2
116 w = DebugWindow greater_width 1
117 spans = spans_for_pic p (region_for_window w)
118 in verify_all_spans_have_width i spans greater_width
120arb_image_is_cropped :: DefaultImage -> DebugWindow -> Bool
121arb_image_is_cropped (DefaultImage image _) win@(DebugWindow w h) =
122 let pic = pic_for_image image
123 spans = spans_for_pic pic (region_for_window win)
124 in ( span_ops_effected_rows spans == h ) && ( all_spans_have_width spans w )
126span_ops_actually_fill_rows :: DefaultPic -> Bool
127span_ops_actually_fill_rows (DefaultPic pic win _) =
128 let spans = spans_for_pic pic (region_for_window win)
129 expected_row_count = region_height (region_for_window win)
130 actual_row_count = span_ops_effected_rows spans
131 in expected_row_count == actual_row_count
133span_ops_actually_fill_columns :: DefaultPic -> Bool
134span_ops_actually_fill_columns (DefaultPic pic win _) =
135 let spans = spans_for_pic pic (region_for_window win)
136 expected_column_count = region_width (region_for_window win)
137 in all_spans_have_width spans expected_column_count
139first_span_op_sets_attr :: DefaultPic -> Bool
140first_span_op_sets_attr DefaultPic { default_pic = pic, default_win = win } =
141 let spans = spans_for_pic pic (region_for_window win)
142 in all ( is_attr_span_op . head ) ( elems $ row_ops spans )
144single_attr_single_span_stack_op_coverage :: SingleAttrSingleSpanStack -> Result
145single_attr_single_span_stack_op_coverage stack =
146 let p = pic_for_image (stack_image stack)
147 w = DebugWindow (stack_width stack) (stack_height stack)
148 spans = spans_for_pic p (region_for_window w)
149 in verify_all_spans_have_width (stack_image stack) spans (stack_width stack)
153 verify "unit image is cropped when window size == (0,0) [0]" unit_image_and_zero_window_0
154 verify "unit image is cropped when window size == (0,0) [1]" unit_image_and_zero_window_1
155 verify "horiz span image is cropped when window size == (0,0) [0]" horiz_span_image_and_zero_window_0
156 verify "horiz span image is cropped when window size == (0,0) [1]" horiz_span_image_and_zero_window_1
157 verify "horiz span image is not cropped when window size == size of image [width]" horiz_span_image_and_equal_window_0
158 verify "horiz span image is not cropped when window size == size of image [height]" horiz_span_image_and_equal_window_1
159 verify "horiz span image is not cropped when window size < size of image [width]" horiz_span_image_and_lesser_window_0
160 verify "horiz span image is not cropped when window size > size of image [width]" horiz_span_image_and_greater_window_0
161 verify "arbitrary image is padded or cropped" arb_image_is_cropped
162 verify "The span ops actually define content for all the rows in the output region" span_ops_actually_fill_rows
163 verify "The span ops actually define content for all the columns in the output region" span_ops_actually_fill_columns
164 verify "first span op is always to set the text attribute" first_span_op_sets_attr
165 verify "a stack of single attr text spans should define content for all the columns [output region == size of stack]"
166 single_attr_single_span_stack_op_coverage
167 verify "a single attr text span is cropped when window size < size of stack image [width]"
168 single_attr_single_span_stack_cropped_0
169 verify "a single attr text span is cropped when window size < size of stack image [height]"
170 single_attr_single_span_stack_cropped_1
171 verify "single attr text span <|> single attr text span cropped. [width]"
172 single_attr_single_span_stack_cropped_2
173 verify "single attr text span <|> single attr text span cropped. [height]"
174 single_attr_single_span_stack_cropped_3
175 verify "single attr text span <-> single attr text span cropped. [width]"
176 single_attr_single_span_stack_cropped_4
177 verify "single attr text span <-> single attr text span cropped. [height]"
178 single_attr_single_span_stack_cropped_5
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list