summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorThiago Macieira <thiago.macieira@intel.com>2013-04-11 15:56:17 -0700
committerThe Qt Project <gerrit-noreply@qt-project.org>2013-04-16 19:45:11 +0200
commitb4ce49287f9f8407e89f1e4485cc166368306c77 (patch)
treeb8b400e9a878da0f1bc8009cfd2a38a3c403de6a /tests
parentfb1649d30b0542a69a534218e96950d0533dec8b (diff)
Make QBuffer::bytesAvailable() work
We don't need to keep an internal QBuffer position, we can just use the one from QIODevice::pos(). It will keep track of goings ahead and backwards for us, plus it will make the default bytesAvailable() work out-of-the-box too. This error was reported on IRC. Change-Id: I8559e8ee56edaa01ca8732c1f1012082ebe3a3f2 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Robin Burchell <robin+qt@viroteck.net>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/corelib/io/qbuffer/tst_qbuffer.cpp23
1 files changed, 22 insertions, 1 deletions
diff --git a/tests/auto/corelib/io/qbuffer/tst_qbuffer.cpp b/tests/auto/corelib/io/qbuffer/tst_qbuffer.cpp
index 4a43ea8201..3653fdb9e0 100644
--- a/tests/auto/corelib/io/qbuffer/tst_qbuffer.cpp
+++ b/tests/auto/corelib/io/qbuffer/tst_qbuffer.cpp
@@ -149,20 +149,25 @@ void tst_QBuffer::readBlock()
const int arraySize = 10;
char a[arraySize];
QBuffer b;
+ QCOMPARE(b.bytesAvailable(), (qint64) 0); // no data
QCOMPARE(b.read(a, arraySize), (qint64) -1); // not opened
QVERIFY(b.atEnd());
QByteArray ba;
ba.resize(arraySize);
b.setBuffer(&ba);
+ QCOMPARE(b.bytesAvailable(), (qint64) arraySize);
b.open(QIODevice::WriteOnly);
+ QCOMPARE(b.bytesAvailable(), (qint64) arraySize);
QTest::ignoreMessage(QtWarningMsg, "QIODevice::read: WriteOnly device");
QCOMPARE(b.read(a, arraySize), (qint64) -1); // no read access
b.close();
b.open(QIODevice::ReadOnly);
+ QCOMPARE(b.bytesAvailable(), (qint64) arraySize);
QCOMPARE(b.read(a, arraySize), (qint64) arraySize);
QVERIFY(b.atEnd());
+ QCOMPARE(b.bytesAvailable(), (qint64) 0);
// up to 3.0.x reading beyond the end was an error while ok
// this has been made consistent with other QIODevice sub classes in 3.1
@@ -172,10 +177,13 @@ void tst_QBuffer::readBlock()
// read in two chunks
b.close();
b.open(QIODevice::ReadOnly);
+ QCOMPARE(b.bytesAvailable(), (qint64) arraySize);
QCOMPARE(b.read(a, arraySize/2), (qint64) arraySize/2);
+ QCOMPARE(b.bytesAvailable(), (qint64) arraySize/2);
QCOMPARE(b.read(a + arraySize/2, arraySize - arraySize/2),
(qint64)(arraySize - arraySize/2));
QVERIFY(b.atEnd());
+ QCOMPARE(b.bytesAvailable(), (qint64) 0);
}
void tst_QBuffer::readBlockPastEnd()
@@ -319,9 +327,12 @@ void tst_QBuffer::seekTest()
buf.open(QIODevice::ReadWrite);
QCOMPARE(buf.pos(), qint64(0));
+ QCOMPARE(buf.bytesAvailable(), qint64(0));
QByteArray data = str.toLatin1();
QCOMPARE(buf.write( data.constData(), data.size() ), qint64(data.size()));
+ QCOMPARE(buf.bytesAvailable(), qint64(0)); // we're at the end
+ QCOMPARE(buf.size(), qint64(data.size()));
QTest::ignoreMessage(QtWarningMsg, "QBuffer::seek: Invalid pos: -1");
DO_INVALID_SEEK(-1);
@@ -336,6 +347,7 @@ void tst_QBuffer::seekTest()
{
char c = 'a';
QVERIFY(buf.seek(qint64(str.size())));
+ QCOMPARE(buf.bytesAvailable(), qint64(0));
QCOMPARE(buf.read(&c, qint64(1)), qint64(0));
QCOMPARE(c, 'a');
QCOMPARE(buf.write(&c, qint64(1)), qint64(1));
@@ -347,6 +359,7 @@ void tst_QBuffer::seekTest()
const int offset = 1; // any positive integer will do
const qint64 pos = buf.size() + offset;
QVERIFY(buf.seek(pos));
+ QCOMPARE(buf.bytesAvailable(), qint64(0));
QCOMPARE(buf.pos(), pos);
QVERIFY(!buf.getChar(&c));
QVERIFY(buf.seek(pos - 1));
@@ -533,7 +546,11 @@ void tst_QBuffer::readLineBoundaries()
lineByLine.append(buffer.readLine());
buffer.seek(0);
- QCOMPARE(lineByLine, buffer.readAll());
+ QCOMPARE(buffer.bytesAvailable(), lineByLine.size());
+
+ QByteArray all = buffer.readAll();
+ QCOMPARE(all.size(), lineByLine.size());
+ QCOMPARE(all, lineByLine);
}
// Test that any character in a buffer can be read and pushed back.
@@ -548,7 +565,9 @@ void tst_QBuffer::getAndUngetChar()
// Take a copy of the data held in the buffer
buffer.seek(0);
+ QCOMPARE(buffer.bytesAvailable(), buffer.size());
QByteArray data = buffer.readAll();
+ QCOMPARE(buffer.bytesAvailable(), qint64(0));
// Get and unget each character in order
for (qint64 i = 0; i < buffer.size(); ++i) {
@@ -570,7 +589,9 @@ void tst_QBuffer::getAndUngetChar()
// Verify that the state of the buffer still matches the original data.
buffer.seek(0);
+ QCOMPARE(buffer.bytesAvailable(), data.size());
QCOMPARE(buffer.readAll(), data);
+ QCOMPARE(buffer.bytesAvailable(), qint64(0));
}
void tst_QBuffer::writeAfterQByteArrayResize()