Пример #1
0
bool test_notification()
{
    using namespace spatosc;
    Scene scene;
    scene.addTranslator("dummy", new DummyTranslator());
    SoundSource *source = scene.createSoundSource("source");
    if (DummyTranslator::string_updated || DummyTranslator::float_updated || DummyTranslator::int_updated)
    {
        std::cerr <<" should not have received a property update yet.\n";
        return false;
    }

    // String property:
    source->setStringProperty("foo", "bar");
    if (! DummyTranslator::string_updated)
    {
        std::cerr <<" should have received a string property update.\n";
        return false;
    }
    std::string s_value("");
    source->getStringProperty("foo", s_value);
    if (s_value != "bar")
    {
        std::cerr <<" string property has not been set.\n";
        return false;
    }

    // Float property:
    source->setFloatProperty("bar", 3.14159);
    if (! DummyTranslator::float_updated)
    {
        std::cerr <<" should have received a float property update.\n";
        return false;
    }
    double f_value(0.0);
    source->getFloatProperty("bar", f_value);
    if (f_value != 3.14159)
    {
        std::cerr <<" float property has not been set.\n";
        return false;
    }

    // Int property:
    source->setIntProperty("egg", 2);
    if (! DummyTranslator::int_updated)
    {
        std::cerr <<" should have received an int property update.\n";
        return false;
    }
    int i_value(0);
    source->getIntProperty("egg", i_value);
    if (i_value != 2)
    {
        std::cerr <<" int property has not been set.\n";
        return false;
    }
    source->removeIntProperty("egg");
    i_value = 0;
    source->getIntProperty("egg", i_value);
    if (i_value != 0)
    {
        std::cerr <<" int property has not been removed.\n";
        return false;
    }
    return true;
}