Changeset 3567 for libcaca/trunk/tests
- Timestamp:
- Jul 24, 2009, 8:48:27 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
libcaca/trunk/tests/dirty.cpp
r3557 r3567 42 42 { 43 43 caca_canvas_t *cv; 44 int i, dx, dy, dw, dh; 45 46 /* Check that the dirty rectangle contains the whole canvas 47 * upon creation. */ 48 cv = caca_create_canvas(WIDTH, HEIGHT); 49 i = caca_get_dirty_rect_count(cv); 50 CPPUNIT_ASSERT_EQUAL(i, 1); 51 52 caca_get_dirty_rect(cv, 0, &dx, &dy, &dw, &dh); 53 CPPUNIT_ASSERT_EQUAL(dx, 0); 54 CPPUNIT_ASSERT_EQUAL(dy, 0); 55 CPPUNIT_ASSERT_EQUAL(dw, caca_get_canvas_width(cv)); 56 CPPUNIT_ASSERT_EQUAL(dh, caca_get_canvas_height(cv)); 44 int dx, dy, dw, dh; 45 46 /* Check that we only have one dirty rectangle upon creation. */ 47 cv = caca_create_canvas(WIDTH, HEIGHT); 48 CPPUNIT_ASSERT_EQUAL(1, caca_get_dirty_rect_count(cv)); 49 50 /* Check that our only rectangle contains the whole canvas. */ 51 caca_get_dirty_rect(cv, 0, &dx, &dy, &dw, &dh); 52 CPPUNIT_ASSERT_EQUAL(0, dx); 53 CPPUNIT_ASSERT_EQUAL(0, dy); 54 CPPUNIT_ASSERT_EQUAL(WIDTH, dw); 55 CPPUNIT_ASSERT_EQUAL(HEIGHT, dh); 57 56 58 57 /* Invalidate the dirty rectangle and check that it stays so. */ 59 58 caca_clear_dirty_rect_list(cv); 60 i = caca_get_dirty_rect_count(cv); 61 CPPUNIT_ASSERT_EQUAL(i, 0); 59 CPPUNIT_ASSERT_EQUAL(0, caca_get_dirty_rect_count(cv)); 62 60 63 61 caca_free_canvas(cv); … … 67 65 { 68 66 caca_canvas_t *cv; 69 int i, dx, dy, dw, dh; 70 71 cv = caca_create_canvas(WIDTH, HEIGHT); 72 73 caca_clear_dirty_rect_list(cv); 74 caca_put_char(cv, 7, 3, 'x'); 75 i = caca_get_dirty_rect_count(cv); 76 CPPUNIT_ASSERT_EQUAL(i, 1); 77 caca_get_dirty_rect(cv, 0, &dx, &dy, &dw, &dh); 78 CPPUNIT_ASSERT_EQUAL(dx, 7); 79 CPPUNIT_ASSERT_EQUAL(dy, 3); 80 CPPUNIT_ASSERT_EQUAL(dw, 1); 81 CPPUNIT_ASSERT_EQUAL(dh, 1); 82 83 caca_clear_canvas(cv); 84 caca_clear_dirty_rect_list(cv); 85 caca_put_char(cv, 7, 3, 0x2f06 /* ⼆ */); 86 i = caca_get_dirty_rect_count(cv); 87 CPPUNIT_ASSERT_EQUAL(i, 1); 88 caca_get_dirty_rect(cv, 0, &dx, &dy, &dw, &dh); 89 CPPUNIT_ASSERT_EQUAL(dx, 7); 90 CPPUNIT_ASSERT_EQUAL(dy, 3); 91 CPPUNIT_ASSERT_EQUAL(dw, 2); 92 CPPUNIT_ASSERT_EQUAL(dh, 1); 93 94 caca_clear_canvas(cv); 95 caca_put_char(cv, 7, 3, 0x2f06 /* ⼆ */); 96 caca_clear_dirty_rect_list(cv); 97 caca_put_char(cv, 7, 3, 'x'); 98 i = caca_get_dirty_rect_count(cv); 99 CPPUNIT_ASSERT_EQUAL(i, 1); 100 caca_get_dirty_rect(cv, 0, &dx, &dy, &dw, &dh); 101 CPPUNIT_ASSERT_EQUAL(dx, 7); 102 CPPUNIT_ASSERT_EQUAL(dy, 3); 103 CPPUNIT_ASSERT_EQUAL(dw, 2); 104 CPPUNIT_ASSERT_EQUAL(dh, 1); 105 67 int dx, dy, dw, dh; 68 69 cv = caca_create_canvas(WIDTH, HEIGHT); 70 71 /* Check that one character creates a 1x1 dirty rect. */ 72 caca_clear_dirty_rect_list(cv); 73 caca_put_char(cv, 7, 3, 'x'); 74 75 CPPUNIT_ASSERT_EQUAL(1, caca_get_dirty_rect_count(cv)); 76 caca_get_dirty_rect(cv, 0, &dx, &dy, &dw, &dh); 77 CPPUNIT_ASSERT_EQUAL(7, dx); 78 CPPUNIT_ASSERT_EQUAL(3, dy); 79 CPPUNIT_ASSERT_EQUAL(1, dw); 80 CPPUNIT_ASSERT_EQUAL(1, dh); 81 82 /* Check that a fullwidth character creates a 2x1 dirty rect. */ 83 caca_clear_canvas(cv); 84 caca_clear_dirty_rect_list(cv); 85 caca_put_char(cv, 7, 3, 0x2f06 /* ⼆ */); 86 87 CPPUNIT_ASSERT_EQUAL(1, caca_get_dirty_rect_count(cv)); 88 caca_get_dirty_rect(cv, 0, &dx, &dy, &dw, &dh); 89 CPPUNIT_ASSERT_EQUAL(7, dx); 90 CPPUNIT_ASSERT_EQUAL(3, dy); 91 CPPUNIT_ASSERT_EQUAL(2, dw); 92 CPPUNIT_ASSERT_EQUAL(1, dh); 93 94 /* Check that a character over a fullwidth character creates a 95 * 2x1 dirty rect because of clobbering on the left side. */ 96 caca_clear_canvas(cv); 97 caca_put_char(cv, 7, 3, 0x2f06 /* ⼆ */); 98 caca_clear_dirty_rect_list(cv); 99 caca_put_char(cv, 7, 3, 'x'); 100 101 CPPUNIT_ASSERT_EQUAL(1, caca_get_dirty_rect_count(cv)); 102 caca_get_dirty_rect(cv, 0, &dx, &dy, &dw, &dh); 103 CPPUNIT_ASSERT_EQUAL(7, dx); 104 CPPUNIT_ASSERT_EQUAL(3, dy); 105 CPPUNIT_ASSERT_EQUAL(2, dw); 106 CPPUNIT_ASSERT_EQUAL(1, dh); 107 108 /* Check that a character over a fullwidth character creates a 109 * 2x1 dirty rect because of clobbering on the right side. */ 106 110 caca_clear_canvas(cv); 107 111 caca_put_char(cv, 7, 3, 0x2f06 /* ⼆ */); 108 112 caca_clear_dirty_rect_list(cv); 109 113 caca_put_char(cv, 8, 3, 'x'); 110 i = caca_get_dirty_rect_count(cv); 111 CPPUNIT_ASSERT_EQUAL(i, 1); 112 caca_get_dirty_rect(cv, 0, &dx, &dy, &dw, &dh); 113 CPPUNIT_ASSERT_EQUAL(dx, 7); 114 CPPUNIT_ASSERT_EQUAL(dy, 3); 115 CPPUNIT_ASSERT_EQUAL(dw, 2); 116 CPPUNIT_ASSERT_EQUAL(dh, 1); 117 114 115 CPPUNIT_ASSERT_EQUAL(1, caca_get_dirty_rect_count(cv)); 116 caca_get_dirty_rect(cv, 0, &dx, &dy, &dw, &dh); 117 CPPUNIT_ASSERT_EQUAL(7, dx); 118 CPPUNIT_ASSERT_EQUAL(3, dy); 119 CPPUNIT_ASSERT_EQUAL(2, dw); 120 CPPUNIT_ASSERT_EQUAL(1, dh); 121 122 /* Check that a fullwidth character over a fullwidth character creates 123 * a 3x1 dirty rect because of clobbering on the left side. */ 118 124 caca_clear_canvas(cv); 119 125 caca_put_char(cv, 7, 3, 0x2f06 /* ⼆ */); 120 126 caca_clear_dirty_rect_list(cv); 121 127 caca_put_char(cv, 6, 3, 0x2f06 /* ⼆ */); 122 i = caca_get_dirty_rect_count(cv); 123 CPPUNIT_ASSERT_EQUAL(i, 1); 124 caca_get_dirty_rect(cv, 0, &dx, &dy, &dw, &dh); 125 CPPUNIT_ASSERT_EQUAL(dx, 6); 126 CPPUNIT_ASSERT_EQUAL(dy, 3); 127 CPPUNIT_ASSERT_EQUAL(dw, 3); 128 CPPUNIT_ASSERT_EQUAL(dh, 1); 129 128 129 CPPUNIT_ASSERT_EQUAL(1, caca_get_dirty_rect_count(cv)); 130 caca_get_dirty_rect(cv, 0, &dx, &dy, &dw, &dh); 131 CPPUNIT_ASSERT_EQUAL(6, dx); 132 CPPUNIT_ASSERT_EQUAL(3, dy); 133 CPPUNIT_ASSERT_EQUAL(3, dw); 134 CPPUNIT_ASSERT_EQUAL(1, dh); 135 136 /* Check that a fullwidth character over a fullwidth character creates 137 * a 3x1 dirty rect because of clobbering on the right side. */ 130 138 caca_clear_canvas(cv); 131 139 caca_put_char(cv, 7, 3, 0x2f06 /* ⼆ */); 132 140 caca_clear_dirty_rect_list(cv); 133 141 caca_put_char(cv, 8, 3, 0x2f06 /* ⼆ */); 134 i = caca_get_dirty_rect_count(cv); 135 CPPUNIT_ASSERT_EQUAL( i, 1);136 caca_get_dirty_rect(cv, 0, &dx, &dy, &dw, &dh); 137 CPPUNIT_ASSERT_EQUAL( dx, 7);138 CPPUNIT_ASSERT_EQUAL( dy, 3);139 CPPUNIT_ASSERT_EQUAL( dw, 3);140 CPPUNIT_ASSERT_EQUAL( dh, 1);142 143 CPPUNIT_ASSERT_EQUAL(1, caca_get_dirty_rect_count(cv)); 144 caca_get_dirty_rect(cv, 0, &dx, &dy, &dw, &dh); 145 CPPUNIT_ASSERT_EQUAL(7, dx); 146 CPPUNIT_ASSERT_EQUAL(3, dy); 147 CPPUNIT_ASSERT_EQUAL(3, dw); 148 CPPUNIT_ASSERT_EQUAL(1, dh); 141 149 } 142 150 … … 144 152 { 145 153 caca_canvas_t *cv; 146 int i; 147 148 cv = caca_create_canvas(WIDTH, HEIGHT); 149 150 /* Check that pasting the same character does not cause 154 155 cv = caca_create_canvas(WIDTH, HEIGHT); 156 157 /* Check that pasting the same character does not cause a dirty 158 * rectangle to be created. */ 159 caca_put_char(cv, 7, 3, 'x'); 160 caca_clear_dirty_rect_list(cv); 161 caca_put_char(cv, 7, 3, 'x'); 162 163 CPPUNIT_ASSERT_EQUAL(0, caca_get_dirty_rect_count(cv)); 164 165 /* Check that pasting the same fullwidth character does not cause 151 166 * a dirty rectangle to be created. */ 152 caca_put_char(cv, 7, 3, 'x'); 153 caca_clear_dirty_rect_list(cv); 154 caca_put_char(cv, 7, 3, 'x'); 155 i = caca_get_dirty_rect_count(cv); 156 CPPUNIT_ASSERT_EQUAL(i, 0); 157 158 caca_clear_canvas(cv); 159 caca_put_char(cv, 7, 3, 0x2f06 /* ⼆ */); 160 caca_clear_dirty_rect_list(cv); 161 caca_put_char(cv, 7, 3, 0x2f06 /* ⼆ */); 162 i = caca_get_dirty_rect_count(cv); 163 CPPUNIT_ASSERT_EQUAL(i, 0); 167 caca_clear_canvas(cv); 168 caca_put_char(cv, 7, 3, 0x2f06 /* ⼆ */); 169 caca_clear_dirty_rect_list(cv); 170 caca_put_char(cv, 7, 3, 0x2f06 /* ⼆ */); 171 172 CPPUNIT_ASSERT_EQUAL(0, caca_get_dirty_rect_count(cv)); 164 173 } 165 174 … … 167 176 { 168 177 caca_canvas_t *cv; 169 int i, dx, dy, dw, dh; 170 171 cv = caca_create_canvas(WIDTH, HEIGHT); 172 caca_clear_dirty_rect_list(cv); 173 178 int dx, dy, dw, dh; 179 180 cv = caca_create_canvas(WIDTH, HEIGHT); 181 caca_clear_dirty_rect_list(cv); 182 183 /* Check that a filled box creates one dirty rectangle of the same 184 * size. */ 174 185 caca_fill_box(cv, 7, 3, 14, 9, 'x'); 175 i = caca_get_dirty_rect_count(cv); 176 CPPUNIT_ASSERT_EQUAL(i, 1); 177 caca_get_dirty_rect(cv, 0, &dx, &dy, &dw, &dh); 178 CPPUNIT_ASSERT_EQUAL(dx, 7); 179 CPPUNIT_ASSERT_EQUAL(dy, 3); 180 CPPUNIT_ASSERT_EQUAL(dw, 14); 181 CPPUNIT_ASSERT_EQUAL(dh, 9); 182 186 187 CPPUNIT_ASSERT_EQUAL(1, caca_get_dirty_rect_count(cv)); 188 caca_get_dirty_rect(cv, 0, &dx, &dy, &dw, &dh); 189 CPPUNIT_ASSERT_EQUAL(7, dx); 190 CPPUNIT_ASSERT_EQUAL(3, dy); 191 CPPUNIT_ASSERT_EQUAL(14, dw); 192 CPPUNIT_ASSERT_EQUAL(9, dh); 193 194 /* Check that the same filled box does not create a new dirty 195 * rectangle. */ 183 196 caca_clear_dirty_rect_list(cv); 184 197 caca_fill_box(cv, 7, 3, 14, 9, 'x'); 185 i = caca_get_dirty_rect_count(cv); 186 CPPUNIT_ASSERT_EQUAL( i, 0);198 199 CPPUNIT_ASSERT_EQUAL(0, caca_get_dirty_rect_count(cv)); 187 200 } 188 201 … … 199 212 /* Check that blitting a canvas make a dirty rectangle 200 213 * only for modified lines */ 214 /* FIXME: check this test's validity */ 201 215 202 216 caca_blit(cv, 1, 1, cv2, NULL); 203 217 i = caca_get_dirty_rect_count(cv); 204 CPPUNIT_ASSERT_EQUAL( i, 1);205 caca_get_dirty_rect(cv, 0, &dx, &dy, &dw, &dh); 206 207 CPPUNIT_ASSERT( dx == 1);208 CPPUNIT_ASSERT( dy == 1);209 CPPUNIT_ASSERT( dw >= 2);210 CPPUNIT_ASSERT( dh == 1);218 CPPUNIT_ASSERT_EQUAL(1, i); 219 caca_get_dirty_rect(cv, 0, &dx, &dy, &dw, &dh); 220 221 CPPUNIT_ASSERT(1 == dx); 222 CPPUNIT_ASSERT(1 == dy); 223 CPPUNIT_ASSERT(2 <= dw); 224 CPPUNIT_ASSERT(1 == dh); 211 225 212 226 caca_clear_canvas(cv); … … 215 229 /* Check that blitting a canvas make a dirty rectangle 216 230 * only for modified chars when we have a mask */ 231 /* FIXME: check this test's validity */ 217 232 218 233 caca_blit(cv, 1, 1, cv2, cv2); 219 234 i = caca_get_dirty_rect_count(cv); 220 CPPUNIT_ASSERT_EQUAL(i, 1); 221 caca_get_dirty_rect(cv, 0, &dx, &dy, &dw, &dh); 222 223 CPPUNIT_ASSERT(dx == 1); 224 CPPUNIT_ASSERT(dy == 1); 225 CPPUNIT_ASSERT(dw == 2); 226 CPPUNIT_ASSERT(dh == 1); 235 CPPUNIT_ASSERT_EQUAL(1, i); 236 caca_get_dirty_rect(cv, 0, &dx, &dy, &dw, &dh); 237 238 CPPUNIT_ASSERT(1 == dx); 239 CPPUNIT_ASSERT(1 == dy); 240 CPPUNIT_ASSERT(2 == dw); 241 CPPUNIT_ASSERT(1 == dh); 242 243 CPPUNIT_ASSERT(' ' == caca_get_char(cv, 0, 0)); 244 227 245 } 228 246 229 247 private: 230 static int const WIDTH = 80, HEIGHT = 50;248 static int const WIDTH, HEIGHT; 231 249 }; 232 250 251 int const DirtyTest::WIDTH = 80; 252 int const DirtyTest::HEIGHT = 50; 253 233 254 CPPUNIT_TEST_SUITE_REGISTRATION(DirtyTest); 234 255
Note: See TracChangeset
for help on using the changeset viewer.