Lines Matching +full:get +full:- +full:stream
4 * Use of this source code is governed by a BSD-style license that can be
46 static void test_loop_stream(skiatest::Reporter* reporter, SkStream* stream, in test_loop_stream() argument
49 void* tmp = storage.get(); in test_loop_stream()
52 size_t bytes = stream->read(tmp, len); in test_loop_stream()
58 size_t bytes = stream->read(tmp, 1); in test_loop_stream()
61 REPORTER_ASSERT(reporter, stream->isAtEnd()); in test_loop_stream()
82 SkFILEStream stream(path.c_str()); in test_filestreams() local
83 REPORTER_ASSERT(reporter, stream.isValid()); in test_filestreams()
84 test_loop_stream(reporter, &stream, s, 26, 100); in test_filestreams()
86 std::unique_ptr<SkStreamAsset> stream2(stream.duplicate()); in test_filestreams()
87 test_loop_stream(reporter, stream2.get(), s, 26, 100); in test_filestreams()
92 SkFILEStream stream(file); in test_filestreams() local
93 REPORTER_ASSERT(reporter, stream.isValid()); in test_filestreams()
94 test_loop_stream(reporter, &stream, s, 26, 100); in test_filestreams()
96 std::unique_ptr<SkStreamAsset> stream2(stream.duplicate()); in test_filestreams()
97 test_loop_stream(reporter, stream2.get(), s, 26, 100); in test_filestreams()
119 std::unique_ptr<SkStreamAsset> stream(ds.detachAsStream()); in TestWStream() local
120 REPORTER_ASSERT(reporter, 100 * 26 == stream->getLength()); in TestWStream()
122 test_loop_stream(reporter, stream.get(), s, 26, 100); in TestWStream()
124 std::unique_ptr<SkStreamAsset> stream2(stream->duplicate()); in TestWStream()
125 test_loop_stream(reporter, stream2.get(), s, 26, 100); in TestWStream()
127 std::unique_ptr<SkStreamAsset> stream3(stream->fork()); in TestWStream()
128 REPORTER_ASSERT(reporter, stream3->isAtEnd()); in TestWStream()
130 size_t bytes = stream->read(&tmp, 1); in TestWStream()
132 stream3->rewind(); in TestWStream()
133 test_loop_stream(reporter, stream3.get(), s, 26, 100); in TestWStream()
143 std::unique_ptr<SkStreamAsset> stream(ds.detachAsStream()); in TestWStream() local
145 test_loop_stream(reporter, stream.get(), s, 26, 100); in TestWStream()
147 std::unique_ptr<SkStreamAsset> stream2(stream->duplicate()); in TestWStream()
148 test_loop_stream(reporter, stream2.get(), s, 26, 100); in TestWStream()
180 if (!rstream->readPackedUInt(&n)) { in TestPackedUInt()
192 REPORTER_ASSERT(reporter, memStream->read(nullptr, 0) == 0); in TestDereferencingData()
193 // Reading non-zero bytes from an empty stream should cleanly read zero bytes. in TestDereferencingData()
195 REPORTER_ASSERT(reporter, memStream->read(buf, sizeof(buf)) == 0); in TestDereferencingData()
196 memStream->getMemoryBase(); in TestDereferencingData()
197 (void)memStream->getData(); in TestDereferencingData()
209 DEF_TEST(Stream, reporter) { in DEF_TEST() argument
222 SkStream* stream, size_t bytesToPeek) { in compare_peek_to_read() argument
227 void* peekPtr = peekStorage.get(); in compare_peek_to_read()
228 void* readPtr = peekStorage.get(); in compare_peek_to_read()
230 const size_t bytesPeeked = stream->peek(peekPtr, bytesToPeek); in compare_peek_to_read()
231 const size_t bytesRead = stream->read(readPtr, bytesToPeek); in compare_peek_to_read()
233 // bytesRead should only be less than attempted if the stream is at the in compare_peek_to_read()
235 REPORTER_ASSERT(reporter, bytesRead == bytesToPeek || stream->isAtEnd()); in compare_peek_to_read()
241 // A stream should never be able to peek more than it can read. in compare_peek_to_read()
244 return bytesRead - bytesPeeked; in compare_peek_to_read()
247 static void test_fully_peekable_stream(skiatest::Reporter* r, SkStream* stream, size_t limit) { in test_fully_peekable_stream() argument
248 for (size_t i = 1; !stream->isAtEnd(); i++) { in test_fully_peekable_stream()
249 REPORTER_ASSERT(r, compare_peek_to_read(r, stream, i) == 0); in test_fully_peekable_stream()
264 for (size_t i = 1; !bufferedStream->isAtEnd(); i++) { in test_peeking_front_buffered_stream()
265 const size_t unpeekableBytes = compare_peek_to_read(r, bufferedStream.get(), i); in test_peeking_front_buffered_stream()
272 REPORTER_ASSERT(r, peeked + i - unpeekableBytes >= bufferSize); in test_peeking_front_buffered_stream()
289 REPORTER_ASSERT(r, bufferedStream->skip(start) == start); in test_peeking_front_buffered_stream()
291 const size_t bytesPeeked = bufferedStream->peek(peekStorage.get(), bytesToPeek); in test_peeking_front_buffered_stream()
299 const size_t bytesRead = bufferedStream->read(readStorage.get(), bytesPeeked); in test_peeking_front_buffered_stream()
301 REPORTER_ASSERT(r, !memcmp(peekStorage.get(), readStorage.get(), bytesPeeked)); in test_peeking_front_buffered_stream()
304 REPORTER_ASSERT(r, bufferedStream->rewind()); in test_peeking_front_buffered_stream()
311 // TODO(stephana): Re-evaluate if we need this in the future.
313 // Test a memory stream. in DEF_TEST()
318 // Test an arbitrary file stream. file streams do not support peeking. in DEF_TEST()
329 if (!data || data->size() == 0) { in DEF_TEST()
333 if (!wStream.isValid() || !wStream.write(data->data(), data->size())) { in DEF_TEST()
345 REPORTER_ASSERT(reporter, fileStream.peek(storage.get(), i) == 0); in DEF_TEST()
361 if (asset->getLength() != expected->size()) { in stream_peek_test()
367 const uint8_t* expect = expected->bytes(); in stream_peek_test()
368 for (size_t i = 0; i < asset->getLength(); ++i) { in stream_peek_test()
370 SkToU32(std::min(sizeof(buffer), asset->getLength() - i)); in stream_peek_test()
374 SkASSERT(size + i <= asset->getLength()); in stream_peek_test()
375 if (asset->peek(buffer, size) < size) { in stream_peek_test()
384 REPORTER_ASSERT(rep, 1 == asset->read(&value, 1)); in stream_peek_test()
410 sk_sp<SkData> expected(SkData::MakeUninitialized(asset->getLength())); in DEF_TEST()
411 uint8_t* expectedPtr = static_cast<uint8_t*>(expected->writable_data()); in DEF_TEST()
416 for (size_t i = 0; i < asset->getLength(); ++i) { in DEF_TEST()
419 stream_peek_test(rep, asset.get(), expected.get()); in DEF_TEST()
423 SkMemoryStream stream(100); in DEF_TEST() local
424 REPORTER_ASSERT(rep, !StreamRemainingLengthIsBelow(&stream, 0)); in DEF_TEST()
425 REPORTER_ASSERT(rep, !StreamRemainingLengthIsBelow(&stream, 90)); in DEF_TEST()
426 REPORTER_ASSERT(rep, !StreamRemainingLengthIsBelow(&stream, 100)); in DEF_TEST()
428 REPORTER_ASSERT(rep, StreamRemainingLengthIsBelow(&stream, 101)); in DEF_TEST()
429 REPORTER_ASSERT(rep, StreamRemainingLengthIsBelow(&stream, ULONG_MAX)); in DEF_TEST()
432 REPORTER_ASSERT(rep, stream.read(buff, 75) == 75); in DEF_TEST()
434 REPORTER_ASSERT(rep, !StreamRemainingLengthIsBelow(&stream, 0)); in DEF_TEST()
435 REPORTER_ASSERT(rep, !StreamRemainingLengthIsBelow(&stream, 24)); in DEF_TEST()
436 REPORTER_ASSERT(rep, !StreamRemainingLengthIsBelow(&stream, 25)); in DEF_TEST()
438 REPORTER_ASSERT(rep, StreamRemainingLengthIsBelow(&stream, 26)); in DEF_TEST()
439 REPORTER_ASSERT(rep, StreamRemainingLengthIsBelow(&stream, 100)); in DEF_TEST()
440 REPORTER_ASSERT(rep, StreamRemainingLengthIsBelow(&stream, ULONG_MAX)); in DEF_TEST()
449 size_t copyCount = std::min(fCount - fIdx, size); in read()
468 SkStream* stream) { in stream_copy_test() argument
470 if (!SkStreamCopy(&tgt, stream)) { in stream_copy_test()
475 if (data->size() != N) { in stream_copy_test()
479 if (0 != memcmp(data->data(), srcData, N)) { in stream_copy_test()
493 REPORTER_ASSERT(r, data->size() == N * strlen(az)); in DEF_TEST()
494 const uint8_t* ptr = data->bytes(); in DEF_TEST()
512 DumbStream dumbStream(src.get(), (size_t)N); in DEF_TEST()
514 SkMemoryStream smartStream(src.get(), (size_t)N); in DEF_TEST()
521 REPORTER_ASSERT(r, nullptr == asset->getMemoryBase()); in DEF_TEST()
561 const size_t remaining = size - middle; in DEF_TEST()
563 REPORTER_ASSERT(r, stream1.read(expected.get(), remaining) == remaining); in DEF_TEST()
565 auto test_full_read = [&r, &expected, remaining](SkStream* stream) { in DEF_TEST() argument
567 REPORTER_ASSERT(r, stream->read(actual.get(), remaining) == remaining); in DEF_TEST()
568 REPORTER_ASSERT(r, !memcmp(expected.get(), actual.get(), remaining)); in DEF_TEST()
570 REPORTER_ASSERT(r, stream->getPosition() == stream->getLength()); in DEF_TEST()
571 REPORTER_ASSERT(r, stream->isAtEnd()); in DEF_TEST()
574 auto test_rewind = [&r, &expected, remaining](SkStream* stream) { in DEF_TEST() argument
576 REPORTER_ASSERT(r, stream->rewind()); in DEF_TEST()
577 REPORTER_ASSERT(r, stream->getPosition() == 0); in DEF_TEST()
579 REPORTER_ASSERT(r, stream->read(actual.get(), remaining) == remaining); in DEF_TEST()
580 REPORTER_ASSERT(r, !memcmp(expected.get(), actual.get(), remaining)); in DEF_TEST()
583 auto test_move = [&r, &expected, size, remaining](SkStream* stream) { in DEF_TEST() argument
585 REPORTER_ASSERT(r, stream->move(- (long) size)); in DEF_TEST()
586 REPORTER_ASSERT(r, stream->getPosition() == 0); in DEF_TEST()
588 REPORTER_ASSERT(r, stream->move(std::numeric_limits<long>::min())); in DEF_TEST()
589 REPORTER_ASSERT(r, stream->getPosition() == 0); in DEF_TEST()
592 REPORTER_ASSERT(r, stream->read(actual.get(), remaining) == remaining); in DEF_TEST()
593 REPORTER_ASSERT(r, !memcmp(expected.get(), actual.get(), remaining)); in DEF_TEST()
595 REPORTER_ASSERT(r, stream->isAtEnd()); in DEF_TEST()
596 REPORTER_ASSERT(r, stream->getPosition() == remaining); in DEF_TEST()
599 REPORTER_ASSERT(r, stream->move(1)); in DEF_TEST()
600 REPORTER_ASSERT(r, stream->isAtEnd()); in DEF_TEST()
601 REPORTER_ASSERT(r, stream->getPosition() == remaining); in DEF_TEST()
604 auto test_seek = [&r, &expected, middle, remaining](SkStream* stream) { in DEF_TEST() argument
607 REPORTER_ASSERT(r, stream->seek(arbitrary)); in DEF_TEST()
608 REPORTER_ASSERT(r, stream->getPosition() == arbitrary); in DEF_TEST()
609 const size_t miniRemaining = remaining - arbitrary; in DEF_TEST()
611 REPORTER_ASSERT(r, stream->read(actual.get(), miniRemaining) == miniRemaining); in DEF_TEST()
612 REPORTER_ASSERT(r, !memcmp(expected.get() + arbitrary, actual.get(), miniRemaining)); in DEF_TEST()
615 auto test_seek_beginning = [&r, &expected, remaining](SkStream* stream) { in DEF_TEST() argument
617 REPORTER_ASSERT(r, stream->seek(0)); in DEF_TEST()
618 REPORTER_ASSERT(r, stream->getPosition() == 0); in DEF_TEST()
620 REPORTER_ASSERT(r, stream->read(actual.get(), remaining) == remaining); in DEF_TEST()
621 REPORTER_ASSERT(r, !memcmp(expected.get(), actual.get(), remaining)); in DEF_TEST()
624 auto test_seek_end = [&r, remaining](SkStream* stream) { in DEF_TEST() argument
626 REPORTER_ASSERT(r, stream->isAtEnd()); in DEF_TEST()
628 REPORTER_ASSERT(r, stream->seek(remaining + 1)); in DEF_TEST()
629 REPORTER_ASSERT(r, stream->isAtEnd()); in DEF_TEST()
630 REPORTER_ASSERT(r, stream->getPosition() == remaining); in DEF_TEST()
633 REPORTER_ASSERT(r, stream->seek(middle)); in DEF_TEST()
634 REPORTER_ASSERT(r, !stream->isAtEnd()); in DEF_TEST()
635 REPORTER_ASSERT(r, stream->getPosition() == middle); in DEF_TEST()
637 REPORTER_ASSERT(r, stream->seek(remaining * 2)); in DEF_TEST()
638 REPORTER_ASSERT(r, stream->isAtEnd()); in DEF_TEST()
639 REPORTER_ASSERT(r, stream->getPosition() == remaining); in DEF_TEST()
641 REPORTER_ASSERT(r, stream->seek(std::numeric_limits<long>::max())); in DEF_TEST()
642 REPORTER_ASSERT(r, stream->isAtEnd()); in DEF_TEST()
643 REPORTER_ASSERT(r, stream->getPosition() == remaining); in DEF_TEST()
647 std::function<void (SkStream* stream, bool recurse)> test_all; in DEF_TEST()
648 test_all = [&](SkStream* stream, bool recurse) { in DEF_TEST() argument
649 REPORTER_ASSERT(r, stream->getLength() == remaining); in DEF_TEST()
650 REPORTER_ASSERT(r, stream->getPosition() == 0); in DEF_TEST()
652 test_full_read(stream); in DEF_TEST()
653 test_rewind(stream); in DEF_TEST()
654 test_move(stream); in DEF_TEST()
655 test_seek(stream); in DEF_TEST()
656 test_seek_beginning(stream); in DEF_TEST()
657 test_seek_end(stream); in DEF_TEST()
661 auto duplicate = stream->duplicate(); in DEF_TEST()
663 ERRORF(r, "Failed to duplicate the stream!"); in DEF_TEST()
665 test_all(duplicate.get(), false); in DEF_TEST()
669 auto fork = stream->fork(); in DEF_TEST()
671 ERRORF(r, "Failed to fork the stream!"); in DEF_TEST()
673 REPORTER_ASSERT(r, fork->isAtEnd()); in DEF_TEST()
674 REPORTER_ASSERT(r, fork->getLength() == remaining); in DEF_TEST()
675 REPORTER_ASSERT(r, fork->rewind()); in DEF_TEST()
677 test_all(fork.get(), false); in DEF_TEST()