Merge remote-tracking branch 'origin/6.1'
[scilab.git] / scilab / modules / fileio / tests / nonreg_tests / bug_14397.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2016 - Samuel GOUGEON
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 // <-- CLI SHELL MODE -->
8
9 // <-- Non-regression test for bug 14397 -->
10 //
11 // <-- Bugzilla URL -->
12 // http://bugzilla.scilab.org/14397
13 //
14 // <-- Short Description -->
15 // mgeti() did not read correctly uint64 or int64 integers > 2^52
16 //
17
18 // Read/Write int64 & uint64 with relative accuracy better than %eps = 1/2^52
19 // --------------------------------------------------------------------------
20 n = 10;
21 b = grand(64,n,"uin",0,1);
22 p = uint64(2).^ndgrid(0:63,1:n);
23 x0 = sum(b.*p, "r");
24
25 for endian = ["l" "b"]
26     for usign = ["u" ""]
27         // usign+"l"+endian
28         binfile = TMPDIR+"/mgetiTestInt64.dat";
29         idF = mopen(binfile, "w+b");
30         x = x0;
31         if usign==""
32             x = int64(x);
33         end
34         mput(x,usign+"l"+endian)
35
36         mseek(0);
37         xr = mgeti(n, usign+"l"+endian);
38         mclose(idF);
39         assert_checkequal(xr, x);
40     end
41 end