forked from JuliaLang/julia
-
Notifications
You must be signed in to change notification settings - Fork 0
/
corelib.jl
91 lines (85 loc) · 1.67 KB
/
corelib.jl
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
# ranges
@assert size(10:1:0) == (0,)
@assert length(1:.2:2) == 6
@assert length(1.:.2:2.) == 6
@assert length(2:-.2:1) == 6
@assert length(2.:-.2:1.) == 6
@assert length(2:.2:1) == 0
@assert length(2.:.2:1.) == 0
@assert length(1:0) == 0
@assert length(0.0:-0.5) == 0
@assert length(1:2:0) == 0
L32 = linspace(int32(1), int32(4), 4)
L64 = linspace(int64(1), int64(4), 4)
@assert L32[1] == 1 && L64[1] == 1
@assert L32[2] == 2 && L64[2] == 2
@assert L32[3] == 3 && L64[3] == 3
@assert L32[4] == 4 && L64[4] == 4
r = [5:-1:1]
@assert r[1]==5
@assert r[2]==4
@assert r[3]==3
@assert r[4]==2
@assert r[5]==1
# comprehensions
X = [ i+2j | i=1:5, j=1:5 ]
@assert X[2,3] == 8
@assert X[4,5] == 14
@assert ones(2,3) * ones(2,3)' == [3. 3.; 3. 3.] #'
@assert [ [1,2] | i=1:2, : ] == [1 2; 1 2]
# where element type is a Union. try to confuse type inference.
foo32_64(x) = (x<2) ? int32(x) : int64(x)
boo32_64() = [ foo32_64(i) | i=1:2 ]
let a36 = boo32_64()
@assert a36[1]==1 && a36[2]==2
end
@assert (10.^[-1])[1] == 0.1
@assert (10.^[-1.])[1] == 0.1
# hash table
h = HashTable()
for i=1:10000
h[i] = i+1
end
for i=1:10000
@assert (h[i] == i+1)
end
for i=1:2:10000
del(h, i)
end
for i=1:2:10000
h[i] = i+1
end
for i=1:10000
@assert (h[i] == i+1)
end
for i=1:10000
del(h, i)
end
@assert isempty(h)
h[77] = 100
@assert h[77]==100
for i=1:10000
h[i] = i+1
end
for i=1:2:10000
del(h, i)
end
for i=10001:20000
h[i] = i+1
end
for i=2:2:10000
@assert h[i]==i+1
end
for i=10000:20000
@assert h[i]==i+1
end
let
z = HashTable()
get_KeyError = false
try
z["a"]
catch _e123_
get_KeyError = isa(_e123_,KeyError)
end
@assert get_KeyError
end