finalize changes around int and long long in mget(i) and mput(i)
[scilab.git] / scilab / modules / fileio / tests / unit_tests / mgeti.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) 2013 - Scilab Enterprises - Antoine ELIAS
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7
8 // <-- CLI SHELL MODE -->
9
10 function writedata(name, str)
11     f = mopen(TMPDIR + "/" + name + ".dat", "wb");
12     data = hex2dec(str);
13     mput(data, "uc", f);
14     mclose(f);
15 endfunction
16
17 function res = readdata(name)
18     f = mopen(TMPDIR + "/" + name + ".dat", "rb");
19     res = mgeti(3, name, f);
20     mclose(f);
21 endfunction
22 //
23 //prepare data
24 //
25
26 ul1     = uint32(123); //0x7B
27 ul2     = uint32(45678);//0xB26E
28 ul3     = uint32(123456);//0x0001E240
29 l1      = int32(-123); //0x85
30 l2      = int32(-23456);//0xA460
31 l3      = int32(-123456);//0xFFFE1DC0
32 l3t     = int32(7616);//0x1DC0
33
34 us1     = uint16(123); //0x7B
35 us2     = uint16(45678);//0xB26E
36 us3     = uint16(123456);//0x0001E240
37 s1      = int16(-123); //0x85
38 s2      = int16(-23456);//0xA460
39 s3      = int16(-123456);//0xFFFE1DC0
40 s3t     = int16(7616);//0x1DC0
41
42 //unsigned long big endian
43 writedata("ulb", ["00" "00" "00" "00" "00" "00" "00" "7B" "00" "00" "00" "00" "00" "00" "B2" "6E" "00" "00" "00" "00" "00" "01" "E2" "40"]);
44 //unsigned long little endian
45 writedata("ull", ["7B" "00" "00" "00" "00" "00" "00" "00" "6E" "B2" "00" "00" "00" "00" "00" "00" "40" "E2" "01" "00" "00" "00" "00" "00"]);
46 //unsigned short big endian
47 writedata("usb", ["00" "7B" "B2" "6E" "E2" "40"]);
48 //unsigned short little endian
49 writedata("usl", ["7B" "00" "6E" "B2" "40" "E2"]);
50
51 //long big endian
52 writedata("lb", ["FF" "FF" "FF" "FF" "FF" "FF" "FF" "85" "FF" "FF" "FF" "FF" "FF" "FF" "A4" "60" "FF" "FF" "FF" "FF" "FF" "FE" "1D" "C0"]);
53 //long little endian
54 writedata("ll", ["85" "FF" "FF" "FF" "FF" "FF" "FF" "FF" "60" "A4" "FF" "FF" "FF" "FF" "FF" "FF" "C0" "1D" "FE" "FF" "FF" "FF" "FF" "FF"]);
55 //short big endian
56 writedata("sb", ["FF" "85" "A4" "60" "1D" "C0"]);
57 //short little endian
58 writedata("sl", ["85" "FF" "60" "A4" "C0" "1D"]);
59
60 res = readdata("ulb");
61 assert_checkequal(res, [ul1, ul2, ul3]);
62 res = readdata("ull");
63 assert_checkequal(res, [ul1, ul2, ul3]);
64 res = readdata("usb");
65 assert_checkequal(res, [us1, us2, us3]);
66 res = readdata("usl");
67 assert_checkequal(res, [us1, us2, us3]);
68
69 res = readdata("lb");
70 assert_checkequal(res, [l1, l2, l3]);
71 res = readdata("ll");
72 assert_checkequal(res, [l1, l2, l3]);
73 res = readdata("sb");
74 assert_checkequal(res, [s1, s2, s3]);
75 res = readdata("sl");
76 assert_checkequal(res, [s1, s2, s3]);
77
78 // check default output type of mgeti
79 file1 = fullfile(TMPDIR,'test1.bin');
80 fd1=mopen(file1,'wb');
81 mput(1996,'ull',fd1);
82 mclose(fd1);
83
84 fd1=mopen(file1,'rb');
85 a=mgeti(1);
86 assert_checkequal(typeof(a), "int32");
87 assert_checkequal(a, int32(1996));