// Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include #include #include using namespace vespalib; struct Simple { int value; int moved; explicit Simple(int v) : value(v), moved(0) {} Simple(const Simple &rhs) : value(rhs.value), moved(rhs.moved) {} Simple(Simple &&rhs) : value(rhs.value), moved(rhs.moved + 1) {} }; typedef std::unique_ptr Hard; struct Base { virtual void foo() = 0; virtual ~Base() {} }; struct Child1 : Base { void foo() override {} }; struct Child2 : Base { void foo() override {} }; VESPA_CAN_SKIP_DESTRUCTION(Child2); TEST("require that is_copyable works") { EXPECT_EQUAL(is_copyable::value, true); EXPECT_EQUAL(is_copyable::value, false); EXPECT_EQUAL(is_copyable >::value, true); EXPECT_EQUAL(is_copyable >::value, false); EXPECT_EQUAL(is_copyable >::value, false); } TEST("require that can_skip_destruction works") { EXPECT_EQUAL(can_skip_destruction::value, true); EXPECT_EQUAL(can_skip_destruction::value, false); EXPECT_EQUAL(can_skip_destruction::value, false); EXPECT_EQUAL(can_skip_destruction::value, true); } TEST_MAIN() { TEST_RUN_ALL(); }