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// <-- CLI SHELL MODE -->
8function writedata(name, str)
9    f = mopen(TMPDIR + "/" + name + ".dat", "wb");
10    data = hex2dec(str);
11    mput(data, "uc", f);
12    mclose(f);
13endfunction
14function res = readdata(name)
15    f = mopen(TMPDIR + "/" + name + ".dat", "rb");
16    res = mgeti(3, name, f);
17    mclose(f);
18endfunction
19//
20//prepare data
21//
22ul1     = uint64(123); //0x7B
23ul2     = uint64(45678);//0xB26E
24ul3     = uint64(123456);//0x0001E240
25l1      = int64(-123); //0x7B
26l2      = int64(-23456);//0xB26E
27l3      = int64(-123456);//0x0001E240
28ui1     = uint32(123); //0x7B
29ui2     = uint32(45678);//0xB26E
30ui3     = uint32(123456);//0x0001E240
31i1      = int32(-123); //0x85
32i2      = int32(-23456);//0xA460
33i3      = int32(-123456);//0xFFFE1DC0
34i3t     = int32(7616);//0x1DC0
35us1     = uint16(123); //0x7B
36us2     = uint16(45678);//0xB26E
37us3     = uint16(123456);//0x0001E240
38s1      = int16(-123); //0x85
39s2      = int16(-23456);//0xA460
40s3      = int16(-123456);//0xFFFE1DC0
41s3t     = int16(7616);//0x1DC0
42//unsigned long big endian
43writedata("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
45writedata("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 int big endian
47writedata("uib", ["00" "00" "00" "7B" "00" "00" "B2" "6E" "00" "01" "E2" "40"]);
48//unsigned int little endian
49writedata("uil", ["7B" "00" "00" "00" "6E" "B2" "00" "00" "40" "E2" "01" "00"]);
50//unsigned short big endian
51writedata("usb", ["00" "7B" "B2" "6E" "E2" "40"]);
52//unsigned short little endian
53writedata("usl", ["7B" "00" "6E" "B2" "40" "E2"]);
54//long big endian
55writedata("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"]);
56//long little endian
57writedata("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"]);
58//int big endian
59writedata("ib", ["FF" "FF" "FF" "85" "FF" "FF" "A4" "60" "FF" "FE" "1D" "C0"]);
60//int little endian
61writedata("il", ["85" "FF" "FF" "FF" "60" "A4" "FF" "FF" "C0" "1D" "FE" "FF"]);
62//short big endian
63writedata("sb", ["FF" "85" "A4" "60" "1D" "C0"]);
64//short little endian
65writedata("sl", ["85" "FF" "60" "A4" "C0" "1D"]);
66res = readdata("ulb");
67assert_checkequal(res, [ul1, ul2, ul3]);
68res = readdata("ull");
69assert_checkequal(res, [ul1, ul2, ul3]);
70res = readdata("lb");
71assert_checkequal(res, [l1, l2, l3]);
72res = readdata("ll");
73assert_checkequal(res, [l1, l2, l3]);
74res = readdata("uib");
75assert_checkequal(res, [ui1, ui2, ui3]);
76res = readdata("uil");
77assert_checkequal(res, [ui1, ui2, ui3]);
78res = readdata("usb");
79assert_checkequal(res, [us1, us2, us3]);
80res = readdata("usl");
81assert_checkequal(res, [us1, us2, us3]);
82res = readdata("ib");
83assert_checkequal(res, [i1, i2, i3]);
84res = readdata("il");
85assert_checkequal(res, [i1, i2, i3]);
86res = readdata("sb");
87assert_checkequal(res, [s1, s2, s3]);
88res = readdata("sl");
89assert_checkequal(res, [s1, s2, s3]);
90// check default output type of mgeti
91file1 = fullfile(TMPDIR,'test1.bin');
92fd1=mopen(file1,'wb');
93mput(1996,'ull',fd1);
94mclose(fd1);
95fd1=mopen(file1,'rb');
96a=mgeti(1);
97assert_checkequal(typeof(a), "int32");
98assert_checkequal(a, int32(1996));
99