// Swap two shared resources void shared_14() { { assert_ck(0, 0); auto u0 = shared_test(test_behavior::init()); assert_ck(1, 0); auto u1 = shared_test(test_behavior::init()); assert_ck(2, 0); auto old0 = u0.get(); auto old1 = u1.get(); assert_ck(2, 0); u0.swap(u1); assert_ck(2, 0); assert(u0.get() == old1); assert(u1.get() == old0); (void)old0; (void)old1; } assert_ck(2, 2); }
// Check uniqueness of shared void shared_15() { { assert_ck(0, 0); auto u0 = shared_test(test_behavior::init()); assert_ck(1, 0); assert(u0.unique()); auto u1 = u0; assert_ck(1, 0); assert(!u0.unique()); u1 = shared_test(test_behavior::init()); assert_ck(2, 0); assert(u0.unique()); assert(u1.unique()); } assert_ck(2, 2); }
// Copy shared void shared_13() { { assert_ck(0, 0); auto u0 = shared_test(test_behavior::init()); assert_ck(1, 0); auto u1 = u0; assert_ck(1, 0); assert(u0.get() == u1.get()); } assert_ck(1, 1); }
// Get use count of two shareds pointing to same data void shared_12() { { assert_ck(0, 0); auto u0 = shared_test(test_behavior::init()); assert_ck(1, 0); { auto u1 = u0; assert_ck(1, 0); assert(u0.use_count() == 2); assert(u1.use_count() == 2); } assert_ck(1, 0); assert(u0.use_count() == 1); } assert_ck(1, 1); }
TEST(Process, BasicWaitCondition) { shared_test(2, 4000, 2, root_wait); }
TEST(Process, BasicLogging2Exec) { shared_test(2, 2000, 2, root_create); }
// FIXME: There's a scheduling problem with just 1 executor. // This should be investigated, but isn't super urgent at the moment. TEST(Process, DISABLED_BasicLogging1Exec) { shared_test(2, 2000, 1, root_create); }