aboutsummaryrefslogtreecommitdiffstats
path: root/tests/auto/blackbox/testdata/jsextensions-binaryfile/binaryfile.qbs
blob: 1e742674436ea35e7c83707de0d99828b4f3e885 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
import qbs.BinaryFile

Product {
    type: ["dummy"]
    Rule {
        multiplex: true
        outputFileTags: "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;
        }
    }
}