| 106 | using namespace us; |
| 107 | |
| 108 | int usServiceTemplateTest(int /*argc*/, char* /*argv*/[]) |
| 109 | { |
| 110 | US_TEST_BEGIN("ServiceTemplateTest"); |
| 111 | |
| 112 | ModuleContext* mc = GetModuleContext(); |
| 113 | |
| 114 | // Register compile tests |
| 115 | MyService1 s1; |
| 116 | MyService2 s2; |
| 117 | MyService3 s3; |
| 118 | |
| 119 | us::ServiceRegistration<Interface1> sr1 = mc->RegisterService<Interface1>(&s1); |
| 120 | us::ServiceRegistration<Interface1,Interface2> sr2 = mc->RegisterService<Interface1,Interface2>(&s2); |
| 121 | us::ServiceRegistration<Interface1,Interface2,Interface3> sr3 = mc->RegisterService<Interface1,Interface2,Interface3>(&s3); |
| 122 | |
| 123 | MyFactory1 f1; |
| 124 | us::ServiceRegistration<Interface1> sfr1 = mc->RegisterService<Interface1>(&f1); |
| 125 | |
| 126 | MyFactory2 f2; |
| 127 | us::ServiceRegistration<Interface1,Interface2> sfr2 = mc->RegisterService<Interface1,Interface2>(static_cast<ServiceFactory*>(&f2)); |
| 128 | |
| 129 | MyFactory3 f3; |
| 130 | us::ServiceRegistration<Interface1,Interface2,Interface3> sfr3 = mc->RegisterService<Interface1,Interface2,Interface3>(static_cast<ServiceFactory*>(&f3)); |
| 131 | |
| 132 | US_TEST_CONDITION(mc->GetModule()->GetRegisteredServices().size() == 6, "# of reg services") |
| 133 | |
| 134 | std::vector<us::ServiceReference<Interface1> > s1refs = mc->GetServiceReferences<Interface1>(); |
| 135 | US_TEST_CONDITION(s1refs.size() == 6, "# of interface1 regs") |
| 136 | std::vector<us::ServiceReference<Interface2> > s2refs = mc->GetServiceReferences<Interface2>(); |
| 137 | US_TEST_CONDITION(s2refs.size() == 4, "# of interface2 regs") |
| 138 | std::vector<us::ServiceReference<Interface3> > s3refs = mc->GetServiceReferences<Interface3>(); |
| 139 | US_TEST_CONDITION(s3refs.size() == 2, "# of interface3 regs") |
| 140 | |
| 141 | Interface1* i1 = mc->GetService(sr1.GetReference()); |
| 142 | US_TEST_CONDITION(i1 == static_cast<Interface1*>(&s1), "interface1 ptr") |
| 143 | i1 = nullptr; |
| 144 | US_TEST_CONDITION(mc->UngetService(sr1.GetReference()), "unget interface1 ptr") |
| 145 | i1 = mc->GetService(sfr1.GetReference()); |
| 146 | US_TEST_CONDITION(i1 == static_cast<Interface1*>(f1.m_idToServiceMap[mc->GetModule()->GetModuleId()]), "interface1 factory ptr") |
| 147 | i1 = nullptr; |
| 148 | US_TEST_CONDITION(mc->UngetService(sfr1.GetReference()), "unget interface1 factory ptr") |
| 149 | |
| 150 | i1 = mc->GetService(sr2.GetReference(InterfaceType<Interface1>())); |
| 151 | US_TEST_CONDITION(i1 == static_cast<Interface1*>(&s2), "interface1 ptr") |
| 152 | i1 = nullptr; |
| 153 | US_TEST_CONDITION(mc->UngetService(sr2.GetReference(InterfaceType<Interface1>())), "unget interface1 ptr") |
| 154 | i1 = mc->GetService(sfr2.GetReference(InterfaceType<Interface1>())); |
| 155 | US_TEST_CONDITION(i1 == static_cast<Interface1*>(f2.m_idToServiceMap[mc->GetModule()->GetModuleId()]), "interface1 factory ptr") |
| 156 | i1 = nullptr; |
| 157 | US_TEST_CONDITION(mc->UngetService(sfr2.GetReference(InterfaceType<Interface1>())), "unget interface1 factory ptr") |
| 158 | Interface2* i2 = mc->GetService(sr2.GetReference(InterfaceType<Interface2>())); |
| 159 | US_TEST_CONDITION(i2 == static_cast<Interface2*>(&s2), "interface2 ptr") |
| 160 | i2 = nullptr; |
| 161 | US_TEST_CONDITION(mc->UngetService(sr2.GetReference(InterfaceType<Interface2>())), "unget interface2 ptr") |
| 162 | i2 = mc->GetService(sfr2.GetReference(InterfaceType<Interface2>())); |
| 163 | US_TEST_CONDITION(i2 == static_cast<Interface2*>(f2.m_idToServiceMap[mc->GetModule()->GetModuleId()]), "interface2 factory ptr") |
| 164 | i2 = nullptr; |
| 165 | US_TEST_CONDITION(mc->UngetService(sfr2.GetReference(InterfaceType<Interface2>())), "unget interface2 factory ptr") |
nothing calls this directly
no test coverage detected