Merge remote-tracking branch 'origin/master' into YaSp
[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     = uint64(123); //0x7B
27 ul2     = uint64(45678);//0xB26E
28 ul3     = uint64(123456);//0x0001E240
29 l1      = int64(-123); //0x7B
30 l2      = int64(-23456);//0xB26E
31 l3      = int64(-123456);//0x0001E240
32
33 ui1     = uint32(123); //0x7B
34 ui2     = uint32(45678);//0xB26E
35 ui3     = uint32(123456);//0x0001E240
36 i1      = int32(-123); //0x85
37 i2      = int32(-23456);//0xA460
38 i3      = int32(-123456);//0xFFFE1DC0
39 i3t     = int32(7616);//0x1DC0
40
41 us1     = uint16(123); //0x7B
42 us2     = uint16(45678);//0xB26E
43 us3     = uint16(123456);//0x0001E240
44 s1      = int16(-123); //0x85
45 s2      = int16(-23456);//0xA460
46 s3      = int16(-123456);//0xFFFE1DC0
47 s3t     = int16(7616);//0x1DC0
48
49 //unsigned long big endian
50 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"]);
51 //unsigned long little endian
52 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"]);
53
54 //unsigned int big endian
55 writedata("uib", ["00" "00" "00" "7B" "00" "00" "B2" "6E" "00" "01" "E2" "40"]);
56 //unsigned int little endian
57 writedata("uil", ["7B" "00" "00" "00" "6E" "B2" "00" "00" "40" "E2" "01" "00"]);
58
59 //unsigned short big endian
60 writedata("usb", ["00" "7B" "B2" "6E" "E2" "40"]);
61 //unsigned short little endian
62 writedata("usl", ["7B" "00" "6E" "B2" "40" "E2"]);
63
64 //long big endian
65 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"]);
66 //long little endian
67 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"]);
68
69 //int big endian
70 writedata("ib", ["FF" "FF" "FF" "85" "FF" "FF" "A4" "60" "FF" "FE" "1D" "C0"]);
71 //int little endian
72 writedata("il", ["85" "FF" "FF" "FF" "60" "A4" "FF" "FF" "C0" "1D" "FE" "FF"]);
73
74 //short big endian
75 writedata("sb", ["FF" "85" "A4" "60" "1D" "C0"]);
76 //short little endian
77 writedata("sl", ["85" "FF" "60" "A4" "C0" "1D"]);
78
79 res = readdata("ulb");
80 assert_checkequal(res, [ul1, ul2, ul3]);
81 res = readdata("ull");
82 assert_checkequal(res, [ul1, ul2, ul3]);
83 res = readdata("lb");
84 assert_checkequal(res, [l1, l2, l3]);
85 res = readdata("ll");
86 assert_checkequal(res, [l1, l2, l3]);
87
88 res = readdata("uib");
89 assert_checkequal(res, [ui1, ui2, ui3]);
90 res = readdata("uil");
91 assert_checkequal(res, [ui1, ui2, ui3]);
92 res = readdata("usb");
93 assert_checkequal(res, [us1, us2, us3]);
94 res = readdata("usl");
95 assert_checkequal(res, [us1, us2, us3]);
96
97 res = readdata("ib");
98 assert_checkequal(res, [i1, i2, i3]);
99 res = readdata("il");
100 assert_checkequal(res, [i1, i2, i3]);
101 res = readdata("sb");
102 assert_checkequal(res, [s1, s2, s3]);
103 res = readdata("sl");
104 assert_checkequal(res, [s1, s2, s3]);
105
106 // check default output type of mgeti
107 file1 = fullfile(TMPDIR,'test1.bin');
108 fd1=mopen(file1,'wb');
109 mput(1996,'ull',fd1);
110 mclose(fd1);
111
112 fd1=mopen(file1,'rb');
113 a=mgeti(1);
114 assert_checkequal(typeof(a), "int32");
115 assert_checkequal(a, int32(1996));