about summary refs log tree commit diff
path: root/src/test/stdtest/treemap.rs
blob: 90aba286e6ea31d318b951fa1b04286ef0cd0621 (plain)
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
import core::*;

use std;
import option;
import std::treemap::*;
import option::some;
import option::none;
import str;

#[test]
fn init_treemap() { let _m = init::<int, int>(); }

#[test]
fn insert_one() { let m = init(); insert(m, 1, 2); }

#[test]
fn insert_two() { let m = init(); insert(m, 1, 2); insert(m, 3, 4); }

#[test]
fn insert_find() {
    let m = init();
    insert(m, 1, 2);
    assert (find(m, 1) == some(2));
}

#[test]
fn find_empty() { let m = init::<int, int>(); assert (find(m, 1) == none); }

#[test]
fn find_not_found() {
    let m = init();
    insert(m, 1, 2);
    assert (find(m, 2) == none);
}

#[test]
fn traverse_in_order() {
    let m = init();
    insert(m, 3, ());
    insert(m, 0, ());
    insert(m, 4, ());
    insert(m, 2, ());
    insert(m, 1, ());

    let n = @mutable 0;
    fn t(n: @mutable int, &&k: int, &&_v: ()) { assert (*n == k); *n += 1; }
    traverse(m, bind t(n, _, _));
}

#[test]
fn u8_map() {
    let m = init();

    let k1 = str::bytes("foo");
    let k2 = str::bytes("bar");

    insert(m, k1, "foo");
    insert(m, k2, "bar");

    assert (find(m, k2) == some("bar"));
    assert (find(m, k1) == some("foo"));
}