diff options
Diffstat (limited to 'src/tests')
-rw-r--r-- | src/tests/streamstack.cpp | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/src/tests/streamstack.cpp b/src/tests/streamstack.cpp new file mode 100644 index 0000000..56a7076 --- /dev/null +++ b/src/tests/streamstack.cpp | |||
@@ -0,0 +1,93 @@ | |||
1 | #include "bu/streamstack.h" | ||
2 | |||
3 | #include "bu/file.h" | ||
4 | #include "bu/base64.h" | ||
5 | #include "bu/bzip2.h" | ||
6 | |||
7 | #include "bu/sio.h" | ||
8 | |||
9 | #include <time.h> | ||
10 | |||
11 | using namespace Bu; | ||
12 | |||
13 | class DoStuff | ||
14 | { | ||
15 | public: | ||
16 | DoStuff( Bu::Stream &rStream ) : | ||
17 | rStream( rStream ) | ||
18 | { | ||
19 | } | ||
20 | |||
21 | virtual ~DoStuff() | ||
22 | { | ||
23 | } | ||
24 | |||
25 | void write() | ||
26 | { | ||
27 | Bu::FString s; | ||
28 | time_t tNow = time( NULL ); | ||
29 | s = ctime( &tNow ); | ||
30 | long lSize = s.getSize()-1; | ||
31 | rStream.write( &lSize, sizeof(long) ); | ||
32 | rStream.write( s.getStr(), lSize ); | ||
33 | } | ||
34 | |||
35 | void read() | ||
36 | { | ||
37 | Bu::FString s; | ||
38 | long lSize; | ||
39 | rStream.read( &lSize, sizeof(long) ); | ||
40 | s.setSize( lSize ); | ||
41 | rStream.read( s.getStr(), lSize ); | ||
42 | sio << "Read str(" << lSize << ") = '" << s << "'" << sio.nl; | ||
43 | } | ||
44 | |||
45 | private: | ||
46 | Bu::Stream &rStream; | ||
47 | }; | ||
48 | |||
49 | int main() | ||
50 | { | ||
51 | Bu::StreamStack ss; | ||
52 | |||
53 | DoStuff ds( ss ); | ||
54 | |||
55 | try | ||
56 | { | ||
57 | ds.write(); | ||
58 | sio << "This shouldn't have worked." << sio.nl; | ||
59 | } | ||
60 | catch( Bu::ExceptionBase &e ) | ||
61 | { | ||
62 | sio << "Got exception, this is good: " << e.what() << sio.nl; | ||
63 | } | ||
64 | |||
65 | ss.setStream( new Bu::File("Hello.test", Bu::File::WriteNew ) ); | ||
66 | |||
67 | ds.write(); | ||
68 | |||
69 | ss.pushFilter<Bu::Base64>(); | ||
70 | |||
71 | ds.write(); | ||
72 | |||
73 | ss.pushFilter<Bu::BZip2>(); | ||
74 | |||
75 | ds.write(); | ||
76 | |||
77 | ss.clearStack(); | ||
78 | |||
79 | ss.setStream( new Bu::File("Hello.test", Bu::File::Read ) ); | ||
80 | |||
81 | ds.read(); | ||
82 | |||
83 | ss.pushFilter<Bu::Base64>(); | ||
84 | |||
85 | ds.read(); | ||
86 | |||
87 | ss.pushFilter<Bu::BZip2>(); | ||
88 | |||
89 | ds.read(); | ||
90 | |||
91 | return 0; | ||
92 | } | ||
93 | |||