/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */ /** * Copyright (C) 2014 Named Data Networking Project * See COPYING for copyright and distribution information. */ #include "table/strategy-info-host.hpp" #include "tests/test-common.hpp" namespace nfd { namespace tests { static int g_DummyStrategyInfo_count = 0; class DummyStrategyInfo : public fw::StrategyInfo { public: DummyStrategyInfo(int id) : m_id(id) { ++g_DummyStrategyInfo_count; } virtual ~DummyStrategyInfo() { --g_DummyStrategyInfo_count; } int m_id; }; BOOST_FIXTURE_TEST_SUITE(TableStrategyInfoHost, BaseFixture) BOOST_AUTO_TEST_CASE(SetGetClear) { StrategyInfoHost host; BOOST_CHECK(!static_cast(host.getStrategyInfo())); g_DummyStrategyInfo_count = 0; shared_ptr info = make_shared(7591); host.setStrategyInfo(info); BOOST_REQUIRE(static_cast(host.getStrategyInfo())); BOOST_CHECK_EQUAL(host.getStrategyInfo()->m_id, 7591); info.reset(); // unlink local reference // host should still have a reference to info BOOST_REQUIRE(static_cast(host.getStrategyInfo())); BOOST_CHECK_EQUAL(host.getStrategyInfo()->m_id, 7591); host.clearStrategyInfo(); BOOST_CHECK(!static_cast(host.getStrategyInfo())); BOOST_CHECK_EQUAL(g_DummyStrategyInfo_count, 0); } BOOST_AUTO_TEST_SUITE_END() } // namespace tests } // namespace nfd