diff --git a/meson_options.txt b/meson_options.txt index c664f51c..6f64d611 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -1 +1 @@ -option('use_stl', type : 'boolean', value : true) +option('use_stl', description: 'Compiling for STL', type: 'boolean', value: true) diff --git a/subprojects/unittest-cpp.wrap b/subprojects/unittest-cpp.wrap new file mode 100644 index 00000000..dfdc9d8f --- /dev/null +++ b/subprojects/unittest-cpp.wrap @@ -0,0 +1,9 @@ +[wrap-file] +directory = unittest-cpp-2.0.0 +source_url = https://github.com/unittest-cpp/unittest-cpp/archive/v2.0.0.zip +source_filename = unittest-cpp-2.0.0.zip +source_hash = 3ba4f8b6c6e75ca8c79dd6008c78e95fb08554fbf2e0f1195fb78a4bf5a8a805 +patch_url = https://wrapdb.mesonbuild.com/v2/unittest-cpp_2.0.0-1/get_patch +patch_filename = unittest-cpp-2.0.0-1-wrap.zip +patch_hash = a887de2b619c13fc4fd8bff844ca7015a2046dc613ae0765dd4452ff70db12ca + diff --git a/test/meson.build b/test/meson.build index 28681704..3fd2580f 100644 --- a/test/meson.build +++ b/test/meson.build @@ -4,26 +4,38 @@ etl_test_sources = files( 'murmurhash3.cpp', 'test_algorithm.cpp', 'test_alignment.cpp', - 'test_array.cpp', 'test_array_view.cpp', 'test_array_wrapper.cpp', - 'test_atomic_clang_sync.cpp', - 'test_atomic_gcc_sync.cpp', - 'test_atomic_std.cpp', + 'test_array.cpp', + 'test_atomic.cpp', 'test_binary.cpp', 'test_bip_buffer_spsc_atomic.cpp', - 'test_bitset.cpp', + 'test_bit_stream_reader_big_endian.cpp', + 'test_bit_stream_reader_little_endian.cpp', + 'test_bit_stream_writer_big_endian.cpp', + 'test_bit_stream_writer_little_endian.cpp', 'test_bit_stream.cpp', + 'test_bit.cpp', + 'test_bitset_legacy.cpp', + 'test_bitset_new_default_element_type.cpp', + 'test_bitset_new_explicit_single_element_type.cpp', + 'test_bitset_new_ext_default_element_type.cpp', + 'test_bitset_new_ext_explicit_single_element_type.cpp', 'test_bloom_filter.cpp', 'test_bresenham_line.cpp', 'test_bsd_checksum.cpp', 'test_buffer_descriptors.cpp', 'test_byte_stream.cpp', + 'test_byte.cpp', 'test_callback_service.cpp', + 'test_callback_timer_atomic.cpp', + 'test_callback_timer_interrupt.cpp', + 'test_callback_timer_locked.cpp', 'test_callback_timer.cpp', 'test_checksum.cpp', - 'test_circular_buffer.cpp', 'test_circular_buffer_external_buffer.cpp', + 'test_circular_buffer.cpp', + 'test_circular_iterator.cpp', 'test_compare.cpp', 'test_compiler_settings.cpp', 'test_constant.cpp', @@ -31,7 +43,6 @@ etl_test_sources = files( 'test_correlation.cpp', 'test_covariance.cpp', 'test_crc.cpp', - 'test_crc16.cpp', 'test_crc16_a.cpp', 'test_crc16_arc.cpp', 'test_crc16_aug_ccitt.cpp', @@ -56,7 +67,7 @@ etl_test_sources = files( 'test_crc16_usb.cpp', 'test_crc16_x25.cpp', 'test_crc16_xmodem.cpp', - 'test_crc32.cpp', + 'test_crc16.cpp', 'test_crc32_bzip2.cpp', 'test_crc32_c.cpp', 'test_crc32_d.cpp', @@ -65,6 +76,7 @@ etl_test_sources = files( 'test_crc32_posix.cpp', 'test_crc32_q.cpp', 'test_crc32_xfer.cpp', + 'test_crc32.cpp', 'test_crc64_ecma.cpp', 'test_crc8_ccitt.cpp', 'test_crc8_cdma2000.cpp', @@ -76,16 +88,17 @@ etl_test_sources = files( 'test_crc8_maxim.cpp', 'test_crc8_rohc.cpp', 'test_crc8_wcdma.cpp', - 'test_cumulative_moving_average.cpp', 'test_cyclic_value.cpp', 'test_debounce.cpp', - 'test_delegate.cpp', - 'test_delegate_service.cpp', + 'test_delegate_cpp03.cpp', 'test_delegate_service_compile_time.cpp', + 'test_delegate_service.cpp', + 'test_delegate.cpp', 'test_deque.cpp', 'test_endian.cpp', 'test_enum_type.cpp', 'test_error_handler.cpp', + 'test_etl_traits.cpp', 'test_exception.cpp', 'test_fixed_iterator.cpp', 'test_fixed_sized_memory_block_allocator.cpp', @@ -96,8 +109,8 @@ etl_test_sources = files( 'test_flat_set.cpp', 'test_fnv_1.cpp', 'test_format_spec.cpp', - 'test_forward_list.cpp', 'test_forward_list_shared_pool.cpp', + 'test_forward_list.cpp', 'test_fsm.cpp', 'test_function.cpp', 'test_functional.cpp', @@ -105,8 +118,8 @@ etl_test_sources = files( 'test_hash.cpp', 'test_hfsm.cpp', 'test_histogram.cpp', - 'test_indirect_vector.cpp', 'test_indirect_vector_external_buffer.cpp', + 'test_indirect_vector.cpp', 'test_instance_count.cpp', 'test_integral_limits.cpp', 'test_intrusive_forward_list.cpp', @@ -121,92 +134,101 @@ etl_test_sources = files( 'test_largest.cpp', 'test_limiter.cpp', 'test_limits.cpp', - 'test_list.cpp', 'test_list_shared_pool.cpp', + 'test_list.cpp', 'test_make_string.cpp', 'test_map.cpp', 'test_maths.cpp', 'test_mean.cpp', - 'test_memory.cpp', - 'test_mem_cast.cpp', 'test_mem_cast_ptr.cpp', - #'test_mem_type.cpp', + 'test_mem_cast.cpp', + 'test_memory.cpp', + 'test_message_broker.cpp', 'test_message_bus.cpp', 'test_message_packet.cpp', - 'test_message_router.cpp', 'test_message_router_registry.cpp', + 'test_message_router.cpp', + 'test_message_timer_atomic.cpp', + 'test_message_timer_interrupt.cpp', + 'test_message_timer_locked.cpp', 'test_message_timer.cpp', - 'test_multimap.cpp', - 'test_multiset.cpp', 'test_multi_array.cpp', 'test_multi_range.cpp', - 'test_multi_span.cpp', 'test_multi_vector.cpp', + 'test_multimap.cpp', + 'test_multiset.cpp', 'test_murmur3.cpp', + 'test_nth_type.cpp', 'test_numeric.cpp', 'test_observer.cpp', 'test_optional.cpp', - 'test_overload.cpp', 'test_packet.cpp', 'test_parameter_pack.cpp', 'test_parameter_type.cpp', 'test_parity_checksum.cpp', 'test_pearson.cpp', - 'test_pool.cpp', + 'test_poly_span_dynamic_extent.cpp', + 'test_poly_span_fixed_extent.cpp', 'test_pool_external_buffer.cpp', + 'test_pool.cpp', 'test_priority_queue.cpp', + 'test_pseudo_moving_average.cpp', 'test_quantize.cpp', - 'test_queue.cpp', - 'test_queue_lockable.cpp', 'test_queue_lockable_small.cpp', + 'test_queue_lockable.cpp', 'test_queue_memory_model_small.cpp', - 'test_queue_mpmc_mutex.cpp', 'test_queue_mpmc_mutex_small.cpp', - 'test_queue_spsc_atomic.cpp', + 'test_queue_mpmc_mutex.cpp', 'test_queue_spsc_atomic_small.cpp', - 'test_queue_spsc_isr.cpp', + 'test_queue_spsc_atomic.cpp', 'test_queue_spsc_isr_small.cpp', - 'test_queue_spsc_locked.cpp', + 'test_queue_spsc_isr.cpp', 'test_queue_spsc_locked_small.cpp', + 'test_queue_spsc_locked.cpp', + 'test_queue.cpp', 'test_random.cpp', 'test_reference_flat_map.cpp', 'test_reference_flat_multimap.cpp', 'test_reference_flat_multiset.cpp', 'test_reference_flat_set.cpp', 'test_rescale.cpp', - 'test_result.cpp', 'test_rms.cpp', 'test_scaled_rounding.cpp', 'test_set.cpp', 'test_shared_message.cpp', + 'test_singleton.cpp', 'test_smallest.cpp', - 'test_span.cpp', + 'test_span_dynamic_extent.cpp', + 'test_span_fixed_extent.cpp', 'test_stack.cpp', 'test_standard_deviation.cpp', - 'test_state_chart.cpp', + 'test_state_chart_compile_time_with_data_parameter.cpp', + 'test_state_chart_compile_time.cpp', 'test_state_chart_with_data_parameter.cpp', 'test_state_chart_with_rvalue_data_parameter.cpp', - 'test_string_char.cpp', + 'test_state_chart.cpp', 'test_string_char_external_buffer.cpp', - 'test_string_stream.cpp', + 'test_string_char.cpp', 'test_string_stream_u16.cpp', 'test_string_stream_u32.cpp', 'test_string_stream_wchar_t.cpp', - 'test_string_u16.cpp', + 'test_string_stream.cpp', 'test_string_u16_external_buffer.cpp', - 'test_string_u32.cpp', + 'test_string_u16.cpp', 'test_string_u32_external_buffer.cpp', - 'test_string_utilities.cpp', - 'test_string_utilities_std.cpp', + 'test_string_u32.cpp', 'test_string_utilities_std_u16.cpp', 'test_string_utilities_std_u32.cpp', 'test_string_utilities_std_wchar_t.cpp', + 'test_string_utilities_std.cpp', 'test_string_utilities_u16.cpp', 'test_string_utilities_u32.cpp', 'test_string_utilities_wchar_t.cpp', + 'test_string_utilities.cpp', 'test_string_view.cpp', - 'test_string_wchar_t.cpp', 'test_string_wchar_t_external_buffer.cpp', + 'test_string_wchar_t.cpp', + 'test_successor.cpp', 'test_task_scheduler.cpp', 'test_threshold.cpp', 'test_to_string.cpp', @@ -217,6 +239,8 @@ etl_test_sources = files( 'test_type_lookup.cpp', 'test_type_select.cpp', 'test_type_traits.cpp', + 'test_unaligned_type_constexpr.cpp', + 'test_unaligned_type.cpp', 'test_unordered_map.cpp', 'test_unordered_multimap.cpp', 'test_unordered_multiset.cpp', @@ -225,23 +249,24 @@ etl_test_sources = files( 'test_utility.cpp', 'test_variance.cpp', 'test_variant_legacy.cpp', - 'test_variant_pool.cpp', 'test_variant_pool_external_buffer.cpp', + 'test_variant_pool.cpp', 'test_variant_variadic.cpp', - 'test_vector.cpp', 'test_vector_external_buffer.cpp', 'test_vector_non_trivial.cpp', - 'test_vector_pointer.cpp', 'test_vector_pointer_external_buffer.cpp', + 'test_vector_pointer.cpp', + 'test_vector.cpp', 'test_visitor.cpp', 'test_xor_checksum.cpp', - 'test_xor_rotate_checksum.cpp', + 'test_xor_rotate_checksum.cpp' ) compile_args = [ '-DENABLE_ETL_UNIT_TESTS', '-DETL_DEBUG', ] +link_args = [] if get_option('use_stl') compile_args += '-DETL_NO_STL=0' @@ -249,9 +274,14 @@ elif compile_args += '-DETL_NO_STL=1' endif -if meson.get_compiler('cpp').get_id() == 'gcc' - etl_test_sources += files('test_atomic_gcc_sync.cpp') +if meson.get_compiler('cpp').get_argument_syntax() == 'gcc' + compile_args += '-fsanitize=address,undefined' compile_args += '-fexceptions' + compile_args += '-Wall' + compile_args += '-Wextra' + compile_args += '-Wno-non-virtual-dtor' #TODO remove and fix warning in code + compile_args += '-Werror' + link_args += '-fsanitize=address,undefined' endif threads_dep = dependency('threads') @@ -264,4 +294,7 @@ etl_unit_tests = executable('etl_unit_tests', sources: etl_test_sources, dependencies: [etl_dep, unittestcpp_dep, threads_dep], cpp_args: compile_args, + link_args: link_args, ) + +test('etl_unit_tests', etl_unit_tests)