| 192 | } |
| 193 | |
| 194 | static void test_rdev_wrap(void **state) |
| 195 | { |
| 196 | struct region_device child; |
| 197 | const size_t offs = VAL(0xf); |
| 198 | const size_t wrap_size = VAL(2); |
| 199 | /* Known API limitation -- can't exactly touch address space limit from below. */ |
| 200 | const size_t fit_size = VAL(1) - 1; |
| 201 | |
| 202 | /* For the 'wrap' cases, the underlying rdev_ops aren't even called, so only add |
| 203 | expectations for the 'fit' cases. */ |
| 204 | expect_value(mock_mmap, offset, offs); |
| 205 | expect_value(mock_readat, offset, offs); |
| 206 | expect_value(mock_writeat, offset, offs); |
| 207 | expect_value(mock_eraseat, offset, offs); |
| 208 | |
| 209 | expect_value(mock_mmap, size, fit_size); |
| 210 | expect_value(mock_readat, size, fit_size); |
| 211 | expect_value(mock_writeat, size, fit_size); |
| 212 | expect_value(mock_eraseat, size, fit_size); |
| 213 | |
| 214 | rdev_mock_defaults(); |
| 215 | |
| 216 | /* Accesses to regions that wrap around the end of the address space should fail. */ |
| 217 | assert_null(rdev_mmap(&mock_rdev, offs, wrap_size)); |
| 218 | assert_int_equal(rdev_readat(&mock_rdev, mock_buffer, offs, wrap_size), -1); |
| 219 | assert_int_equal(rdev_writeat(&mock_rdev, mock_buffer, offs, wrap_size), -1); |
| 220 | assert_int_equal(rdev_eraseat(&mock_rdev, offs, wrap_size), -1); |
| 221 | assert_int_equal(rdev_chain(&child, &mock_rdev, offs, wrap_size), -1); |
| 222 | |
| 223 | /* Just barely touching the end of the address space (and the rdev) should be fine. */ |
| 224 | assert_ptr_equal(rdev_mmap(&mock_rdev, offs, fit_size), mmap_result); |
| 225 | assert_int_equal(rdev_readat(&mock_rdev, mock_buffer, offs, fit_size), fit_size); |
| 226 | assert_int_equal(rdev_writeat(&mock_rdev, mock_buffer, offs, fit_size), fit_size); |
| 227 | assert_int_equal(rdev_eraseat(&mock_rdev, offs, fit_size), fit_size); |
| 228 | assert_int_equal(rdev_chain(&child, &mock_rdev, offs, fit_size), 0); |
| 229 | } |
| 230 | |
| 231 | static void test_rdev_chain(void **state) |
| 232 | { |
nothing calls this directly
no test coverage detected