bool CTestResource::SaveToRegistry(HKEY key,LPCTSTR psz) { bool rc=false; ENTERCRITICAL; // Delete all the keys under "psz" HKEY hKey; if(ERROR_SUCCESS==RegOpenKeyEx ((HKEY)key, psz, 0L, KEY_ENUMERATE_SUB_KEYS, &hKey)){ TCHAR szName[256]; DWORD dwSizeName=sizeof szName; FILETIME ftLastWriteTime; DWORD dwIndex; if(ERROR_SUCCESS==RegQueryInfoKey(hKey,0,0,0,&dwIndex,0,0,0,0,0,0,0)){ while((signed)--dwIndex>=0){ if(ERROR_SUCCESS!=RegEnumKeyEx(hKey, dwIndex, szName, &dwSizeName, NULL, NULL, NULL, &ftLastWriteTime) || ERROR_SUCCESS!=RegDeleteKey(hKey,szName)){ rc=false; } dwSizeName=sizeof szName; } } RegCloseKey(hKey); } rc=true; for(CTestResource *pResource=pFirstInstance;pResource;pResource=pResource->m_pNextInstance){ CTestResourceProperties prop1(pResource); rc&=prop1.SaveToRegistry(key,pResource->FileName()); } LEAVECRITICAL; return rc; }
void PropertyTest::testCanCreatePropertiesOfDifferentTypes() { string name1("prop1"); string name2("prop2"); string name3("prop3"); string name4("prop4"); string name5("prop5"); bool ok = true; string someValue("name"); int integer = 34; double d = 45.24; DateTime now; Property<string, bool> prop1(name1, ok); CPPUNIT_ASSERT_EQUAL(ok, prop1()); CPPUNIT_ASSERT_EQUAL(ok, prop1.getValue()); CPPUNIT_ASSERT_EQUAL(name1, prop1.getName()); Property<string, string> prop2(name2, someValue); CPPUNIT_ASSERT_EQUAL(someValue, prop2()); CPPUNIT_ASSERT_EQUAL(someValue, prop2.getValue()); CPPUNIT_ASSERT_EQUAL(name2, prop2.getName()); Property<string, int> prop3(name3, integer); CPPUNIT_ASSERT_EQUAL(integer, prop3()); CPPUNIT_ASSERT_EQUAL(integer, prop3.getValue()); CPPUNIT_ASSERT_EQUAL(name3, prop3.getName()); Property<string, double> prop4(name4, d); CPPUNIT_ASSERT_EQUAL(d, prop4()); CPPUNIT_ASSERT_EQUAL(d, prop4.getValue()); CPPUNIT_ASSERT_EQUAL(name4, prop4.getName()); Property<string, DateTime> prop5(name5, now); CPPUNIT_ASSERT_EQUAL(now.utcTime(), prop5().utcTime()); CPPUNIT_ASSERT_EQUAL(now.utcTime(), prop5.getValue().utcTime()); CPPUNIT_ASSERT_EQUAL(name5, prop5.getName()); }
int testOSMProperty() { OSMProperty prop1("key", "value"); OSMProperty prop2("key", "value"); CHECK_EQ(prop1, prop2); CHECK_EQ_TYPE(prop1.getKey().toStdString(), "key", std::string); CHECK_EQ_TYPE(prop1.getValue().toStdString(), "value", std::string); prop1.setKey("key2"); CHECK_EQ_TYPE(prop1.getKey().toStdString(), "key2", std::string); CHECK(!(prop1 == prop2)); return EXIT_SUCCESS; }
bool CTestResource::LoadFromRegistry(HKEY key,LPCTSTR psz) { // Find all the keys under "psz" and load from each of them bool rc=false; ENTERCRITICAL; HKEY hKey; if(ERROR_SUCCESS==RegOpenKeyEx ((HKEY)key, psz, 0L, KEY_ENUMERATE_SUB_KEYS, &hKey)){ TCHAR szName[256]; DWORD dwSizeName=sizeof szName; FILETIME ftLastWriteTime; for(DWORD dwIndex=0;ERROR_SUCCESS==RegEnumKeyEx(hKey, dwIndex, szName, &dwSizeName, NULL, NULL, NULL, &ftLastWriteTime); dwIndex++){ CTestResource *pResource=new CTestResource(_T(""),_T("")); String strKey; strKey.Format(_T("%s\\%s"),psz,szName); CTestResourceProperties prop1(pResource); prop1.LoadFromRegistry(key,strKey); dwSizeName=sizeof szName; } RegCloseKey(hKey); } LEAVECRITICAL; return rc; }
//------------------------------------------------------------------------------ TEST_F(Test_Engine_Object, Property) { auto objA = newObject<TestObjectA>(); objA->setProp1(5); ASSERT_EQ(5, objA->prop1()); //* [ ] PropertyChanged コールバックが呼ばれている ASSERT_EQ(1, objA->m_count); //* [ ] PropertyInfo が取れる ASSERT_EQ(true, TestObjectA::Prop1PropertyId != nullptr); auto objC = newObject<TestObjectC>(); //* [ ] int type ASSERT_EQ(1, objC->m_V1); objC->m_V1 = 2; ASSERT_EQ(2, objC->m_V1); //* [ ] pointer type ASSERT_EQ(nullptr, objC->m_V2); objC->m_V2 = objA; ASSERT_EQ(objA, objC->m_V2); //* [ ] struct type //Point pt1(1, 2); //objC->m_V3 = pt1; //ASSERT_EQ(1, objC->m_V3.get().x); //ASSERT_EQ(2, objC->m_V3.get().y); //* [ ] Ref<> type ASSERT_EQ(nullptr, objC->m_V4.get()); objC->m_V4 = objA; ASSERT_EQ(objA, objC->m_V4); }