42void MemoryInputStream::createInternalCopy()
44 internalCopy.
malloc (dataSize);
45 memcpy (internalCopy, data, dataSize);
55 return (int64) dataSize;
60 jassert (buffer !=
nullptr &&
howMany >= 0);
65 auto num = jmin ((
size_t)
howMany, dataSize - position);
69 memcpy (buffer, addBytesToPointer (data, position),
num);
78 return position >= dataSize;
83 position = (
size_t) jlimit ((int64) 0, (int64) dataSize, pos);
89 return (int64) position;
105 :
UnitTest (
"MemoryInputStream & MemoryOutputStream",
"Streams")
108 void runTest()
override
110 beginTest (
"Basics");
111 Random r = getRandom();
118 MemoryOutputStream
mo;
128 MemoryInputStream
mi (
mo.getData(),
mo.getDataSize(),
false);
138 const MemoryBlock
data (
"abcdefghijklmnopqrstuvwxyz", 26);
139 MemoryInputStream stream (
data,
true);
143 expectEquals (stream.getPosition(), (int64) 0);
144 expectEquals (stream.getTotalLength(), (int64)
data.getSize());
145 expectEquals (stream.getNumBytesRemaining(), stream.getTotalLength());
146 expect (! stream.isExhausted());
155 expectEquals (stream.getPosition(), (int64)
numBytesRead);
156 expectEquals (stream.getNumBytesRemaining(), (int64) (
data.getSize() -
numBytesRead));
160 expectEquals (stream.getPosition(), (int64)
data.getSize());
161 expectEquals (stream.getNumBytesRemaining(), (int64) 0);
162 expect (stream.isExhausted());
168 stream.setPosition (0);
169 expectEquals (stream.getPosition(), (int64) 0);
170 expectEquals (stream.getTotalLength(), (int64)
data.getSize());
171 expectEquals (stream.getNumBytesRemaining(), stream.getTotalLength());
172 expect (! stream.isExhausted());
183 expectEquals (stream.getPosition(), (int64)
numBytesRead);
184 expectEquals (stream.getNumBytesRemaining(), (int64) (
data.getSize() -
numBytesRead));
188 expectEquals (stream.getPosition(), (int64)
data.getSize());
189 expectEquals (stream.getNumBytesRemaining(), (int64) 0);
190 expect (stream.isExhausted());
195 juce_wchar buffer [50] = { 0 };
197 for (
int i = 0; i < numElementsInArray (buffer) - 1; ++i)
203 buffer[i] = (juce_wchar) (1 + r.nextInt (0x10ffff - 1));
208 buffer[i] = (juce_wchar) (1 + r.nextInt (0xff));
211 return CharPointer_UTF32 (buffer);
215static MemoryStreamTests memoryInputStreamUnitTests;
Holds a resizable array of primitive or copy-by-value objects.
Array()=default
Creates an empty array.
ElementType * data() const noexcept
Returns a pointer to the first element in the array.
static bool canRepresent(juce_wchar character) noexcept
Returns true if the given unicode character can be represented in this encoding.
void malloc(SizeType newNumElements, size_t elementSize=sizeof(ElementType))
Allocates a specified amount of memory.
A class to hold a resizable block of raw data.
This is a base class for classes that perform a unit test.