void CpDevices::Test() { CpProxyOpenhomeOrgTestBasic1* proxy = new CpProxyOpenhomeOrgTestBasic1(*(iDevices[0])); Functor functor = MakeFunctor(*this, &CpDevices::UpdatesComplete); proxy->SetPropertyChanged(functor); proxy->Subscribe(); iUpdatesComplete.Wait(); // wait for initial event TInt val = iEnv.Random(0x7fffffff); proxy->SyncSetInt(val); iUpdatesComplete.Wait(); TInt propInt; proxy->PropertyVarInt(propInt); ASSERT(propInt == val); delete proxy; // automatically unsubscribes }
void CpDevices::Test() { ASSERT(iList.size() == 1); CpProxyOpenhomeOrgTestBasic1* proxy = new CpProxyOpenhomeOrgTestBasic1(*(iList[0])); Functor functor = MakeFunctor(*this, &CpDevices::UpdatesComplete); proxy->SetPropertyChanged(functor); proxy->Subscribe(); iUpdatesComplete.Wait(); // wait for initial event /* For each property, call the setter action it wait on a property being updated check that the property matches the value set check that the getter action matches the property */ Print("Uint...\n"); proxy->SyncSetUint(1); iUpdatesComplete.Wait(); TUint propUint; proxy->PropertyVarUint(propUint); ASSERT(propUint == 1); TUint valUint; proxy->SyncGetUint(valUint); ASSERT(propUint == valUint); Print("Int...\n"); proxy->SyncSetInt(-99); iUpdatesComplete.Wait(); TInt propInt; proxy->PropertyVarInt(propInt); ASSERT(propInt == -99); TInt valInt; proxy->SyncGetInt(valInt); ASSERT(propInt == valInt); Print("Bool...\n"); proxy->SyncSetBool(true); iUpdatesComplete.Wait(); TBool propBool; proxy->PropertyVarBool(propBool); ASSERT(propBool); TBool valBool; proxy->SyncGetBool(valBool); ASSERT(valBool); Print("String...\n"); Brn str("Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut " "labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco " "laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in " "voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat " "non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."); proxy->SyncSetString(str); iUpdatesComplete.Wait(); Brhz propStr; proxy->PropertyVarStr(propStr); ASSERT(propStr == str); // test again to check that PropertyVarStr didn't TransferTo the property proxy->PropertyVarStr(propStr); ASSERT(propStr == str); Brh valStr; proxy->SyncGetString(valStr); ASSERT(propStr == valStr); Print("Binary...\n"); char bin[256]; for (TUint i=0; i<256; i++) { bin[i] = (char)i; } Brn bufBin((const TByte*)&bin[0], 256); proxy->SyncSetBinary(bufBin); iUpdatesComplete.Wait(); Brh propBin; proxy->PropertyVarBin(propBin); ASSERT(propBin == bufBin); // test again to check that PropertyVarBin didn't TransferTo the property proxy->PropertyVarBin(propBin); ASSERT(propBin == bufBin); Brh valBin; proxy->SyncGetBinary(valBin); ASSERT(propBin == valBin); Print("Multiple...\n"); proxy->SyncSetMultiple(15, 658, false); iUpdatesComplete.Wait(); proxy->PropertyVarUint(propUint); ASSERT(propUint == 15); proxy->SyncGetUint(valUint); ASSERT(propUint == valUint); proxy->PropertyVarInt(propInt); ASSERT(propInt == 658); proxy->SyncGetInt(valInt); ASSERT(propInt == valInt); proxy->PropertyVarBool(propBool); ASSERT(!propBool); proxy->SyncGetBool(valBool); ASSERT(!valBool); delete proxy; // automatically unsubscribes }
static void TestSubscription(CpDevice& aDevice) { Semaphore sem("TSEM", 0); Print(" Subscriptions\n"); CpProxyOpenhomeOrgTestBasic1* proxy = new CpProxyOpenhomeOrgTestBasic1(aDevice); Functor functor = MakeFunctor(&sem, updatesComplete); proxy->SetPropertyChanged(functor); proxy->Subscribe(); sem.Wait(); // wait for initial event /* For each property, call the setter action it wait on a property being updated check that the property matches the value set check that the getter action matches the property */ Print(" Uint...\n"); proxy->SyncSetUint(1); sem.Wait(); TUint propUint; proxy->PropertyVarUint(propUint); ASSERT(propUint == 1); TUint valUint; proxy->SyncGetUint(valUint); ASSERT(propUint == valUint); Print(" Int...\n"); proxy->SyncSetInt(-99); sem.Wait(); TInt propInt; proxy->PropertyVarInt(propInt); ASSERT(propInt == -99); TInt valInt; proxy->SyncGetInt(valInt); ASSERT(propInt == valInt); Print(" Bool...\n"); proxy->SyncSetBool(true); sem.Wait(); TBool propBool; proxy->PropertyVarBool(propBool); ASSERT(propBool); TBool valBool; proxy->SyncGetBool(valBool); ASSERT(valBool); Print(" String...\n"); Brn str("<&'tag\">"); proxy->SyncSetString(str); sem.Wait(); Brhz propStr; proxy->PropertyVarStr(propStr); ASSERT(propStr == str); // test again to check that PropertyVarStr didn't TransferTo the property proxy->PropertyVarStr(propStr); ASSERT(propStr == str); Brh valStr; proxy->SyncGetString(valStr); ASSERT(propStr == valStr); // change str, check evented update doesn't aggregate previous and new values Brn str2(str.Ptr(), str.Bytes()/2); proxy->SyncSetString(str2); sem.Wait(); Brhz propStr2; proxy->PropertyVarStr(propStr2); ASSERT(propStr2 == str2); ASSERT(propStr2.Bytes() == propStr.Bytes()/2); Print(" Binary...\n"); char bin[256]; for (TUint i=0; i<256; i++) { bin[i] = (char)i; } Brn bufBin((const TByte*)&bin[0], 256); proxy->SyncSetBinary(bufBin); sem.Wait(); Brh propBin; proxy->PropertyVarBin(propBin); ASSERT(propBin == bufBin); // test again to check that PropertyVarBin didn't TransferTo the property proxy->PropertyVarBin(propBin); ASSERT(propBin == bufBin); Brh valBin; proxy->SyncGetBinary(valBin); ASSERT(propBin == valBin); // change bufBin, check evented update doesn't aggregate previous and new values Brn bufBin2(bufBin.Ptr(), bufBin.Bytes()/2); proxy->SyncSetBinary(bufBin2); sem.Wait(); Brh propBin2; proxy->PropertyVarBin(propBin2); ASSERT(propBin2 == bufBin2); ASSERT(propBin2.Bytes() == propBin.Bytes()/2); Print(" Multiple...\n"); proxy->SyncSetMultiple(15, 658, false); sem.Wait(); proxy->PropertyVarUint(propUint); ASSERT(propUint == 15); proxy->SyncGetUint(valUint); ASSERT(propUint == valUint); proxy->PropertyVarInt(propInt); ASSERT(propInt == 658); proxy->SyncGetInt(valInt); ASSERT(propInt == valInt); proxy->PropertyVarBool(propBool); ASSERT(!propBool); proxy->SyncGetBool(valBool); ASSERT(!valBool); delete proxy; // automatically unsubscribes }