LCOV - code coverage report
Current view: top level - estd/examples - va_list_ref.cpp (source / functions) Hit Total Coverage
Test: coverage.info Lines: 33 33 100.0 %
Date: 2025-01-20 13:53:09 Functions: 7 10 70.0 %

          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 : }

Generated by: LCOV version 1.14