public void TestRead()
{
short[] buffer1 = { 1, 2, 3, 4, 5 };
short[] buffer2 = { 6, 7, 8 };
short[] tmp = new short[10];
CombinedBuffer buffer = new CombinedBuffer(buffer1, 5, buffer2, 3);
for (int i = 0; i < 10; i++)
{
Assert.AreEqual(0, tmp[i]);
}
// Read from first part
int size = buffer.Read(tmp, 0, 4);
Assert.AreEqual(0, buffer.Offset);
Assert.AreEqual(4, size);
for (int i = 0; i < size; i++)
{
Assert.AreEqual(1 + i, tmp[i]);
}
// Read from both parts
size = buffer.Read(tmp, 3, 4);
Assert.AreEqual(0, buffer.Offset);
Assert.AreEqual(4, size);
for (int i = 0; i < size; i++)
{
Assert.AreEqual(4 + i, tmp[i]);
}
// Read at split point
size = buffer.Read(tmp, 5, 4);
Assert.AreEqual(0, buffer.Offset);
Assert.AreEqual(3, size);
for (int i = 0; i < size; i++)
{
Assert.AreEqual(6 + i, tmp[i]);
}
// Read from last parts
size = buffer.Read(tmp, 6, 4);
Assert.AreEqual(0, buffer.Offset);
Assert.AreEqual(2, size);
for (int i = 0; i < size; i++)
{
Assert.AreEqual(7 + i, tmp[i]);
}
}