1 #include "test.h"
2 #include "mongo.h"
3 #include <stdio.h>
4 #include <string.h>
5 #include <stdlib.h>
6
7 static const char *db = "test";
8 static const char *ns = "test.c.error";
9
main()10 int main() {
11 mongo conn[1];
12 bson obj;
13
14 INIT_SOCKETS_FOR_WINDOWS;
15
16 if ( mongo_connect( conn , TEST_SERVER, 27017 ) ) {
17 printf( "failed to connect\n" );
18 exit( 1 );
19 }
20
21
22 /*********************/
23 ASSERT( mongo_cmd_get_prev_error( conn, db, NULL ) == MONGO_OK );
24 ASSERT( conn->lasterrcode == 0 );
25 ASSERT( conn->lasterrstr == NULL );
26
27 ASSERT( mongo_cmd_get_last_error( conn, db, NULL ) == MONGO_OK );
28 ASSERT( conn->lasterrcode == 0 );
29 ASSERT( conn->lasterrstr == NULL );
30
31 ASSERT( mongo_cmd_get_prev_error( conn, db, &obj ) == MONGO_OK );
32 bson_destroy( &obj );
33
34 ASSERT( mongo_cmd_get_last_error( conn, db, &obj ) == MONGO_OK );
35 bson_destroy( &obj );
36
37 /*********************/
38 mongo_simple_int_command( conn, db, "forceerror", 1, NULL );
39
40 ASSERT( mongo_cmd_get_prev_error( conn, db, NULL ) == MONGO_ERROR );
41 ASSERT( conn->lasterrcode == 10038 );
42 ASSERT( strcmp( ( const char * )conn->lasterrstr, "forced error" ) == 0 );
43
44 ASSERT( mongo_cmd_get_last_error( conn, db, NULL ) == MONGO_ERROR );
45
46 ASSERT( mongo_cmd_get_prev_error( conn, db, &obj ) == MONGO_ERROR );
47 bson_destroy( &obj );
48
49 ASSERT( mongo_cmd_get_last_error( conn, db, &obj ) == MONGO_ERROR );
50 bson_destroy( &obj );
51
52 /* should clear lasterror but not preverror */
53 mongo_find_one( conn, ns, bson_empty( &obj ), bson_empty( &obj ), NULL );
54
55 ASSERT( mongo_cmd_get_prev_error( conn, db, NULL ) == MONGO_ERROR );
56 ASSERT( mongo_cmd_get_last_error( conn, db, NULL ) == MONGO_OK );
57
58 ASSERT( mongo_cmd_get_prev_error( conn, db, &obj ) == MONGO_ERROR );
59 bson_destroy( &obj );
60
61 ASSERT( mongo_cmd_get_last_error( conn, db, &obj ) == MONGO_OK );
62 bson_destroy( &obj );
63
64 /*********************/
65 mongo_cmd_reset_error( conn, db );
66
67 ASSERT( mongo_cmd_get_prev_error( conn, db, NULL ) == MONGO_OK );
68 ASSERT( mongo_cmd_get_last_error( conn, db, NULL ) == MONGO_OK );
69
70 ASSERT( mongo_cmd_get_prev_error( conn, db, &obj ) == MONGO_OK );
71 bson_destroy( &obj );
72
73 ASSERT( mongo_cmd_get_last_error( conn, db, &obj ) == MONGO_OK );
74 bson_destroy( &obj );
75
76 mongo_cmd_drop_db( conn, db );
77 mongo_destroy( conn );
78
79 return 0;
80 }
81