#include "instance_id.hpp"

#include <stdexcept>

#include <gtest/gtest.h>

using namespace pldm;

TEST(InstanceId, testNext)
{
    InstanceId id;
    ASSERT_EQ(id.next(), 0);
    ASSERT_EQ(id.next(), 1);
}

TEST(InstanceId, testAllUsed)
{
    InstanceId id;
    for (size_t i = 0; i < maxInstanceIds; ++i)
    {
        ASSERT_EQ(id.next(), i);
    }
    EXPECT_THROW(id.next(), std::runtime_error);
}

TEST(InstanceId, testMarkfree)
{
    InstanceId id;
    for (size_t i = 0; i < maxInstanceIds; ++i)
    {
        ASSERT_EQ(id.next(), i);
    }
    id.markFree(5);
    ASSERT_EQ(id.next(), 5);
    id.markFree(0);
    ASSERT_EQ(id.next(), 0);
    EXPECT_THROW(id.next(), std::runtime_error);
    EXPECT_THROW(id.markFree(32), std::out_of_range);
}
