diff options
Diffstat (limited to 'tests/testchangenotify.cpp')
-rw-r--r-- | tests/testchangenotify.cpp | 195 |
1 files changed, 195 insertions, 0 deletions
diff --git a/tests/testchangenotify.cpp b/tests/testchangenotify.cpp new file mode 100644 index 0000000..0447e7c --- /dev/null +++ b/tests/testchangenotify.cpp @@ -0,0 +1,195 @@ + /* + + Copyright (C) 2000 Stefan Westerfeld stefan@space.twc.de + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + Permission is also granted to link this program with the Qt + library, treating Qt like a library that normally accompanies the + operating system kernel, whether or not that is in fact the case. + + */ + +#include "value.h" +#include "connect.h" +#include "test.h" +#include <iostream.h> +#include <stdio.h> + +using namespace std; +using namespace Arts; + +struct TestChangeNotify : public TestCase +{ + TESTCASE(TestChangeNotify); + + Arts::Dispatcher dispatcher; + float zero, three, four; + + void setUp() + { + zero = 0.0; + three = 3.0; + four = 4.0; + } + + void process() + { + dispatcher.ioManager()->processOneEvent(false); + } + + TEST(floatValue) + { + FloatValue f; + + testEquals(zero, f.value()); + + f.value(three); + testEquals(three, f.value()); + } + TEST(stringValue) + { + StringValue s; + + testEquals("",s.value()); + + s.value("hello"); + testEquals("hello", s.value()); + } + TEST(floatNotify) + { + FloatValue f1, f2; + + connect(f1,"value_changed",f2,"value"); + f1.value(three); + + process(); + testEquals(three, f2.value()); + } + TEST(floatMultiNotify) + { + FloatValue f1, f2, f3; + + connect(f1,"value_changed",f2,"value"); + connect(f1,"value_changed",f3,"value"); + f1.value(three); + + process(); + testEquals(three, f2.value()); + testEquals(three, f3.value()); + } + TEST(floatCrossNotify) + { + FloatValue f1, f2; + + connect(f1,"value_changed",f2,"value"); + connect(f2,"value_changed",f1,"value"); + f1.value(three); + + process(); + testEquals(three, f1.value()); + testEquals(three, f2.value()); + + f2.value(four); + + process(); + testEquals(four, f1.value()); + testEquals(four, f2.value()); + } + TEST(stringNotify) + { + StringValue s1, s2; + + connect(s1,"value_changed",s2,"value"); + s1.value("hello"); + + process(); + testEquals("hello", s2.value()); + } + TEST(stringMultiNotify) + { + StringValue s1, s2, s3; + + connect(s1,"value_changed",s2,"value"); + connect(s1,"value_changed",s3,"value"); + s1.value("hello"); + + process(); + testEquals("hello", s2.value()); + testEquals("hello", s3.value()); + } + TEST(stringCrossNotify) + { + StringValue s1, s2; + + connect(s1,"value_changed",s2,"value"); + connect(s2,"value_changed",s1,"value"); + s1.value("world"); + + process(); + testEquals("world", s1.value()); + testEquals("world", s2.value()); + + s2.value("test"); + + process(); + testEquals("test", s1.value()); + testEquals("test", s2.value()); + } + TEST(floatSenderToValue1) + { + FloatSender sender; + FloatValue f; + + connect(sender,"outstream",f,"value"); + vector<float> data; + data.push_back(three); + sender.send(data); + + process(); + testEquals(three,f.value()); + } + TEST(floatSenderToValue2) + { + FloatSender sender; + FloatValue f; + + connect(sender,"outstream",f,"value"); + vector<float> data; + data.push_back(three); + data.push_back(four); + sender.send(data); + + process(); + testEquals(four,f.value()); + } + TEST(myEnumNotify) + { + MyEnumValue e1, e2; + + connect(e1,"value_changed",e2,"value"); + + testEquals(meIdle, e1.value()); + testEquals(meIdle, e2.value()); + + e1.value(meHelloWorld); + process(); + + testEquals(meHelloWorld, e1.value()); + testEquals(meHelloWorld, e2.value()); + } +}; + +TESTMAIN(TestChangeNotify); |