/* * Check the RegisterForDmx method works */ void OlaServerServiceImplTest::testRegisterForDmx() { UniverseStore store(NULL, NULL); OlaServerServiceImpl impl(&store, NULL, NULL, NULL, NULL, NULL, NULL, m_uid); OlaClientService service(NULL, &impl); // Register for a universe that doesn't exist unsigned int universe_id = 0; unsigned int second_universe_id = 99; GenericAckCheck<RegisterForDmxCheck> ack_check; CallRegisterForDmx(&service, universe_id, ola::proto::REGISTER, ack_check); // The universe should exist now and the client should be bound Universe *universe = store.GetUniverse(universe_id); OLA_ASSERT(universe); OLA_ASSERT(universe->ContainsSinkClient(NULL)); OLA_ASSERT_EQ((unsigned int) 1, universe->SinkClientCount()); // Try to register again CallRegisterForDmx(&service, universe_id, ola::proto::REGISTER, ack_check); OLA_ASSERT(universe->ContainsSinkClient(NULL)); OLA_ASSERT_EQ((unsigned int) 1, universe->SinkClientCount()); // Register a second universe CallRegisterForDmx(&service, second_universe_id, ola::proto::REGISTER, ack_check); Universe *second_universe = store.GetUniverse(universe_id); OLA_ASSERT(second_universe->ContainsSinkClient(NULL)); OLA_ASSERT_EQ((unsigned int) 1, second_universe->SinkClientCount()); // Unregister the first universe CallRegisterForDmx(&service, universe_id, ola::proto::UNREGISTER, ack_check); OLA_ASSERT_FALSE(universe->ContainsSinkClient(NULL)); OLA_ASSERT_EQ((unsigned int) 0, universe->SinkClientCount()); // Unregister the second universe CallRegisterForDmx(&service, second_universe_id, ola::proto::UNREGISTER, ack_check); OLA_ASSERT_FALSE(second_universe->ContainsSinkClient(NULL)); OLA_ASSERT_EQ((unsigned int) 0, second_universe->SinkClientCount()); // Unregister again CallRegisterForDmx(&service, universe_id, ola::proto::UNREGISTER, ack_check); OLA_ASSERT_FALSE(universe->ContainsSinkClient(NULL)); OLA_ASSERT_EQ((unsigned int) 0, universe->SinkClientCount()); }
/* * Check that we can add/remove sink clients from this universes */ void UniverseTest::testSinkClients() { Universe *universe = m_store->GetUniverseOrCreate(TEST_UNIVERSE); OLA_ASSERT(universe); OLA_ASSERT_EQ((unsigned int) 0, universe->SourceClientCount()); OLA_ASSERT_EQ((unsigned int) 0, universe->SinkClientCount()); // test that we can add a source client MockClient client; universe->AddSinkClient(&client); OLA_ASSERT_EQ((unsigned int) 1, universe->SinkClientCount()); OLA_ASSERT_EQ((unsigned int) 0, universe->SourceClientCount()); OLA_ASSERT(universe->ContainsSinkClient(&client)); OLA_ASSERT_FALSE(universe->ContainsSourceClient(&client)); OLA_ASSERT(universe->IsActive()); // Setting DMX now should update the client OLA_ASSERT_FALSE(client.m_dmx_set); universe->SetDMX(m_buffer); OLA_ASSERT(client.m_dmx_set); // now remove it universe->RemoveSinkClient(&client); OLA_ASSERT_EQ((unsigned int) 0, universe->SinkClientCount()); OLA_ASSERT_EQ((unsigned int) 0, universe->SourceClientCount()); OLA_ASSERT_FALSE(universe->ContainsSinkClient(&client)); OLA_ASSERT_FALSE(universe->ContainsSourceClient(&client)); OLA_ASSERT_FALSE(universe->IsActive()); // try to remove it again OLA_ASSERT_FALSE(universe->RemoveSinkClient(&client)); OLA_ASSERT_EQ((unsigned int) 0, universe->SinkClientCount()); OLA_ASSERT_EQ((unsigned int) 0, universe->SourceClientCount()); OLA_ASSERT_FALSE(universe->ContainsSinkClient(&client)); OLA_ASSERT_FALSE(universe->ContainsSourceClient(&client)); OLA_ASSERT_FALSE(universe->IsActive()); }