void run_assign_and_copy_constructor_test(const char *test_name) { REMARK("Testing assignment and copy construction for %s\n", test_name); // test initializer with exemplar T initializer0; test_helper<T>::init(initializer0); T initializer7; test_helper<T>::set(initializer7,7); tbb::enumerable_thread_specific<T> create1(initializer7); (void) create1.local(); // create an initialized value ASSERT(7 == test_helper<T>::get(create1.local()), NULL); // test copy construction with exemplar initializer create1.clear(); tbb::enumerable_thread_specific<T> copy1(create1); (void) copy1.local(); ASSERT(7 == test_helper<T>::get(copy1.local()), NULL); // test copy assignment with exemplar initializer create1.clear(); tbb::enumerable_thread_specific<T> assign1(initializer0); assign1 = create1; (void) assign1.local(); ASSERT(7 == test_helper<T>::get(assign1.local()), NULL); // test creation with finit function FunctorFinit<T,7> my_finit7(SecretTag); tbb::enumerable_thread_specific<T> create2(my_finit7); (void) create2.local(); ASSERT(7 == test_helper<T>::get(create2.local()), NULL); // test copy construction with function initializer create2.clear(); tbb::enumerable_thread_specific<T> copy2(create2); (void) copy2.local(); ASSERT(7 == test_helper<T>::get(copy2.local()), NULL); // test copy assignment with function initializer create2.clear(); FunctorFinit<T,0> my_finit(SecretTag); tbb::enumerable_thread_specific<T> assign2(my_finit); assign2 = create2; (void) assign2.local(); ASSERT(7 == test_helper<T>::get(assign2.local()), NULL); }
int main() { struct dummy *pd = &global; assign2(&pd->a, &pd->b); if (a != b) { printf("ERROR!\n"); assert_fail(); goto ERROR; } return 0; ERROR: return 1; }
void RunAssignmentAndCopyConstructorTest(const char *test_name) { REMARK("Testing assignment and copy construction for %s\n", test_name); // test creation with finit function (combine returns finit return value if no threads have created locals) FunctorAddFinit7<T> my_finit7_decl; tbb::combinable<T> create2(my_finit7_decl); ASSERT(7 == create2.combine(my_combine<T>), NULL); // test copy construction with function initializer tbb::combinable<T> copy2(create2); ASSERT(7 == copy2.combine(my_combine<T>), NULL); // test copy assignment with function initializer FunctorAddFinit<T> my_finit_decl; tbb::combinable<T> assign2(my_finit_decl); assign2 = create2; ASSERT(7 == assign2.combine(my_combine<T>), NULL); }