src: disable fast math on arm
[platform/upstream/nodejs.git] / test / parallel / test-fs-truncate.js
1 var common = require('../common');
2 var assert = require('assert');
3 var path = require('path');
4 var fs = require('fs');
5 var tmp = common.tmpDir;
6 var filename = path.resolve(tmp, 'truncate-file.txt');
7 var data = new Buffer(1024 * 16);
8 data.fill('x');
9
10 var stat;
11
12 // truncateSync
13 fs.writeFileSync(filename, data);
14 stat = fs.statSync(filename);
15 assert.equal(stat.size, 1024 * 16);
16
17 fs.truncateSync(filename, 1024);
18 stat = fs.statSync(filename);
19 assert.equal(stat.size, 1024);
20
21 fs.truncateSync(filename);
22 stat = fs.statSync(filename);
23 assert.equal(stat.size, 0);
24
25 // ftruncateSync
26 fs.writeFileSync(filename, data);
27 var fd = fs.openSync(filename, 'r+');
28
29 stat = fs.statSync(filename);
30 assert.equal(stat.size, 1024 * 16);
31
32 fs.ftruncateSync(fd, 1024);
33 stat = fs.statSync(filename);
34 assert.equal(stat.size, 1024);
35
36 fs.ftruncateSync(fd);
37 stat = fs.statSync(filename);
38 assert.equal(stat.size, 0);
39
40 fs.closeSync(fd);
41
42 // async tests
43 var success = 0;
44 testTruncate(function(er) {
45   if (er) throw er;
46   success++;
47   testFtruncate(function(er) {
48     if (er) throw er;
49     success++;
50   });
51 });
52
53 process.on('exit', function() {
54   assert.equal(success, 2);
55   console.log('ok');
56 });
57
58 function testTruncate(cb) {
59   fs.writeFile(filename, data, function(er) {
60     if (er) return cb(er);
61     fs.stat(filename, function(er, stat) {
62       if (er) return cb(er);
63       assert.equal(stat.size, 1024 * 16);
64
65       fs.truncate(filename, 1024, function(er) {
66         if (er) return cb(er);
67         fs.stat(filename, function(er, stat) {
68           if (er) return cb(er);
69           assert.equal(stat.size, 1024);
70
71           fs.truncate(filename, function(er) {
72             if (er) return cb(er);
73             fs.stat(filename, function(er, stat) {
74               if (er) return cb(er);
75               assert.equal(stat.size, 0);
76               cb();
77             });
78           });
79         });
80       });
81     });
82   });
83 }
84
85
86 function testFtruncate(cb) {
87   fs.writeFile(filename, data, function(er) {
88     if (er) return cb(er);
89     fs.stat(filename, function(er, stat) {
90       if (er) return cb(er);
91       assert.equal(stat.size, 1024 * 16);
92
93       fs.open(filename, 'w', function(er, fd) {
94         if (er) return cb(er);
95         fs.ftruncate(fd, 1024, function(er) {
96           if (er) return cb(er);
97           fs.stat(filename, function(er, stat) {
98             if (er) return cb(er);
99             assert.equal(stat.size, 1024);
100
101             fs.ftruncate(fd, function(er) {
102               if (er) return cb(er);
103               fs.stat(filename, function(er, stat) {
104                 if (er) return cb(er);
105                 assert.equal(stat.size, 0);
106                 fs.close(fd, cb);
107               });
108             });
109           });
110         });
111       });
112     });
113   });
114 }