#include "serialize.hpp"

#include <filesystem>

#include <gtest/gtest.h>

using namespace phosphor::led;

TEST(SerializeTest, testStoreGroups)
{
    namespace fs = std::filesystem;

    static constexpr auto path = "config/led-save-group.json";
    static constexpr auto bmcBooted =
        "/xyz/openbmc_project/led/groups/bmc_booted";
    static constexpr auto powerOn = "/xyz/openbmc_project/led/groups/power_on";
    static constexpr auto enclosureIdentify =
        "/xyz/openbmc_project/led/groups/EnclosureIdentify";

    Serialize serialize(path);

    serialize.storeGroups(bmcBooted, true);
    ASSERT_EQ(true, serialize.getGroupSavedState(bmcBooted));

    serialize.storeGroups(powerOn, true);
    ASSERT_EQ(true, serialize.getGroupSavedState(powerOn));

    serialize.storeGroups(bmcBooted, false);
    ASSERT_EQ(false, serialize.getGroupSavedState(bmcBooted));

    serialize.storeGroups(enclosureIdentify, true);
    ASSERT_EQ(true, serialize.getGroupSavedState(enclosureIdentify));

    Serialize newSerial(path);

    ASSERT_EQ(true, newSerial.getGroupSavedState(powerOn));
    ASSERT_EQ(true, newSerial.getGroupSavedState(enclosureIdentify));

    newSerial.storeGroups(powerOn, false);
    ASSERT_EQ(false, newSerial.getGroupSavedState(powerOn));

    newSerial.storeGroups(enclosureIdentify, false);
    ASSERT_EQ(false, newSerial.getGroupSavedState(enclosureIdentify));
}
