4
%% Copyright Ericsson AB 2002-2010. All Rights Reserved.
6
%% The contents of this file are subject to the Erlang Public License,
7
%% Version 1.1, (the "License"); you may not use this file except in
8
%% compliance with the License. You should have received a copy of the
9
%% Erlang Public License along with this software. If not, it can be
10
%% retrieved online at http://www.erlang.org/.
12
%% Software distributed under the License is distributed on an "AS IS"
13
%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
14
%% the License for the specific language governing rights and limitations
22
-export([void_test/2, long_test/2, longlong_test/2, ushort_test/2,
23
ulong_test/2, ulonglong_test/2, double_test/2, char_test/2,
24
wchar_test/2, octet_test/2, bool_test/2, struct_test/2,
25
struct2_test/2, seq1_test/2, seq2_test/2, seq3_test/2,
26
seq4_test/2, seq5_test/2, array1_test/2, array2_test/2,
27
enum_test/2, string1_test/2, wstring1_test/2, string2_test/2,
28
string3_test/2, string4_test/2, pid_test/2, port_test/2,
29
ref_test/2, term_test/2, typedef_test/2,
30
inline_sequence_test/2, term_sequence_test/2,
37
-include("oe_erl_c_test.hrl").
40
void_test(Node, Timeout) ->
41
Ret = m_i:void_test({olsson, Node}, Timeout),
42
Ret == void. % XXX Not documented
46
long_test(Node, Timeout) ->
48
{Ret, Out} = m_i:long_test({olsson, Node}, Timeout, In),
49
(Ret == In) and (Out == In).
53
longlong_test(Node, Timeout) ->
55
{Ret, Out} = m_i:longlong_test({olsson, Node}, Timeout, In),
56
(Ret == In) and (Out == In).
60
ushort_test(Node, Timeout) ->
62
{Ret, Out} = m_i:ushort_test({olsson, Node}, Timeout, In),
63
(Ret == In) and (Out == In).
67
ulong_test(Node, Timeout) ->
69
{Ret, Out} = m_i:ulong_test({olsson, Node}, Timeout, In),
70
(Ret == In) and (Out == In).
74
ulonglong_test(Node, Timeout) ->
76
{Ret, Out} = m_i:ulonglong_test({olsson, Node}, Timeout, In),
77
(Ret == In) and (Out == In).
81
double_test(Node, Timeout) ->
83
{Ret, Out} = m_i:double_test({olsson, Node}, Timeout, In),
84
(Ret == In) and (Out == In).
88
char_test(Node, Timeout) ->
90
{Ret, Out} = m_i:char_test({olsson, Node}, Timeout, In),
91
(Ret == In) and (Out == In).
95
wchar_test(Node, Timeout) ->
97
{Ret, Out} = m_i:wchar_test({olsson, Node}, Timeout, In),
98
(Ret == In) and (Out == In).
102
octet_test(Node, Timeout) ->
104
{Ret, Out} = m_i:octet_test({olsson, Node}, Timeout, In),
105
(Ret == In) and (Out == In).
109
bool_test(Node, Timeout) ->
111
{Ret, Out} = m_i:bool_test({olsson, Node}, Timeout, In),
112
(Ret == In) and (Out == In).
116
struct_test(Node, Timeout) ->
117
In = #m_b{l = max_long(), c = $a},
118
{Ret, Out} = m_i:struct_test({olsson, Node}, Timeout, In),
119
(Ret == In) and (Out == In).
123
struct2_test(Node, Timeout) ->
124
In = #m_es{ f = banana, l = max_long()},
125
{Ret, Out} = m_i:struct2_test({olsson, Node}, Timeout, In),
126
(Ret == In) and (Out == In).
130
seq1_test(Node, Timeout) ->
131
B1 = #m_b{l = max_long(), c = $a},
132
B2 = #m_b{l = min_long(), c = $b},
134
{Ret, Out} = m_i:seq1_test({olsson, Node}, Timeout, In),
135
(Ret == In) and (Out == In).
139
seq2_test(Node, Timeout) ->
140
B = #m_b{l = max_long(), c = $a},
141
A = #m_a{l = min_long(), y = [B, B], d = 4711.31},
143
{Ret, Out} = m_i:seq2_test({olsson, Node}, Timeout, In),
144
(Ret == In) and (Out == In).
148
seq3_test(Node, Timeout) ->
149
In = [max_long(), min_long(), max_long()],
150
{Ret, Out} = m_i:seq3_test({olsson, Node}, Timeout, In),
151
(Ret == In) and (Out == In).
155
seq4_test(Node, Timeout) ->
156
In = [["hello", "all"], ["Erlang", "users", "!"]],
157
{Ret, Out} = m_i:seq4_test({olsson, Node}, Timeout, In),
158
(Ret == In) and (Out == In).
162
seq5_test(Node, Timeout) ->
163
Arr3 = mk_array(3, max_long()),
164
In = [[Arr3, Arr3], [Arr3, Arr3, Arr3]],
165
{Ret, Out} = m_i:seq5_test({olsson, Node}, Timeout, In),
166
(Ret == In) and (Out == In).
170
array1_test(Node, Timeout) ->
171
In = mk_array(500, min_long()),
172
{Ret, Out} = m_i:array1_test({olsson, Node}, Timeout, In),
173
(Ret == In) and (Out == In).
177
array2_test(Node, Timeout) ->
178
In = mk_array(2, mk_array(3, min_long())),
179
{Ret, Out} = m_i:array2_test({olsson, Node}, Timeout, In),
180
(Ret == In) and (Out == In).
184
enum_test(Node, Timeout) ->
186
{Ret, Out} = m_i:enum_test({olsson, Node}, Timeout, In),
187
(Ret == In) and (Out == In).
191
string1_test(Node, Timeout) ->
192
In = "Developing Erlang applications is fun!",
193
{Ret, Out} = m_i:string1_test({olsson, Node}, Timeout, In),
194
(Ret == In) and (Out == In).
198
wstring1_test(Node, Timeout) ->
199
In = [1047| "eveloping Erlang applications is fun!"],
200
{Ret, Out} = m_i:wstring1_test({olsson, Node}, Timeout, In),
201
(Ret == In) and (Out == In).
205
string2_test(Node, Timeout) ->
206
In = ["Developing Erlang applications ", "is fun!"],
207
{Ret, Out} = m_i:string2_test({olsson, Node}, Timeout, In),
208
(Ret == In) and (Out == In).
212
string3_test(Node, Timeout) ->
213
In = "Developing Erlang applications is fun!",
214
{Ret, Out} = m_i:string3_test({olsson, Node}, Timeout, In),
215
(Ret == In) and (Out == In).
219
string4_test(Node, Timeout) ->
223
str4 = "Developing Erlang applications "
225
str7 = mk_array(3, mk_array(2, max_long())),
226
str5 = [$a, $b, $c, $d, $e, $f],
227
str6 = "123456789012",
229
str9 = "123456789012",
230
str10 = [$a, $b, $c, $d, $e, $f]
232
{Ret, Out} = m_i:string4_test({olsson, Node}, Timeout, In),
233
(Ret == In) and (Out == In).
237
pid_test(Node, Timeout) ->
239
{Ret, Out} = m_i:pid_test({olsson, Node}, Timeout, In),
240
(Ret == In) and (Out == In).
244
port_test(Node, Timeout) ->
245
In = get(port_test_port),
246
{Ret, Out} = m_i:port_test({olsson, Node}, Timeout, In),
247
(Ret == In) and (Out == In).
251
ref_test(Node, Timeout) ->
253
{Ret, Out} = m_i:ref_test({olsson, Node}, Timeout, In),
254
(Ret == In) and (Out == In).
258
term_test(Node, Timeout) ->
259
In = {[a, b], 17, kalle},
260
{Ret, Out} = m_i:term_test({olsson, Node}, Timeout, In),
261
(Ret == In) and (Out == In).
265
typedef_test(Node, Timeout) ->
266
In1 = {nisse, [1, 2], olsson},
267
In2 = get(port_test_port),
268
{Ret, Out1, Out2} = m_i:typedef_test({olsson, Node}, Timeout, In1, In2),
269
%% XXX Should check that Ret is an integer.
270
(Out1 == In1) and (Out2 == In2).
274
inline_sequence_test(Node, Timeout) ->
275
In = #m_s{l = min_long(), sl = [max_long(), min_long()]},
276
{Ret, Out} = m_i:inline_sequence_test({olsson, Node}, Timeout, In),
277
(Ret == In) and (Out == In).
281
term_sequence_test(Node, Timeout) ->
282
In = lists:duplicate(17, {nisse, [1, 2], {kalle, olsson}}),
283
{Ret, Out} = m_i:term_sequence_test({olsson, Node}, Timeout, In),
284
(Ret == In) and (Out == In).
288
term_struct_test(Node, Timeout) ->
289
In = #m_et{e = {nisse, ["abcde"], {kalle, olsson}}, l = 4711},
290
{Ret, Out} = m_i:term_struct_test({olsson, Node}, Timeout, In),
291
(Ret == In) and (Out == In).
301
mk_array(lists:duplicate(N, E)).
304
%% power_of_two(15) - 1.
306
power_of_two(31) - 1.
308
power_of_two(63) - 1.
310
power_of_two(16) - 1.
312
power_of_two(32) - 1.
314
power_of_two(64) - 1.
317
%% -power_of_two(15).
321
%% -power_of_two(63).
326
%% min_ulonglong() ->
330
round(math:pow(2, N)).