Line data Source code
1 : // Copyright 2024 Accenture. 2 : 3 : #include <estd/va_list_ref.h> 4 : 5 : #include <gtest/gtest.h> 6 : 7 3 : TEST(VaListRefExample, variable) 8 : { 9 : // [EXAMPLE_VA_LIST_REF_VARIABLE_START] 10 1 : uint32_t t = 17U; 11 1 : estd::internal::_va_list_ref<uint32_t> cut(t); 12 1 : EXPECT_EQ(17U, cut.get()); 13 1 : estd::internal::_va_list_ref<uint32_t> copy(cut); 14 1 : EXPECT_EQ(17U, copy.get()); 15 : // [EXAMPLE_VA_LIST_REF_VARIABLE_END] 16 1 : } 17 : 18 3 : TEST(VaListRefExample, array) 19 : { 20 : // [EXAMPLE_VA_LIST_REF_ARRAY_START] 21 1 : using ArrayType = uint32_t[2]; 22 1 : uint32_t t[2] = {17U, 18U}; 23 1 : estd::internal::_va_list_ref<ArrayType> cut(t); 24 1 : { 25 1 : ArrayType& value = cut.get(); 26 1 : EXPECT_EQ(17U, value[0]); 27 1 : EXPECT_EQ(18U, value[1]); 28 : } 29 1 : estd::internal::_va_list_ref<ArrayType> copy(cut); 30 1 : { 31 1 : ArrayType& value = copy.get(); 32 1 : EXPECT_EQ(17U, value[0]); 33 1 : EXPECT_EQ(18U, value[1]); 34 : } 35 : // [EXAMPLE_VA_LIST_REF_ARRAY_END] 36 1 : } 37 : 38 : // [EXAMPLE_VA_LIST_REF_CONSTRUCTOR_START] 39 : static char const* cptr = "a"; 40 : 41 1 : void testCopyConstructor(int start, ...) 42 : { 43 1 : va_list ap; 44 1 : va_start(ap, start); 45 1 : estd::va_list_ref ref(ap); 46 1 : estd::va_list_ref cut(ref); 47 1 : ASSERT_EQ(cptr, va_arg(cut.get(), char const*)); 48 1 : ASSERT_EQ(2U, va_arg(cut.get(), uint32_t)); 49 1 : ASSERT_EQ(45345ULL, va_arg(cut.get(), uint64_t)); 50 1 : va_end(ap); 51 : } 52 : 53 : // [EXAMPLE_VA_LIST_REF_CONSTRUCTOR_END] 54 : 55 3 : TEST(VaListRefExample, stdva_list) 56 : { 57 : // [EXAMPLE_VA_LIST_REF_CONSTRUCTOR_CALL_START] 58 1 : testCopyConstructor(1, cptr, 2, 45345ULL); 59 : // [EXAMPLE_VA_LIST_REF_CONSTRUCTOR_CALL_END] 60 1 : }