#include #include "../unique_ref.h" using namespace cpputils; //TODO Add some test cases class SomeClass0Parameters {}; class SomeClass1Parameter { public: SomeClass1Parameter(int param_): param(param_) {} int param; }; class SomeClass2Parameters { public: SomeClass2Parameters(int param1_, int param2_): param1(param1_), param2(param2_) {} int param1; int param2; }; TEST(MakeUniqueRefTest, Primitive) { unique_ref var = make_unique_ref(3); EXPECT_EQ(3, *var); } TEST(MakeUniqueRefTest, ClassWith0Parameters) { unique_ref var = make_unique_ref(); //Check that the type is correct EXPECT_EQ(var.get(), dynamic_cast(var.get())); } TEST(MakeUniqueRefTest, ClassWith1Parameter) { unique_ref var = make_unique_ref(5); EXPECT_EQ(5, var->param); } TEST(MakeUniqueRefTest, ClassWith2Parameters) { unique_ref var = make_unique_ref(7,2); EXPECT_EQ(7, var->param1); EXPECT_EQ(2, var->param2); } TEST(MakeUniqueRefTest, TypeIsAutoDeductible) { auto var1 = make_unique_ref(3); auto var2 = make_unique_ref(); auto var3 = make_unique_ref(2); auto var4 = make_unique_ref(2, 3); } TEST(NullcheckTest, PrimitiveNullptr) { boost::optional> var = nullcheck(std::unique_ptr(nullptr)); EXPECT_FALSE((bool)var); } TEST(NullcheckTest, ObjectNullptr) { boost::optional> var = nullcheck(std::unique_ptr(nullptr)); EXPECT_FALSE((bool)var); } TEST(NullcheckTest, Primitive) { boost::optional> var = nullcheck(std::make_unique(3)); EXPECT_TRUE((bool)var); EXPECT_EQ(3, **var); } TEST(NullcheckTest, ClassWith0Parameters) { boost::optional> var = nullcheck(std::make_unique()); EXPECT_TRUE((bool)var); //Check that the type is correct EXPECT_EQ(var->get(), dynamic_cast(var->get())); } TEST(NullcheckTest, ClassWith1Parameter) { boost::optional> var = nullcheck(std::make_unique(5)); EXPECT_TRUE((bool)var); EXPECT_EQ(5, (*var)->param); } TEST(NullcheckTest, ClassWith2Parameters) { boost::optional> var = nullcheck(std::make_unique(7,2)); EXPECT_TRUE((bool)var); EXPECT_EQ(7, (*var)->param1); EXPECT_EQ(2, (*var)->param2); } TEST(NullcheckTest, OptionIsResolvable_Primitive) { boost::optional> var = nullcheck(std::make_unique(3)); unique_ref resolved = std::move(*var); } TEST(NullcheckTest, OptionIsResolvable_Object) { boost::optional> var = nullcheck(std::make_unique()); unique_ref resolved = std::move(*var); } TEST(NullcheckTest, OptionIsAutoResolvable_Primitive) { auto var = nullcheck(std::make_unique(3)); auto resolved = std::move(*var); } TEST(NullcheckTest, OptionIsAutoResolvable_Object) { auto var = nullcheck(std::make_unique()); auto resolved = std::move(*var); }