-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathBasicTypes.wlt
101 lines (84 loc) · 1.67 KB
/
BasicTypes.wlt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
Needs["MUnit`"]
(* Test the loader function generated by `generate_loader!`. *)
TestMatch[
load = LibraryFunctionLoad[
"libbasic_types",
"load_basic_types_functions",
LinkObject,
LinkObject
];
$functions = load["libbasic_types"];
Sort[$functions]
,
<|
"add2" -> LibraryFunction[_, "add2", {Integer, Integer}, Integer],
"add3" -> LibraryFunction[_, "add3", {Integer, Integer, Integer}, Integer],
"positive_i64" -> LibraryFunction[
_,
"positive_i64",
{{LibraryDataType[NumericArray, "Integer64"], "Constant"}},
LibraryDataType[NumericArray, "UnsignedInteger8"]
],
"reverse_string" -> LibraryFunction[
_,
"reverse_string",
{"UTF8String"},
"UTF8String"
],
"square" -> LibraryFunction[_, "square", {Integer}, Integer],
"total_i64" -> LibraryFunction[
_,
"total_i64",
{{LibraryDataType[NumericArray, "Integer64"], "Constant"}},
Integer
],
"xkcd_get_random_number" -> LibraryFunction[_, "xkcd_get_random_number", {}, Integer]
|>
]
Test[
square = $functions["square"];
square[11]
,
121
]
Test[
reverseString = $functions["reverse_string"];
reverseString["hello world"]
,
"dlrow olleh"
]
Test[
add2 = $functions["add2"];
add2[3, 3]
,
6
]
Test[
totalI64 = $functions["total_i64"];
totalI64[NumericArray[Range[100], "Integer64"]]
,
5050
]
Test[
positiveQ = $functions["positive_i64"];
positiveQ[NumericArray[{0, 1, -2, 3, 4, -5}, "Integer64"]]
,
NumericArray[{0, 1, 0, 1, 1, 0}, "UnsignedInteger8"]
]
Test[
randomNumber = $functions["xkcd_get_random_number"];
randomNumber[]
,
4
]
Test[
rawSquare = LibraryFunctionLoad[
"libbasic_types",
"raw_square",
{Integer},
Integer
];
rawSquare[50]
,
2500
]