C++:实现量化可观察observable设置测试实例

C++:实现量化可观察observable设置测试实例

#include "observable.hpp"
#include "utilities.hpp"
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include using namespace QuantLib;
using namespace boost::unit_test_framework;namespace {class UpdateCounter : public Observer {public:UpdateCounter() = default;void update() override { ++counter_; }Size counter() const { return counter_; }private:Size counter_ = 0;};class RestoreUpdates {public:~RestoreUpdates() {ObservableSettings::instance().enableUpdates();}};}void ObservableTest::testObservableSettings() {BOOST_TEST_MESSAGE("Testing observable settings...");const ext::shared_ptr<SimpleQuote> quote(new SimpleQuote(100.0));UpdateCounter updateCounter;updateCounter.registerWith(quote);if (updateCounter.counter() != 0) {BOOST_FAIL("update counter value is not zero");}quote->setValue(1.0);if (updateCounter.counter() != 1) {BOOST_FAIL("update counter value is not one");}ObservableSettings::instance().disableUpdates(false);quote->setValue(2.0);if (updateCounter.counter() != 1) {BOOST_FAIL("update counter value is not one");}ObservableSettings::instance().enableUpdates();if (updateCounter.counter() != 1) {BOOST_FAIL("update counter value is not one");}ObservableSettings::instance().disableUpdates(true);quote->setValue(3.0);if (updateCounter.counter() != 1) {BOOST_FAIL("update counter value is not one");}ObservableSettings::instance().enableUpdates();if (updateCounter.counter() != 2) {BOOST_FAIL("update counter value is not two");}UpdateCounter updateCounter2;updateCounter2.registerWith(quote);ObservableSettings::instance().disableUpdates(true);for (Size i=0; i < 10; ++i) {quote->setValue(Real(i));}if (updateCounter.counter() != 2) {BOOST_FAIL("update counter value is not two"


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部