rosbuild_add_executable(handles EXCLUDE_FROM_ALL handles.cpp)
rosbuild_add_gtest_build_flags(handles)

rosbuild_add_executable(timer_callbacks EXCLUDE_FROM_ALL timer_callbacks.cpp)
rosbuild_add_gtest_build_flags(timer_callbacks)

rosbuild_add_executable(latching_publisher EXCLUDE_FROM_ALL latching_publisher.cpp)
rosbuild_add_gtest_build_flags(latching_publisher)

rosbuild_add_executable(publish_n_fast EXCLUDE_FROM_ALL publish_n_fast.cpp)
rosbuild_declare_test(publish_n_fast)

rosbuild_add_executable(subscribe_self EXCLUDE_FROM_ALL subscribe_self.cpp)
rosbuild_add_gtest_build_flags(subscribe_self)

rosbuild_add_executable(pub_sub EXCLUDE_FROM_ALL pub_sub.cpp)
rosbuild_declare_test(pub_sub)

rosbuild_add_executable(sub_pub EXCLUDE_FROM_ALL sub_pub.cpp)
rosbuild_add_gtest_build_flags(sub_pub)

rosbuild_add_executable(publish_empty EXCLUDE_FROM_ALL publish_empty.cpp)
rosbuild_declare_test(publish_empty)

rosbuild_add_executable(publish_onsub EXCLUDE_FROM_ALL publish_onsub.cpp)
rosbuild_declare_test(publish_onsub)

rosbuild_add_executable(subscribe_n_fast EXCLUDE_FROM_ALL subscribe_n_fast.cpp)
rosbuild_add_gtest_build_flags(subscribe_n_fast)

rosbuild_add_executable(subscribe_empty EXCLUDE_FROM_ALL subscribe_empty.cpp)
rosbuild_add_gtest_build_flags(subscribe_empty)

rosbuild_add_executable(subscribe_resubscribe EXCLUDE_FROM_ALL subscribe_resubscribe.cpp)
rosbuild_add_gtest_build_flags(subscribe_resubscribe)

rosbuild_add_executable(subscribe_unsubscribe EXCLUDE_FROM_ALL subscribe_unsubscribe.cpp)
rosbuild_add_gtest_build_flags(subscribe_unsubscribe)

rosbuild_add_executable(publish_unadvertise EXCLUDE_FROM_ALL publish_unadvertise.cpp)
rosbuild_add_gtest_build_flags(publish_unadvertise)

rosbuild_add_executable(subscribe_unsubscribe_repeatedly EXCLUDE_FROM_ALL subscribe_unsubscribe_repeatedly.cpp)
rosbuild_declare_test(subscribe_unsubscribe_repeatedly)

rosbuild_add_executable(publish_constantly EXCLUDE_FROM_ALL publish_constantly.cpp)
rosbuild_declare_test(publish_constantly)

rosbuild_add_executable(param_update_test EXCLUDE_FROM_ALL param_update_test.cpp)
rosbuild_declare_test(param_update_test)


rosbuild_add_executable(real_time_test EXCLUDE_FROM_ALL real_time_test.cpp)
rosbuild_declare_test(real_time_test)
rosbuild_add_gtest_build_flags(real_time_test)

rosbuild_add_executable(sim_time_test EXCLUDE_FROM_ALL sim_time_test.cpp)
rosbuild_declare_test(sim_time_test)
rosbuild_add_gtest_build_flags(sim_time_test)

# Call a service
rosbuild_add_executable(service_adv EXCLUDE_FROM_ALL service_adv.cpp)
rosbuild_declare_test(service_adv)

rosbuild_add_executable(service_adv_unadv EXCLUDE_FROM_ALL service_adv_unadv.cpp)
rosbuild_declare_test(service_adv_unadv)
rosbuild_add_gtest_build_flags(service_adv_unadv)

rosbuild_add_executable(service_call EXCLUDE_FROM_ALL service_call.cpp)
rosbuild_add_gtest_build_flags(service_call)

rosbuild_add_executable(service_deadlock EXCLUDE_FROM_ALL service_deadlock.cpp)
rosbuild_add_gtest_build_flags(service_deadlock)

rosbuild_add_executable(service_call_repeatedly EXCLUDE_FROM_ALL service_call_repeatedly.cpp)
rosbuild_declare_test(service_call_repeatedly)


# Repeatedly call ros::init()
rosbuild_add_executable(multiple_init_fini EXCLUDE_FROM_ALL multiple_init_fini.cpp)
rosbuild_add_gtest_build_flags(multiple_init_fini)

# Test node inspection functionality
rosbuild_add_executable(inspection EXCLUDE_FROM_ALL inspection.cpp)
rosbuild_add_gtest_build_flags(inspection)

# Test that advertising a service multiple times fails
rosbuild_add_executable(service_adv_multiple EXCLUDE_FROM_ALL service_adv_multiple.cpp)
rosbuild_add_gtest_build_flags(service_adv_multiple)

# Test that the second node to advertise a service "wins"
rosbuild_add_executable(service_adv_a EXCLUDE_FROM_ALL service_adv_a.cpp)
rosbuild_add_gtest_build_flags(service_adv_a)

rosbuild_add_executable(service_wait_a_adv_b EXCLUDE_FROM_ALL service_wait_a_adv_b.cpp)
rosbuild_add_gtest_build_flags(service_wait_a_adv_b)

rosbuild_add_executable(service_call_expect_b EXCLUDE_FROM_ALL service_call_expect_b.cpp)
rosbuild_add_gtest_build_flags(service_call_expect_b)

# Test command-line name remapping
rosbuild_add_executable(name_remapping EXCLUDE_FROM_ALL name_remapping.cpp)
rosbuild_add_gtest_build_flags(name_remapping)
rosbuild_add_executable(name_remapping_with_ns EXCLUDE_FROM_ALL name_remapping_with_ns.cpp)
rosbuild_add_gtest_build_flags(name_remapping_with_ns)

# Test namespaces
rosbuild_add_executable(namespaces EXCLUDE_FROM_ALL namespaces.cpp)
rosbuild_add_gtest_build_flags(namespaces)

# Test params
rosbuild_add_executable(params EXCLUDE_FROM_ALL params.cpp)
rosbuild_add_gtest_build_flags(params)

# Test getting information from the master
rosbuild_add_executable(get_master_information EXCLUDE_FROM_ALL get_master_information.cpp)
rosbuild_add_gtest_build_flags(get_master_information)

# Test multiple subscriptions
rosbuild_add_executable(multiple_subscriptions EXCLUDE_FROM_ALL multiple_subscriptions.cpp)
rosbuild_add_gtest_build_flags(multiple_subscriptions)

rosbuild_add_executable(check_master EXCLUDE_FROM_ALL check_master.cpp)
rosbuild_add_gtest_build_flags(check_master)

rosbuild_add_executable(wait_for_message EXCLUDE_FROM_ALL wait_for_message.cpp)
rosbuild_add_gtest_build_flags(wait_for_message)

rosbuild_add_executable(loads_of_publishers EXCLUDE_FROM_ALL loads_of_publishers.cpp)
rosbuild_add_gtest_build_flags(loads_of_publishers)

rosbuild_add_executable(incrementing_sequence EXCLUDE_FROM_ALL incrementing_sequence.cpp)
rosbuild_add_gtest_build_flags(incrementing_sequence)

rosbuild_add_executable(subscription_callback_types EXCLUDE_FROM_ALL subscription_callback_types.cpp)
rosbuild_add_gtest_build_flags(subscription_callback_types)

rosbuild_add_executable(service_callback_types EXCLUDE_FROM_ALL service_callback_types.cpp)
rosbuild_add_gtest_build_flags(service_callback_types)

rosbuild_add_executable(intraprocess_subscriptions EXCLUDE_FROM_ALL intraprocess_subscriptions.cpp)
rosbuild_add_gtest_build_flags(intraprocess_subscriptions)

rosbuild_add_executable(nonconst_subscriptions EXCLUDE_FROM_ALL nonconst_subscriptions.cpp)
rosbuild_add_gtest_build_flags(nonconst_subscriptions)

rosbuild_add_executable(subscribe_retry_tcp EXCLUDE_FROM_ALL subscribe_retry_tcp.cpp)
rosbuild_add_gtest_build_flags(subscribe_retry_tcp)

rosbuild_add_executable(subscribe_star EXCLUDE_FROM_ALL subscribe_star.cpp)
rosbuild_add_gtest_build_flags(subscribe_star)
rosbuild_add_executable(publisher_for_star_subscriber EXCLUDE_FROM_ALL publisher_for_star_subscriber.cpp)
rosbuild_declare_test(publisher_for_star_subscriber)

rosbuild_add_executable(parameter_validation EXCLUDE_FROM_ALL parameter_validation.cpp)
rosbuild_add_gtest_build_flags(parameter_validation)

rosbuild_add_executable(param_locale_avoidance_test EXCLUDE_FROM_ALL param_locale_avoidance_test.cpp)
rosbuild_add_gtest_build_flags(param_locale_avoidance_test)

rosbuild_add_executable(crashes_under_gprof EXCLUDE_FROM_ALL crashes_under_gprof.cpp)

rosbuild_add_executable(test_remapping EXCLUDE_FROM_ALL test_remapping.cpp)
rosbuild_add_gtest_build_flags(test_remapping)

rosbuild_add_executable(name_not_remappable EXCLUDE_FROM_ALL name_not_remappable.cpp)
rosbuild_add_gtest_build_flags(name_not_remappable)

rosbuild_add_executable(test_ns_node_remapping EXCLUDE_FROM_ALL test_ns_node_remapping.cpp)
rosbuild_add_gtest_build_flags(test_ns_node_remapping)

rosbuild_add_executable(test_search_param EXCLUDE_FROM_ALL test_search_param.cpp)
rosbuild_add_gtest_build_flags(test_search_param)

rosbuild_add_executable(left_right EXCLUDE_FROM_ALL left_right.cpp)

rosbuild_add_executable(string_msg_expect EXCLUDE_FROM_ALL string_msg_expect.cpp)
rosbuild_add_gtest_build_flags(string_msg_expect)

