You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
arts/tests/testchangenotify.cc

196 lines
3.9 KiB

/*
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);