aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorDenis Shienkov <denis.shienkov@gmail.com>2017-10-19 16:40:12 +0300
committerDenis Shienkov <denis.shienkov@gmail.com>2017-11-07 05:49:49 +0000
commit66aa42314346a49b1219df125b730349e8051f05 (patch)
treeb8c066ab804eda2db980c18c3d3dc35f3ce41acf /tests
parent583aad43f59fa52baddb720946de7e1eb6c081ec (diff)
Add BinaryFile service to manipulate binary files
[ChangeLog] Added the BinaryFile service for reading and writing binary data files. Change-Id: I93378c448a367472c4dd9ad5e715f70d88d7f58e Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@qt.io> Reviewed-by: Christian Kandeler <christian.kandeler@qt.io>
Diffstat (limited to 'tests')
-rw-r--r--tests/auto/blackbox/testdata/jsextensions-binaryfile/binaryfile.qbs48
-rw-r--r--tests/auto/blackbox/tst_blackbox.cpp24
-rw-r--r--tests/auto/blackbox/tst_blackbox.h1
3 files changed, 73 insertions, 0 deletions
diff --git a/tests/auto/blackbox/testdata/jsextensions-binaryfile/binaryfile.qbs b/tests/auto/blackbox/testdata/jsextensions-binaryfile/binaryfile.qbs
new file mode 100644
index 000000000..7d3ada851
--- /dev/null
+++ b/tests/auto/blackbox/testdata/jsextensions-binaryfile/binaryfile.qbs
@@ -0,0 +1,48 @@
+import qbs
+import qbs.BinaryFile
+
+Product {
+ type: ["dummy"]
+ Rule {
+ multiplex: true
+ Artifact {
+ filePath: "dummy.dat"
+ fileTags: ["dummy"]
+ }
+ prepare: {
+ var commands = [];
+ var cmd = new JavaScriptCommand();
+ cmd.silent = true;
+ cmd.sourceCode = function() {
+ var source = new BinaryFile("source.dat", BinaryFile.WriteOnly);
+ source.write([ 0x01, 0x02 ]); // First data.
+ // Do not close the file to test the auto close functionality.
+ };
+ commands.push(cmd);
+ cmd = new JavaScriptCommand();
+ cmd.silent = true;
+ cmd.sourceCode = function() {
+ source = new BinaryFile("source.dat", BinaryFile.ReadWrite);
+ source.seek(source.size());
+ source.write([ 0x03, 0x04 ]); // Second data.
+ source.close();
+ source = new BinaryFile("source.dat", BinaryFile.ReadWrite);
+ var destination = new BinaryFile("destination.dat", BinaryFile.WriteOnly);
+ destination.write(source.atEof() ? [ 0xFF ] : [ 0x00 ]);
+ while (true) {
+ var data = source.read(1);
+ if (!data || data.length == 0)
+ break;
+ destination.write(data);
+ }
+ source.resize(0); // truncate
+ destination.write([ 0x05, 0x06 ]); // Third data.
+ destination.write(source.atEof() ? [ 0xFF ] : [ 0x00 ]);
+ source.close();
+ destination.close();
+ };
+ commands.push(cmd);
+ return commands;
+ }
+ }
+}
diff --git a/tests/auto/blackbox/tst_blackbox.cpp b/tests/auto/blackbox/tst_blackbox.cpp
index 30e495c04..93b63e5dd 100644
--- a/tests/auto/blackbox/tst_blackbox.cpp
+++ b/tests/auto/blackbox/tst_blackbox.cpp
@@ -3490,6 +3490,30 @@ void TestBlackbox::jsExtensionsTextFile()
QCOMPARE(lines.at(5).trimmed().constData(), "true");
}
+void TestBlackbox::jsExtensionsBinaryFile()
+{
+ QDir::setCurrent(testDataDir + "/jsextensions-binaryfile");
+ QbsRunParameters params(QStringList() << "-f" << "binaryfile.qbs");
+ QCOMPARE(runQbs(params), 0);
+ QFile source("source.dat");
+ QVERIFY(source.exists());
+ QVERIFY(source.open(QIODevice::ReadOnly));
+ QCOMPARE(source.size(), qint64(0));
+ QFile destination("destination.dat");
+ QVERIFY(destination.exists());
+ QVERIFY(destination.open(QIODevice::ReadOnly));
+ const QByteArray data = destination.readAll();
+ QCOMPARE(data.size(), 8);
+ QCOMPARE(data.at(0), char(0x00));
+ QCOMPARE(data.at(1), char(0x01));
+ QCOMPARE(data.at(2), char(0x02));
+ QCOMPARE(data.at(3), char(0x03));
+ QCOMPARE(data.at(4), char(0x04));
+ QCOMPARE(data.at(5), char(0x05));
+ QCOMPARE(data.at(6), char(0x06));
+ QCOMPARE(data.at(7), char(0xFF));
+}
+
void TestBlackbox::ld()
{
QDir::setCurrent(testDataDir + "/ld");
diff --git a/tests/auto/blackbox/tst_blackbox.h b/tests/auto/blackbox/tst_blackbox.h
index 0bc40289b..67c9d152a 100644
--- a/tests/auto/blackbox/tst_blackbox.h
+++ b/tests/auto/blackbox/tst_blackbox.h
@@ -121,6 +121,7 @@ private slots:
void jsExtensionsPropertyList();
void jsExtensionsTemporaryDir();
void jsExtensionsTextFile();
+ void jsExtensionsBinaryFile();
void ld();
void linkerMode();
void lexyacc();