#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));
}
