#include <sdbusplus/vtable.hpp>
#include <gtest/gtest.h>

static const sdbusplus::vtable::vtable_t example[] = {
    sdbusplus::vtable::start(),
    sdbusplus::vtable::method((const char*)1, (const char*)2, (const char*)3,
                              (sd_bus_message_handler_t)4),
    sdbusplus::vtable::signal((const char*)5, (const char*)6),
    sdbusplus::vtable::property((const char*)7, (const char*)8,
                                (sd_bus_property_get_t)9,
                                sdbusplus::vtable::property_::const_),
    sdbusplus::vtable::property((const char*)10, (const char*)11,
                                (sd_bus_property_get_t)12,
                                (sd_bus_property_set_t)13),
    sdbusplus::vtable::property_o((const char*)14, (const char*)15, 16),
    sdbusplus::vtable::end()};

extern const sd_bus_vtable example2[];
extern const size_t example2_size;

TEST(VtableTest, SameSize)
{
    ASSERT_EQ(sizeof(example), example2_size);
}

TEST(VtableTest, SameContent)
{
    ASSERT_EQ(0, memcmp(example, example2, example2_size));
}
