/* * Check that SetDMX/GetDMX works */ void UniverseTest::testSetGetDmx() { Universe *universe = m_store->GetUniverseOrCreate(TEST_UNIVERSE); OLA_ASSERT(universe); // a new universe should be all 0s DmxBuffer empty_buffer; OLA_ASSERT(empty_buffer == universe->GetDMX()); // check that SetDMX works OLA_ASSERT(universe->SetDMX(m_buffer)); OLA_ASSERT(m_buffer == universe->GetDMX()); }
/* * Check that SendDmx updates all ports */ void UniverseTest::testSendDmx() { Universe *universe = m_store->GetUniverseOrCreate(TEST_UNIVERSE); OLA_ASSERT(universe); TestMockOutputPort port(NULL, 1); // output port universe->AddPort(&port); OLA_ASSERT_EQ((unsigned int) 0, universe->InputPortCount()); OLA_ASSERT_EQ((unsigned int) 1, universe->OutputPortCount()); OLA_ASSERT(universe->IsActive()); // send some data to the universe and check the port gets it OLA_ASSERT(universe->SetDMX(m_buffer)); OLA_ASSERT(m_buffer == port.ReadDMX()); // remove the port from the universe universe->RemovePort(&port); OLA_ASSERT_EQ((unsigned int) 0, universe->InputPortCount()); OLA_ASSERT_EQ((unsigned int) 0, universe->OutputPortCount()); OLA_ASSERT_FALSE(universe->IsActive()); }
/* * Check that the GetDmx method works */ void OlaServerServiceImplTest::testGetDmx() { UniverseStore store(NULL, NULL); OlaServerServiceImpl impl(&store, NULL, NULL, NULL, NULL, NULL, NULL, m_uid); OlaClientService service(NULL, &impl); GenericMissingUniverseCheck<GetDmxCheck, ola::proto::DmxData> missing_universe_check; GetDmxNoDataCheck empty_data_check; GetDmxValidDataCheck valid_data_check; // test a universe that doesn't exist unsigned int universe_id = 0; CallGetDmx(&impl, universe_id, missing_universe_check); // test a new universe Universe *universe = store.GetUniverseOrCreate(universe_id); OLA_ASSERT(universe); CallGetDmx(&impl, universe_id, empty_data_check); // Set the universe data DmxBuffer buffer(SAMPLE_DMX_DATA, sizeof(SAMPLE_DMX_DATA)); universe->SetDMX(buffer); CallGetDmx(&impl, universe_id, valid_data_check); // remove the universe and try again store.AddUniverseGarbageCollection(universe); store.GarbageCollectUniverses(); CallGetDmx(&impl, universe_id, missing_universe_check); }
/* * 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()); }