@@ -207,6 +207,38 @@ test_write_concern_fsync_and_journal_gle_and_validity (void)
207
207
mongoc_write_concern_destroy (write_concern );
208
208
}
209
209
210
+ static void
211
+ test_write_concern_wtimeout_validity (void )
212
+ {
213
+ mongoc_write_concern_t * write_concern = mongoc_write_concern_new ();
214
+
215
+ /* Test defaults */
216
+ ASSERT (write_concern );
217
+ ASSERT (mongoc_write_concern_get_w (write_concern ) == MONGOC_WRITE_CONCERN_W_DEFAULT );
218
+ ASSERT (mongoc_write_concern_get_wtimeout (write_concern ) == 0 );
219
+ ASSERT (!mongoc_write_concern_get_wmajority (write_concern ));
220
+
221
+ /* mongoc_write_concern_set_wtimeout() ignores invalid wtimeout */
222
+ mongoc_write_concern_set_wtimeout (write_concern , -1 );
223
+ ASSERT (mongoc_write_concern_get_w (write_concern ) == MONGOC_WRITE_CONCERN_W_DEFAULT );
224
+ ASSERT (mongoc_write_concern_get_wtimeout (write_concern ) == 0 );
225
+ ASSERT (!mongoc_write_concern_get_wmajority (write_concern ));
226
+ ASSERT (_mongoc_write_concern_is_valid (write_concern ));
227
+
228
+ /* mongoc_write_concern_set_wmajority() ignores invalid wtimeout */
229
+ mongoc_write_concern_set_wmajority (write_concern , -1 );
230
+ ASSERT (mongoc_write_concern_get_w (write_concern ) == MONGOC_WRITE_CONCERN_W_MAJORITY );
231
+ ASSERT (mongoc_write_concern_get_wtimeout (write_concern ) == 0 );
232
+ ASSERT (mongoc_write_concern_get_wmajority (write_concern ));
233
+ ASSERT (_mongoc_write_concern_is_valid (write_concern ));
234
+
235
+ /* Manually assigning a negative wtimeout will make the write concern invalid */
236
+ write_concern -> wtimeout = -1 ;
237
+ ASSERT (!_mongoc_write_concern_is_valid (write_concern ));
238
+
239
+ mongoc_write_concern_destroy (write_concern );
240
+ }
241
+
210
242
211
243
void
212
244
test_write_concern_install (TestSuite * suite )
@@ -215,4 +247,5 @@ test_write_concern_install (TestSuite *suite)
215
247
TestSuite_Add (suite , "/WriteConcern/bson_omits_defaults" , test_write_concern_bson_omits_defaults );
216
248
TestSuite_Add (suite , "/WriteConcern/bson_includes_false_fsync_and_journal" , test_write_concern_bson_includes_false_fsync_and_journal );
217
249
TestSuite_Add (suite , "/WriteConcern/fsync_and_journal_gle_and_validity" , test_write_concern_fsync_and_journal_gle_and_validity );
250
+ TestSuite_Add (suite , "/WriteConcern/wtimeout_validity" , test_write_concern_wtimeout_validity );
218
251
}
0 commit comments