#include <util/hei_flyweight.hpp>

#include "gtest/gtest.h"

using namespace libhei;

class Foo
{
  public:
    Foo() = default;
    explicit Foo(int i) : iv_i(i) {}
    int get() const { return iv_i; }
    bool operator==(const Foo & i_r) const { return iv_i == i_r.iv_i; }
    bool operator<(const Foo & i_r) const { return iv_i <  i_r.iv_i; }
  private:
    int iv_i = 0;
};

Foo & addFoo(int i)
{
    return Flyweight<Foo>::getSingleton().get(Foo { i });
}

TEST(FlyweightTest, TestSet1)
{
    // Add some unique entries in a random order and keep track of where those
    // enties exist in memory.
    Foo * a[5];
    a[1] = &(addFoo(1));
    a[2] = &(addFoo(2));
    a[0] = &(addFoo(0));
    a[4] = &(addFoo(4));
    a[3] = &(addFoo(3));

    // Now add more entries and verify the 'new' entries match the same
    // addresses as the previously added entries.
    for (int i = 4; i >= 0; i--)
    {
        ASSERT_EQ(a[i], &(addFoo(i)));
    }

    // At this point, we have proven that duplicate entries will return
    // references to the original unique entries. There is probably more we can
    // do here, but this is enough to prove the Flyweight class follows the
    // flyweight design pattern.
}
