@@ -16,6 +16,13 @@ pub fn ImmutableVec::empty[T]() -> ImmutableVec[T] {
1616 { tree : Tree ::empty (), size : 0 , shift : 0 }
1717}
1818
19+ test "is_empty" {
20+ let v = ImmutableVec ::[1 , 2 , 3 , 4 , 5 ]
21+ let ve : ImmutableVec [Int ] = ImmutableVec ::empty ()
22+ inspect (is_empty (v ), content = "false" )?
23+ inspect (is_empty (ve ), content = "true" )?
24+ }
25+
1926pub fn to_string [T : Show ](self : ImmutableVec [T ]) -> String {
2027 let mut s = "ImmutableVec::[" .to_string ()
2128 for i = 0 ; i < self .size; i = i + 1 {
@@ -39,16 +46,18 @@ pub fn is_empty[T](v : ImmutableVec[T]) -> Bool {
3946 v .size == 0
4047}
4148
42- pub fn to_array [T : Show ](self : ImmutableVec [T ]) -> String {
43- let mut s = "ImmutableVec::[" . to_string ()
49+ pub fn to_array [T ](self : ImmutableVec [T ]) -> Array [ T ] {
50+ let arr = Array :: new ()
4451 for i = 0 ; i < self .size; i = i + 1 {
45- s = s + self [i ].to_string ()
46- if i < self .size - 1 {
47- s = s + ", "
48- }
52+ arr .push (self [i ])
4953 }
50- s = s + "]"
51- s
54+ arr
55+ }
56+
57+ test "to_array" {
58+ let v = ImmutableVec ::[1 , 2 , 3 , 4 ]
59+ inspect (v .to_array ().to_string (), content = "[1, 2, 3, 4]" )?
60+ inspect (v .push (5 ).to_array ().to_string (), content = "[1, 2, 3, 4, 5]" )?
5261}
5362
5463pub fn as_iter [T ](self : ImmutableVec [T ]) -> @iter .Iter [T ] {
@@ -68,29 +77,13 @@ pub fn as_iter[T](self : ImmutableVec[T]) -> @iter.Iter[T] {
6877test "as_iter" {
6978 let buf = Buffer ::make (20 )
7079 let v = ImmutableVec ::[1 , 2 , 3 ]
71- v .as_iter ().iter (
72- fn (e ) {
73- buf .write_string ("[\(e)]" )
74- },
75- )
80+ v .as_iter ().iter (fn (e ) { buf .write_string ("[\(e)]" ) })
7681 inspect (buf , content = "[1][2][3]" )?
7782 buf .reset ()
78- v .as_iter ().take (2 ).iter (
79- fn (e ) {
80- buf .write_string ("[\(e)]" )
81- },
82- )
83+ v .as_iter ().take (2 ).iter (fn (e ) { buf .write_string ("[\(e)]" ) })
8384 inspect (buf , content = "[1][2]" )?
8485}
8586
86-
87- test "is_empty" {
88- let v = ImmutableVec ::[1 , 2 , 3 , 4 , 5 ]
89- let ve : ImmutableVec [Int ] = ImmutableVec ::empty ()
90- inspect (is_empty (v ), content = "false" )?
91- inspect (is_empty (ve ), content = "true" )?
92- }
93-
9487pub fn length [T ](v : ImmutableVec [T ]) -> Int {
9588 v .size
9689}
0 commit comments