]> WPIA git - cassiopeia.git/blob - test/src/bioWrapper.cpp
cln: Move code around, cleanup structure
[cassiopeia.git] / test / src / bioWrapper.cpp
1 #include <boost/test/unit_test.hpp>
2
3 #include "io/bios.h"
4 #include "io/opensslBIO.h"
5
6 class OpensslBIO1 : public OpensslBIO {
7 public:
8     int state;
9
10     int write( const char* buf, int num );
11     int read( char* buf, int size );
12     long ctrl( int cmod, long arg1, void* arg2 );
13
14     static const char* getName();
15 };
16
17 int OpensslBIO1::write( const char* buf, int num ) {
18     state = num * 2;
19     ( void ) buf;
20     return 0;
21 }
22
23 int OpensslBIO1::read( char* buf, int size ) {
24     state = size * 3;
25     ( void ) buf;
26     return 0;
27 }
28
29 long OpensslBIO1::ctrl( int cmod, long arg1, void* arg2 ) {
30     state = cmod * 7;
31     ( void ) arg1;
32     ( void ) arg2;
33     return 0;
34 }
35
36 const char* OpensslBIO1::getName() {
37     return "dummyBIO";
38 }
39
40 BOOST_AUTO_TEST_SUITE( TestBioWrapper )
41
42 BOOST_AUTO_TEST_CASE( BasicCalls ) {
43     std::shared_ptr<BIO> n( BIO_new( toBio<OpensslBIO1>() ), BIO_free );
44     OpensslBIO* o = new OpensslBIOWrapper( n );
45     OpensslBIO1* data = ( OpensslBIO1* ) n->ptr;
46
47     o->write( "bla", 13 );
48     BOOST_CHECK( data->state == 13 * 2 );
49
50     char buf[17];
51     o->read( buf, 17 );
52     BOOST_CHECK( data->state == 17 * 3 );
53
54     o->ctrl( 19, 0, 0 );
55     BOOST_CHECK( data->state == 19 * 7 );
56
57     delete o;
58 }
59
60 BOOST_AUTO_TEST_SUITE_END()