/src/test/run-pass/vec-self-append.rs
http://github.com/jruderman/rust · Rust · 49 lines · 41 code · 4 blank · 4 comment · 20 complexity · 47c25c0aef532b5c10db29db9d1b233e MD5 · raw file
- use std;
- import vec;
- fn test_heap_to_heap() {
- // a spills onto the heap
- let mut a = ~[0, 1, 2, 3, 4];
- a += a;
- assert (vec::len(a) == 10u);
- assert (a[0] == 0);
- assert (a[1] == 1);
- assert (a[2] == 2);
- assert (a[3] == 3);
- assert (a[4] == 4);
- assert (a[5] == 0);
- assert (a[6] == 1);
- assert (a[7] == 2);
- assert (a[8] == 3);
- assert (a[9] == 4);
- }
- fn test_stack_to_heap() {
- // a is entirely on the stack
- let mut a = ~[0, 1, 2];
- // a spills to the heap
- a += a;
- assert (vec::len(a) == 6u);
- assert (a[0] == 0);
- assert (a[1] == 1);
- assert (a[2] == 2);
- assert (a[3] == 0);
- assert (a[4] == 1);
- assert (a[5] == 2);
- }
- fn test_loop() {
- // Make sure we properly handle repeated self-appends.
- let mut a: ~[int] = ~[0];
- let mut i = 20;
- let mut expected_len = 1u;
- while i > 0 {
- log(error, vec::len(a));
- assert (vec::len(a) == expected_len);
- a += a;
- i -= 1;
- expected_len *= 2u;
- }
- }
- fn main() { test_heap_to_heap(); test_stack_to_heap(); test_loop(); }