2
2
3
3
use std;
4
4
import std:: ivec;
5
+ import std:: option:: none;
6
+ import std:: option:: some;
5
7
6
8
fn test_reserve_and_on_heap ( ) {
7
9
let int[ ] v = ~[ 1 , 2 ] ;
@@ -37,14 +39,14 @@ fn test_unsafe_ptrs() {
37
39
fn test_init_fn ( ) {
38
40
fn square ( uint n) -> uint { ret n * n; }
39
41
40
- // Test on-stack init-fn .
42
+ // Test on-stack init_fn .
41
43
auto v = ivec:: init_fn ( square, 3 u) ;
42
44
assert ( ivec:: len ( v) == 3 u) ;
43
45
assert ( v. ( 0 ) == 0 u) ;
44
46
assert ( v. ( 1 ) == 1 u) ;
45
47
assert ( v. ( 2 ) == 4 u) ;
46
48
47
- // Test on-heap init-fn .
49
+ // Test on-heap init_fn .
48
50
v = ivec:: init_fn ( square, 5 u) ;
49
51
assert ( ivec:: len ( v) == 5 u) ;
50
52
assert ( v. ( 0 ) == 0 u) ;
@@ -54,9 +56,62 @@ fn test_init_fn() {
54
56
assert ( v. ( 4 ) == 16 u) ;
55
57
}
56
58
59
+ fn test_init_elt ( ) {
60
+ // Test on-stack init_elt.
61
+ auto v = ivec:: init_elt ( 10 u, 2 u) ;
62
+ assert ( ivec:: len ( v) == 2 u) ;
63
+ assert ( v. ( 0 ) == 10 u) ;
64
+ assert ( v. ( 1 ) == 10 u) ;
65
+
66
+ // Test on-heap init_elt.
67
+ v = ivec:: init_elt ( 20 u, 6 u) ;
68
+ assert ( v. ( 0 ) == 20 u) ;
69
+ assert ( v. ( 1 ) == 20 u) ;
70
+ assert ( v. ( 2 ) == 20 u) ;
71
+ assert ( v. ( 3 ) == 20 u) ;
72
+ assert ( v. ( 4 ) == 20 u) ;
73
+ assert ( v. ( 5 ) == 20 u) ;
74
+ }
75
+
76
+ fn test_last ( ) {
77
+ auto n = ivec:: last ( ~[ ] ) ;
78
+ assert ( n == none) ;
79
+ n = ivec:: last ( ~[ 1 , 2 , 3 ] ) ;
80
+ assert ( n == some ( 3 ) ) ;
81
+ n = ivec:: last ( ~[ 1 , 2 , 3 , 4 , 5 ] ) ;
82
+ assert ( n == some ( 5 ) ) ;
83
+ }
84
+
85
+ fn test_slice ( ) {
86
+ // Test on-stack -> on-stack slice.
87
+ auto v = ivec:: slice ( ~[ 1 , 2 , 3 ] , 1 u, 3 u) ;
88
+ assert ( ivec:: len ( v) == 2 u) ;
89
+ assert ( v. ( 0 ) == 2 ) ;
90
+ assert ( v. ( 1 ) == 3 ) ;
91
+
92
+ // Test on-heap -> on-stack slice.
93
+ v = ivec:: slice ( ~[ 1 , 2 , 3 , 4 , 5 ] , 0 u, 3 u) ;
94
+ assert ( ivec:: len ( v) == 3 u) ;
95
+ assert ( v. ( 0 ) == 1 ) ;
96
+ assert ( v. ( 1 ) == 2 ) ;
97
+ assert ( v. ( 2 ) == 3 ) ;
98
+
99
+ // Test on-heap -> on-heap slice.
100
+ v = ivec:: slice ( ~[ 1 , 2 , 3 , 4 , 5 , 6 ] , 1 u, 6 u) ;
101
+ assert ( ivec:: len ( v) == 5 u) ;
102
+ assert ( v. ( 0 ) == 2 ) ;
103
+ assert ( v. ( 1 ) == 3 ) ;
104
+ assert ( v. ( 2 ) == 4 ) ;
105
+ assert ( v. ( 3 ) == 5 ) ;
106
+ assert ( v. ( 4 ) == 6 ) ;
107
+ }
108
+
57
109
fn main ( ) {
58
110
test_reserve_and_on_heap ( ) ;
59
111
test_unsafe_ptrs ( ) ;
60
112
test_init_fn ( ) ;
113
+ test_init_elt ( ) ;
114
+ test_last ( ) ;
115
+ test_slice ( ) ;
61
116
}
62
117
0 commit comments