From eed2b0f32000a9ef35a6ca6fc31e25471ed4dfbe Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Sat, 4 Jun 2011 17:16:29 +0200 Subject: [PATCH] time::Control simple unit test pass --- src/lib/scoped-holder.hpp | 1 + src/lib/time/control.hpp | 5 +++++ src/lib/time/lumitime.cpp | 3 +++ src/lib/time/timevalue.hpp | 2 ++ tests/lib/time/time-control-test.cpp | 8 +++++--- 5 files changed, 16 insertions(+), 3 deletions(-) diff --git a/src/lib/scoped-holder.hpp b/src/lib/scoped-holder.hpp index 67252b053..cc4bff08c 100644 --- a/src/lib/scoped-holder.hpp +++ b/src/lib/scoped-holder.hpp @@ -187,6 +187,7 @@ namespace lib { { if (created_) get()->~TY(); + created_ = false; } diff --git a/src/lib/time/control.hpp b/src/lib/time/control.hpp index 26c827d7e..1ec66acea 100644 --- a/src/lib/time/control.hpp +++ b/src/lib/time/control.hpp @@ -342,6 +342,11 @@ namespace time { void Control::connectChangeNotification (SIG const& toNotify) { + if (this->offset_) + { // we're already connected: thus propagate current value + TI currentValue = this->offset_(Offset::ZERO); + toNotify (currentValue); + } notifyListeners_.attach (toNotify); } diff --git a/src/lib/time/lumitime.cpp b/src/lib/time/lumitime.cpp index de79b7f38..00d3e72b9 100644 --- a/src/lib/time/lumitime.cpp +++ b/src/lib/time/lumitime.cpp @@ -41,6 +41,9 @@ namespace time { const Time Time::MIN ( TimeValue::buildRaw_(-_raw(Time::MAX) ) ); const Time Time::ZERO; + const Offset Offset::ZERO (Time::ZERO); + + /** convenience constructor to build an * internal Lumiera Time value from the usual parts diff --git a/src/lib/time/timevalue.hpp b/src/lib/time/timevalue.hpp index fcc287941..fc5c9d467 100644 --- a/src/lib/time/timevalue.hpp +++ b/src/lib/time/timevalue.hpp @@ -193,6 +193,8 @@ namespace time { : TimeValue(TimeVar(target) -= origin) { } + static const Offset ZERO; + TimeValue abs() const { diff --git a/tests/lib/time/time-control-test.cpp b/tests/lib/time/time-control-test.cpp index 356139872..032bef1a9 100644 --- a/tests/lib/time/time-control-test.cpp +++ b/tests/lib/time/time-control-test.cpp @@ -80,6 +80,8 @@ namespace test{ ScopedHolder received_; public: + TestListener() { received_.create (Time::ZERO); } + void operator() (TI const& changeValue) const { @@ -173,7 +175,7 @@ namespace test{ target.accept (controller); CHECK (Time(0,10) == target); - controller (Time(FSecs(21,5))); + controller (Time(FSecs(21,2))); CHECK (Time(500,10) == target); CHECK (follower.reveivedValue() == Time::ZERO); @@ -181,8 +183,8 @@ namespace test{ CHECK (follower.reveivedValue() == Time(500,10)); controller (Offset(-Time(500,1))); - CHECK (Time(0,10) == target); - CHECK (Time(0,10) == follower.reveivedValue()); + CHECK (Time(0,9) == target); + CHECK (Time(0,9) == follower.reveivedValue()); }