Change Section to debug for libmimetic0-dbg.
[debian/mimetic.git] / test / t.directory.h
1 #ifndef _T_DIRECTORY_H_
2 #define _T_DIRECTORY_H_
3 #include <string>
4 #include <iostream>
5 #include <fstream>
6 #include "cutee.h"
7 #include <mimetic/os/directory.h>
8 #include <mimetic/os/fileop.h>
9 #include <mimetic/utils.h>
10
11
12 namespace mimetic
13 {
14
15 class TEST_CLASS( test_directory )
16 {
17 public:
18     #define TESTDIR "__t_directory_h_testdir"
19     void setUp()
20     {
21         TEST_ASSERT( Directory::create(TESTDIR) );
22     }
23     void tearDown()
24     {
25         TEST_ASSERT( Directory::remove(TESTDIR) );
26     }
27     void TEST_FUNCTION( exists )
28     {
29         TEST_ASSERT( Directory::exists(TESTDIR) );
30         TEST_ASSERT( ! Directory::exists("__ThisDirShouldNotExist__") );
31     }
32     void TEST_FUNCTION( emptyDir )
33     {
34         // only . and .. should exist in TESTDIR
35         Directory d(TESTDIR);
36         Directory::iterator bit = d.begin(), eit = d.end();
37         for(; bit != eit; ++bit)
38         {
39             TEST_ASSERT( bit->name == "." || bit->name == ".." );
40         }
41     }
42     void TEST_FUNCTION( withFiles )
43     {
44         using namespace std;
45         {
46         ofstream of(TESTDIR "/file1");
47         of << endl << endl;
48         }
49         Directory d(TESTDIR);
50         Directory::iterator bit = d.begin(), eit = d.end();
51         for(int count = 2; bit != eit; ++bit, --count)
52         {
53             TEST_ASSERT( 
54                 bit->name == "." || 
55                 bit->name == ".." || 
56                 bit->name == "file1" 
57                 );
58             TEST_ASSERT( count >= 0); // max 2 items
59         }
60         FileOp::remove( TESTDIR "/file1" );
61     }
62     void TEST_FUNCTION( moreFiles )
63     {
64         using namespace std;
65         unsigned long tot = 0;
66         int n;
67         for(n = 1; n < 100; ++n)
68         {
69             string fqn = TESTDIR "/";
70             fqn += utils::int2str(n);
71             ofstream of(fqn.c_str());
72             tot += n;
73         }
74
75         Directory d(TESTDIR);
76         Directory::iterator bit = d.begin(), eit = d.end();
77         for(; bit != eit; ++bit)
78         {
79             if( bit->name == "." || bit->name == ".." )
80                 continue;
81             n = utils::str2int(bit->name);
82             tot -= n;
83         }
84         TEST_ASSERT( tot == 0); 
85
86         for(n = 1; n < 100; ++n)
87         {
88             string fqn = TESTDIR "/";
89             fqn += utils::int2str(n);
90             FileOp::remove( fqn );
91         }
92
93     }
94 };
95
96 }
97
98 #endif
99