28 bool deleteSourceWhenDestroyed)
29 :
source (sourceStream, deleteSourceWhenDestroyed),
60 jassert (destBuffer !=
nullptr && maxBytesToRead >= 0);
63 return source->read (destBuffer, maxBytesToRead);
67 if (maxBytesToRead <= 0)
70 return source->read (destBuffer, maxBytesToRead);
78 return source->isExhausted();
86struct SubregionInputStreamTests :
public UnitTest
88 SubregionInputStreamTests()
92 void runTest()
override
94 const MemoryBlock data (
"abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz", 52);
95 MemoryInputStream mi (
data,
true);
97 const int offset = getRandom().nextInt ((
int)
data.getSize());
98 const size_t subregionSize =
data.getSize() - (size_t) offset;
100 SubregionStream stream (&mi, offset, (
int) subregionSize,
false);
104 expectEquals (stream.getPosition(), (
int64) 0);
105 expectEquals (stream.getTotalLength(), (
int64) subregionSize);
106 expectEquals (stream.getNumBytesRemaining(), stream.getTotalLength());
107 expect (! stream.isExhausted());
109 size_t numBytesRead = 0;
112 while (numBytesRead < subregionSize)
114 numBytesRead += (size_t) stream.read (&readBuffer[numBytesRead], 3);
116 expectEquals (stream.getPosition(), (
int64) numBytesRead);
117 expectEquals (stream.getNumBytesRemaining(), (
int64) (subregionSize - numBytesRead));
118 expect (stream.isExhausted() == (numBytesRead == subregionSize));
121 expectEquals (stream.getPosition(), (
int64) subregionSize);
122 expectEquals (stream.getNumBytesRemaining(), (
int64) 0);
123 expect (stream.isExhausted());
125 const MemoryBlock memoryBlockToCheck (
data.begin() + (
size_t) offset,
data.getSize() - (
size_t) offset);
126 expect (readBuffer == memoryBlockToCheck);
130 stream.setPosition (0);
131 expectEquals (stream.getPosition(), (
int64) 0);
132 expectEquals (stream.getTotalLength(), (
int64) subregionSize);
133 expectEquals (stream.getNumBytesRemaining(), stream.getTotalLength());
134 expect (! stream.isExhausted());
137 const int64 numBytesToSkip = 5;
139 while (numBytesRead < subregionSize)
141 stream.skipNextBytes (numBytesToSkip);
142 numBytesRead += numBytesToSkip;
143 numBytesRead = std::min (numBytesRead, subregionSize);
145 expectEquals (stream.getPosition(), (
int64) numBytesRead);
146 expectEquals (stream.getNumBytesRemaining(), (
int64) (subregionSize - numBytesRead));
147 expect (stream.isExhausted() == (numBytesRead == subregionSize));
150 expectEquals (stream.getPosition(), (
int64) subregionSize);
151 expectEquals (stream.getNumBytesRemaining(), (
int64) 0);
152 expect (stream.isExhausted());
156static SubregionInputStreamTests subregionInputStreamTests;
Type jmin(const Type a, const Type b)
Definition MathsFunctions.h:60
int64_t int64
Definition basics.h:91
Definition MemoryBlock.h:39
SubregionStream(InputStream *sourceStream, int64 startPositionInSourceStream, int64 lengthOfSourceStream, bool deleteSourceWhenDestroyed)
Definition juce_SubregionStream.cpp:26
int64 getPosition() override
Definition juce_SubregionStream.cpp:48
bool setPosition(int64 newPosition) override
Definition juce_SubregionStream.cpp:53
bool isExhausted() override
Definition juce_SubregionStream.cpp:73
OptionalScopedPointer< InputStream > source
Definition juce_SubregionStream.h:77
int read(void *destBuffer, int maxBytesToRead) override
Definition juce_SubregionStream.cpp:58
const int64 startPositionInSourceStream
Definition juce_SubregionStream.h:78
int64 getTotalLength() override
Definition juce_SubregionStream.cpp:40
~SubregionStream() override
Definition juce_SubregionStream.cpp:36
const int64 lengthOfSourceStream
Definition juce_SubregionStream.h:78
Definition juce_UnitTest.h:70
virtual ASIOError start()=0
JSAMPIMAGE data
Definition jpeglib.h:945
Definition juce_UnitTestCategories.h:27
Definition carla_juce.cpp:31
constexpr Type jmin(Type a, Type b)
Definition juce_MathsFunctions.h:106
constexpr Type jmax(Type a, Type b)
Definition juce_MathsFunctions.h:94
long long int64
Definition juce_MathsFunctions.h:54
png_uint_32 length
Definition png.c:2247
typedef int(UZ_EXP MsgFn)()