#include <library/cpp/testing/unittest/registar.h>

#include "moved.h"

Y_UNIT_TEST_SUITE(TMovedTest) {
    Y_UNIT_TEST(Simple) {
        TMoved<THolder<int>> h1(MakeHolder<int>(10));
        TMoved<THolder<int>> h2 = h1;
        UNIT_ASSERT(!*h1);
        UNIT_ASSERT(!!*h2);
        UNIT_ASSERT_VALUES_EQUAL(10, **h2);
    }

    void Foo(TMoved<THolder<int>> h) {
        UNIT_ASSERT_VALUES_EQUAL(11, **h);
    }

    Y_UNIT_TEST(PassToFunction) {
        THolder<int> h(new int(11));
        Foo(h);
    }
}