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 //unsigned int big endian
54 writedata("uib", ["00" "00" "00" "7B" "00" "00" "B2" "6E" "00" "01" "E2" "40"]);
55 //unsigned int little endian
56 writedata("uil", ["7B" "00" "00" "00" "6E" "B2" "00" "00" "40" "E2" "01" "00"]);
57 //unsigned short big endian
58 writedata("usb", ["00" "7B" "B2" "6E" "E2" "40"]);
59 //unsigned short little endian
60 writedata("usl", ["7B" "00" "6E" "B2" "40" "E2"]);
61
62 //long big endian
63 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"]);
64 //long little endian
65 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"]);
66 //int big endian
67 writedata("ib", ["FF" "FF" "FF" "85" "FF" "FF" "A4" "60" "FF" "FE" "1D" "C0"]);
68 //int little endian
69 writedata("il", ["85" "FF" "FF" "FF" "60" "A4" "FF" "FF" "C0" "1D" "FE" "FF"]);
70 //short big endian
71 writedata("sb", ["FF" "85" "A4" "60" "1D" "C0"]);
72 //short little endian
73 writedata("sl", ["85" "FF" "60" "A4" "C0" "1D"]);
74
75 res = readdata("ulb");
76 assert_checkequal(res, [ul1, ul2, ul3]);
77 res = readdata("ull");
78 assert_checkequal(res, [ul1, ul2, ul3]);
79 res = readdata("lb");
80 assert_checkequal(res, [l1, l2, l3]);
81 res = readdata("ll");
82 assert_checkequal(res, [l1, l2, l3]);
83
84 res = readdata("uib");
85 assert_checkequal(res, [ui1, ui2, ui3]);
86 res = readdata("uil");
87 assert_checkequal(res, [ui1, ui2, ui3]);
88 res = readdata("usb");
89 assert_checkequal(res, [us1, us2, us3]);
90 res = readdata("usl");
91 assert_checkequal(res, [us1, us2, us3]);
92
93 res = readdata("ib");
94 assert_checkequal(res, [i1, i2, i3]);
95 res = readdata("il");
96 assert_checkequal(res, [i1, i2, i3]);
97 res = readdata("sb");
98 assert_checkequal(res, [s1, s2, s3]);
99 res = readdata("sl");
100 assert_checkequal(res, [s1, s2, s3]);
101
102 // check default output type of mgeti
103 file1 = fullfile(TMPDIR,'test1.bin');
104 fd1=mopen(file1,'wb');
105 mput(1996,'ull',fd1);
106 mclose(fd1);
107
108 fd1=mopen(file1,'rb');
109 a=mgeti(1);
110 assert_checkequal(typeof(a), "int32");
111 assert_checkequal(a, int32(1996));