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