| 219 | // |
| 220 | // |
| 221 | void streamPosition(ObjPtr<io::IReadableStream> pStream) |
| 222 | { |
| 223 | static const io::IoOffset nOffset = static_cast<io::IoOffset>(c_nStreamSize); |
| 224 | |
| 225 | // Test size for IReadableStream indirectly |
| 226 | REQUIRE(pStream->getSize() == c_nStreamSize); |
| 227 | |
| 228 | SECTION("getPosition") |
| 229 | { |
| 230 | auto fn = [&]() |
| 231 | { |
| 232 | REQUIRE(pStream->getPosition() == 0); |
| 233 | }; |
| 234 | REQUIRE_NOTHROW(fn()); |
| 235 | } |
| 236 | |
| 237 | |
| 238 | SECTION("setPositionDefault") |
| 239 | { |
| 240 | auto fn1 = [&]() |
| 241 | { |
| 242 | REQUIRE(pStream->setPosition(nOffset / 2) == 0); |
| 243 | REQUIRE(pStream->getPosition() == c_nStreamSize / 2); |
| 244 | }; |
| 245 | REQUIRE_NOTHROW(fn1()); |
| 246 | |
| 247 | auto fn2 = [&]() |
| 248 | { |
| 249 | REQUIRE(pStream->setPosition(nOffset) == c_nStreamSize / 2); |
| 250 | REQUIRE(pStream->getPosition() == c_nStreamSize); |
| 251 | }; |
| 252 | REQUIRE_NOTHROW(fn2()); |
| 253 | |
| 254 | auto fn3 = [&]() |
| 255 | { |
| 256 | REQUIRE(pStream->setPosition(0) == c_nStreamSize); |
| 257 | REQUIRE(pStream->getPosition() == 0); |
| 258 | }; |
| 259 | REQUIRE_NOTHROW(fn3()); |
| 260 | } |
| 261 | |
| 262 | SECTION("setPositionDefaultFail") |
| 263 | { |
| 264 | auto fn = [&]() |
| 265 | { |
| 266 | pStream->setPosition(nOffset + 1); |
| 267 | }; |
| 268 | REQUIRE_THROWS_AS(fn(), error::InvalidArgument); |
| 269 | } |
| 270 | |
| 271 | |
| 272 | SECTION("setPositionBegin") |
| 273 | { |
| 274 | auto fn1 = [&]() |
| 275 | { |
| 276 | REQUIRE(pStream->setPosition(nOffset / 2, io::StreamPos::Begin) == 0); |
| 277 | REQUIRE(pStream->getPosition() == c_nStreamSize / 2); |
| 278 | }; |
no test coverage detected