vty/test/VerifySimpleSpanGeneration.hs
1{-# LANGUAGE DisambiguateRecordFields #-}
2{-# LANGUAGE NamedFieldPuns #-}
3module VerifySimpleSpanGeneration where
5import Verify.Graphics.Vty.Prelude
7import Verify.Graphics.Vty.Image
8import Verify.Graphics.Vty.Picture
9import Verify.Graphics.Vty.Span
11import Graphics.Vty.Debug
12import Graphics.Vty.PictureToSpans
16import qualified Data.Vector as Vector
18unit_image_and_zero_window_0 :: UnitImage -> EmptyWindow -> Bool
19unit_image_and_zero_window_0 (UnitImage _ i) (EmptyWindow w) =
20 let p = pic_for_image i
21 ops = display_ops_for_pic p (region_for_window w)
22 in display_ops_columns ops == 0 && display_ops_rows ops == 0
24unit_image_and_zero_window_1 :: UnitImage -> EmptyWindow -> Bool
25unit_image_and_zero_window_1 (UnitImage _ i) (EmptyWindow w) =
26 let p = pic_for_image i
27 ops = display_ops_for_pic p (region_for_window w)
28 in ( span_ops_effected_rows ops == 0 ) && ( all_spans_have_width ops 0 )
30horiz_span_image_and_zero_window_0 :: SingleRowSingleAttrImage -> EmptyWindow -> Bool
31horiz_span_image_and_zero_window_0 (SingleRowSingleAttrImage { row_image = i }) (EmptyWindow w) =
32 let p = pic_for_image i
33 ops = display_ops_for_pic p (region_for_window w)
34 in display_ops_columns ops == 0 && display_ops_rows ops == 0
36horiz_span_image_and_zero_window_1 :: SingleRowSingleAttrImage -> EmptyWindow -> Bool
37horiz_span_image_and_zero_window_1 (SingleRowSingleAttrImage { row_image = i }) (EmptyWindow w) =
38 let p = pic_for_image i
39 ops = display_ops_for_pic p (region_for_window w)
40 in ( span_ops_effected_rows ops == 0 ) && ( all_spans_have_width ops 0 )
42horiz_span_image_and_equal_window_0 :: SingleRowSingleAttrImage -> Result
43horiz_span_image_and_equal_window_0 (SingleRowSingleAttrImage { row_image = i, expected_columns = c }) =
44 let p = pic_for_image i
46 ops = display_ops_for_pic p (region_for_window w)
47 in verify_all_spans_have_width i ops c
49horiz_span_image_and_equal_window_1 :: SingleRowSingleAttrImage -> Bool
50horiz_span_image_and_equal_window_1 (SingleRowSingleAttrImage { row_image = i, expected_columns = c }) =
51 let p = pic_for_image i
53 ops = display_ops_for_pic p (region_for_window w)
54 in span_ops_effected_rows ops == 1
56horiz_span_image_and_lesser_window_0 :: SingleRowSingleAttrImage -> Result
57horiz_span_image_and_lesser_window_0 (SingleRowSingleAttrImage { row_image = i, expected_columns = c }) =
58 let p = pic_for_image i
59 lesser_width = c `div` 2
60 w = MockWindow lesser_width 1
61 ops = display_ops_for_pic p (region_for_window w)
62 in verify_all_spans_have_width i ops lesser_width
64single_attr_single_span_stack_cropped_0 :: SingleAttrSingleSpanStack -> Result
65single_attr_single_span_stack_cropped_0 stack =
66 let p = pic_for_image (stack_image stack)
67 w = MockWindow (stack_width stack `div` 2) (stack_height stack)
68 ops = display_ops_for_pic p (region_for_window w)
69 in verify_all_spans_have_width (stack_image stack) ops (stack_width stack `div` 2)
71single_attr_single_span_stack_cropped_1 :: SingleAttrSingleSpanStack -> Bool
72single_attr_single_span_stack_cropped_1 stack =
73 let p = pic_for_image (stack_image stack)
74 expected_row_count = stack_height stack `div` 2
75 w = MockWindow (stack_width stack) expected_row_count
76 ops = display_ops_for_pic p (region_for_window w)
77 actual_row_count = span_ops_effected_rows ops
78 in expected_row_count == actual_row_count
80single_attr_single_span_stack_cropped_2 :: SingleAttrSingleSpanStack -> SingleAttrSingleSpanStack -> Result
81single_attr_single_span_stack_cropped_2 stack_0 stack_1 =
82 let p = pic_for_image (stack_image stack_0 <|> stack_image stack_1)
83 w = MockWindow (stack_width stack_0) (image_height (pic_image p))
84 ops = display_ops_for_pic p (region_for_window w)
85 in verify_all_spans_have_width (pic_image p) ops (stack_width stack_0)
87single_attr_single_span_stack_cropped_3 :: SingleAttrSingleSpanStack -> SingleAttrSingleSpanStack -> Bool
88single_attr_single_span_stack_cropped_3 stack_0 stack_1 =
89 let p = pic_for_image (stack_image stack_0 <|> stack_image stack_1)
90 w = MockWindow (image_width (pic_image p)) expected_row_count
91 ops = display_ops_for_pic p (region_for_window w)
92 expected_row_count = image_height (pic_image p) `div` 2
93 actual_row_count = span_ops_effected_rows ops
94 in expected_row_count == actual_row_count
96single_attr_single_span_stack_cropped_4 :: SingleAttrSingleSpanStack -> SingleAttrSingleSpanStack -> Result
97single_attr_single_span_stack_cropped_4 stack_0 stack_1 =
98 let p = pic_for_image (stack_image stack_0 <-> stack_image stack_1)
99 w = MockWindow expected_width (image_height (pic_image p))
100 ops = display_ops_for_pic p (region_for_window w)
101 expected_width = image_width (pic_image p) `div` 2
102 in verify_all_spans_have_width (pic_image p) ops expected_width
104single_attr_single_span_stack_cropped_5 :: SingleAttrSingleSpanStack -> SingleAttrSingleSpanStack -> Bool
105single_attr_single_span_stack_cropped_5 stack_0 stack_1 =
106 let p = pic_for_image (stack_image stack_0 <-> stack_image stack_1)
107 w = MockWindow (image_width (pic_image p)) (stack_height stack_0)
108 ops = display_ops_for_pic p (region_for_window w)
109 expected_row_count = stack_height stack_0
110 actual_row_count = span_ops_effected_rows ops
111 in expected_row_count == actual_row_count
113horiz_span_image_and_greater_window_0 :: SingleRowSingleAttrImage -> Result
114horiz_span_image_and_greater_window_0 (SingleRowSingleAttrImage { row_image = i, expected_columns = c }) =
115 let p = pic_for_image i
116 -- SingleRowSingleAttrImage always has width >= 1
117 greater_width = c * 2
118 w = MockWindow greater_width 1
119 ops = display_ops_for_pic p (region_for_window w)
120 in verify_all_spans_have_width i ops greater_width
122arb_image_is_cropped :: DefaultImage -> MockWindow -> Bool
123arb_image_is_cropped (DefaultImage image) win@(MockWindow w h) =
124 let pic = pic_for_image image
125 ops = display_ops_for_pic pic (region_for_window win)
126 in ( span_ops_effected_rows ops == h ) && ( all_spans_have_width ops w )
128span_ops_actually_fill_rows :: DefaultPic -> Bool
129span_ops_actually_fill_rows (DefaultPic pic win) =
130 let ops = display_ops_for_pic pic (region_for_window win)
131 expected_row_count = region_height (region_for_window win)
132 actual_row_count = span_ops_effected_rows ops
133 in expected_row_count == actual_row_count
135span_ops_actually_fill_columns :: DefaultPic -> Bool
136span_ops_actually_fill_columns (DefaultPic pic win) =
137 let ops = display_ops_for_pic pic (region_for_window win)
138 expected_column_count = region_width (region_for_window win)
139 in all_spans_have_width ops expected_column_count
141first_span_op_sets_attr :: DefaultPic -> Bool
142first_span_op_sets_attr DefaultPic { default_pic = pic, default_win = win } =
143 let ops = display_ops_for_pic pic (region_for_window win)
144 in all ( is_attr_span_op . Vector.head ) ( Vector.toList ops )
146single_attr_single_span_stack_op_coverage :: SingleAttrSingleSpanStack -> Result
147single_attr_single_span_stack_op_coverage stack =
148 let p = pic_for_image (stack_image stack)
149 w = MockWindow (stack_width stack) (stack_height stack)
150 ops = display_ops_for_pic p (region_for_window w)
151 in verify_all_spans_have_width (stack_image stack) ops (stack_width stack)
153image_coverage_matches_bounds :: Image -> Result
154image_coverage_matches_bounds i =
155 let p = pic_for_image i
156 r = (image_width i,image_height i)
157 ops = display_ops_for_pic p r
158 in verify_all_spans_have_width i ops (image_width i)
162 [ verify "unit image is cropped when window size == (0,0) [0]" unit_image_and_zero_window_0
163 , verify "unit image is cropped when window size == (0,0) [1]" unit_image_and_zero_window_1
164 , verify "horiz span image is cropped when window size == (0,0) [0]" horiz_span_image_and_zero_window_0
165 , verify "horiz span image is cropped when window size == (0,0) [1]" horiz_span_image_and_zero_window_1
166 , verify "horiz span image is not cropped when window size == size of image [width]" horiz_span_image_and_equal_window_0
167 , verify "horiz span image is not cropped when window size == size of image [height]" horiz_span_image_and_equal_window_1
168 , verify "horiz span image is not cropped when window size < size of image [width]" horiz_span_image_and_lesser_window_0
169 , verify "horiz span image is not cropped when window size > size of image [width]" horiz_span_image_and_greater_window_0
170 , verify "first span op is always to set the text attribute" first_span_op_sets_attr
171 , verify "a stack of single attr text spans should define content for all the columns [output region == size of stack]"
172 single_attr_single_span_stack_op_coverage
173 , verify "a single attr text span is cropped when window size < size of stack image [width]"
174 single_attr_single_span_stack_cropped_0
175 , verify "a single attr text span is cropped when window size < size of stack image [height]"
176 single_attr_single_span_stack_cropped_1
177 , verify "single attr text span <|> single attr text span display cropped. [width]"
178 single_attr_single_span_stack_cropped_2
179 , verify "single attr text span <|> single attr text span display cropped. [height]"
180 single_attr_single_span_stack_cropped_3
181 , verify "single attr text span <-> single attr text span display cropped. [width]"
182 single_attr_single_span_stack_cropped_4
183 , verify "single attr text span <-> single attr text span display cropped. [height]"
184 single_attr_single_span_stack_cropped_5
185 , verify "an arbitrary image when rendered to a window of the same size will cover the entire window"
186 image_coverage_matches_bounds
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