File: maptest.cc

package info (click to toggle)
wvstreams 4.0.2-4
  • links: PTS
  • area: main
  • in suites: sarge
  • size: 6,420 kB
  • ctags: 6,518
  • sloc: cpp: 52,544; sh: 5,770; ansic: 810; makefile: 461; tcl: 114; perl: 18
file content (70 lines) | stat: -rw-r--r-- 1,765 bytes parent folder | download | duplicates (3)
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
#include "wvhashtable.h"
#include "wvstring.h"

class AutoFreeTest
{
public:
    AutoFreeTest ()
    {
        fprintf (stderr, "AutoFreeTest created.\n");
    };
    ~AutoFreeTest ()
    {
        fprintf (stderr, "AutoFreeTest deleted.\n");
    };
};

int main ()
{
    WvMap<WvString, WvString> map (5);
    fprintf (stderr, "added foo = bar\n");
    map.add ("foo", "bar");
    fprintf (stderr, "looked up foo = %s\n", map.find ("foo")->cstr ());
    map.remove("foo");
    assert(!map.find("foo"));

    map.add("meaw", "death");
    map.add("dog", "cow");
    map.add("star", "trek");
    map.add("star", "office");

    // Iterator test

    WvMap<WvString, WvString>::Iter i(map);

    for (i.rewind(); i.next(); )
    {
        fprintf (stderr, "Iter test: %s = %s\n", i->key.cstr(), i->data.cstr());
    }

    // Check that auto_free does nothing for objects

    WvMap<WvString, WvString> objfreemap (5);
    fprintf (stderr, "added foo = bar\n");
    objfreemap.add ("foo", "bar", true);
    fprintf (stderr, "looked up foo = %s\n", objfreemap.find ("foo")->cstr ());
    objfreemap.remove("foo");
    assert(!objfreemap.find("foo"));

    WvMap<WvString, AutoFreeTest*> freemap(5);
    freemap.add("moo", new AutoFreeTest(), true);
    assert(freemap.find("moo"));
    freemap.remove("moo");

    // check if sorting confuses auto_free 
    // a'la auto_ptr's in standard containers

    freemap.add("meaw", new AutoFreeTest(), true);
    freemap.add("dog", new AutoFreeTest(), true);
    freemap.add("star", new AutoFreeTest(), true);
    freemap.add("star", new AutoFreeTest(), true);

    WvMap<WvString, AutoFreeTest*>::Iter j(freemap);

    for (j.rewind(); j.next(); )
    {
        fprintf (stderr, "Iter test: %s\n", j->key.cstr());
    }
}