28 dataSize (sourceDataSize)
32 internalCopy =
MemoryBlock (sourceData, sourceDataSize);
38 : data (sourceData.getData()),
39 dataSize (sourceData.getSize())
43 internalCopy = sourceData;
49 : internalCopy (std::move (source))
60 return (int64) dataSize;
65 jassert (buffer !=
nullptr &&
howMany >= 0);
70 auto num = jmin ((
size_t)
howMany, dataSize - position);
74 memcpy (buffer, addBytesToPointer (data, position),
num);
83 return position >= dataSize;
88 position = (
size_t) jlimit ((int64) 0, (int64) dataSize, pos);
94 return (int64) position;
112 :
UnitTest (
"MemoryInputStream & MemoryOutputStream", UnitTestCategories::streams)
115 void runTest()
override
117 beginTest (
"Basics");
118 Random r = getRandom();
125 MemoryOutputStream
mo;
135 MemoryInputStream
mi (
mo.getData(),
mo.getDataSize(),
false);
145 const MemoryBlock
data (
"abcdefghijklmnopqrstuvwxyz", 26);
146 MemoryInputStream stream (
data,
true);
150 expectEquals (stream.getPosition(), (int64) 0);
151 expectEquals (stream.getTotalLength(), (int64)
data.getSize());
152 expectEquals (stream.getNumBytesRemaining(), stream.getTotalLength());
153 expect (! stream.isExhausted());
162 expectEquals (stream.getPosition(), (int64)
numBytesRead);
163 expectEquals (stream.getNumBytesRemaining(), (int64) (
data.getSize() -
numBytesRead));
167 expectEquals (stream.getPosition(), (int64)
data.getSize());
168 expectEquals (stream.getNumBytesRemaining(), (int64) 0);
169 expect (stream.isExhausted());
175 stream.setPosition (0);
176 expectEquals (stream.getPosition(), (int64) 0);
177 expectEquals (stream.getTotalLength(), (int64)
data.getSize());
178 expectEquals (stream.getNumBytesRemaining(), stream.getTotalLength());
179 expect (! stream.isExhausted());
190 expectEquals (stream.getPosition(), (int64)
numBytesRead);
191 expectEquals (stream.getNumBytesRemaining(), (int64) (
data.getSize() -
numBytesRead));
195 expectEquals (stream.getPosition(), (int64)
data.getSize());
196 expectEquals (stream.getNumBytesRemaining(), (int64) 0);
197 expect (stream.isExhausted());
202 juce_wchar buffer [50] = { 0 };
204 for (
int i = 0; i < numElementsInArray (buffer) - 1; ++i)
210 buffer[i] = (juce_wchar) (1 + r.nextInt (0x10ffff - 1));
215 buffer[i] = (juce_wchar) (1 + r.nextInt (0xff));
218 return CharPointer_UTF32 (buffer);
222static MemoryStreamTests memoryInputStreamUnitTests;
ElementType * data() noexcept
static bool canRepresent(juce_wchar character) noexcept
void * getData() noexcept