Update of /cvsroot/aaf/AAF/test/com/XMLStoredFormat In directory sc8-pr-cvs11.sourceforge.net:/tmp/cvs-serv26566/test/com/XMLStoredFormat Added Files: XMLStoredFormatTest.h XMLStoredFormatTest.cpp TestWeakRef.cpp TestVarArray.cpp TestString.cpp TestStream.cpp TestSet.cpp TestRename.cpp TestRecord.cpp TestOpaque.cpp TestInteger.cpp TestIndirect.cpp TestFixedArray.cpp TestExtEnum.cpp TestExampleFiles.cpp TestEnum.cpp TestCharacter.cpp GNUmakefile Log Message: merge from aafx-prototype branch --- NEW FILE: TestWeakRef.cpp --- //=---------------------------------------------------------------------= // // $Id: TestWeakRef.cpp,v 1.1 2007/03/26 15:57:22 philipn Exp $ $Name: $ // // The contents of this file are subject to the AAF SDK Public // Source License Agreement (the "License"); You may not use this file // except in compliance with the License. The License is available in // AAFSDKPSL.TXT, or you may obtain a copy of the License from the AAF // Association or its successor. // // Software distributed under the License is distributed on an "AS IS" // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See // the License for the specific language governing rights and limitations // under the License. // // The Original Code of this file is Copyright 1998-2007, Licensor of the // AAF Association. // // The Initial Developer of the Original Code of this file and the // Licensor of the AAF Association is British Broadcasting Corporation. // All rights reserved. // //=---------------------------------------------------------------------= #include "XMLStoredFormatTest.h" static bool testRestore(wchar_t* fileName) { bool passed = true; IAAFFile* pFile = 0; IAAFHeader* pHeader = 0; IAAFDictionary* pDictionary = 0; IAAFContentStorage* pStorage = 0; IEnumAAFMobs* pMobs = 0; IAAFMob* pMob = 0; try { pFile = openFileForReading(fileName); } catch (...) { return false; } try { // get the Mob containing the test data checkResult(pFile->GetHeader(&pHeader)); checkResult(pHeader->GetDictionary(&pDictionary)); checkResult(pHeader->GetContentStorage(&pStorage)); aafSearchCrit_t searchCrit; searchCrit.searchTag = kAAFByMobKind; searchCrit.tags.mobKind = kAAFAllMob; checkResult(pStorage->GetMobs(&searchCrit, &pMobs)); checkResult(pMobs->NextOne(&pMob)); IAAFObject* pObject = 0; IAAFClassDef* pClassDef = 0; IAAFPropertyDef* pPropertyDef = 0; IAAFPropertyValue* pPropertyValue = 0; IAAFTypeDef* pType = 0; IAAFTypeDefWeakObjRef* pWeakRefType = 0; IAAFTypeDefObjectRef* pObjectRefType = 0; IUnknown* pReferencedObject = 0; try { printf(" * Reference to baseline MetaDefinition using AUID: "); const aafUID_t propId = {0x00000000,0x0000,0x0000,{0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; checkResult(pMob->QueryInterface(IID_IAAFObject, (void **)&pObject)); checkResult(pDictionary->LookupClassDef(kAAFClassID_Mob, &pClassDef)); checkResult(pClassDef->LookupPropertyDef(propId, &pPropertyDef)); checkResult(pObject->GetPropertyValue(pPropertyDef, &pPropertyValue)); checkResult(pPropertyValue->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefWeakObjRef, (void **)&pWeakRefType)); release(pType); checkResult(pWeakRefType->QueryInterface(IID_IAAFTypeDefObjectRef, (void **)&pObjectRefType)); release(pWeakRefType); checkResult(pObjectRefType->GetObject(pPropertyValue, IID_IAAFClassDef, &pReferencedObject)); printf("passed\n"); passed = true; } catch (...) { printf("FAILED\n"); passed = false; } release(pReferencedObject); release(pObjectRefType); release(pWeakRefType); release(pType); release(pPropertyValue); release(pPropertyDef); release(pClassDef); release(pObject); try { printf(" * Reference to baseline MetaDefinition using Symbol: "); const aafUID_t propId = {0x10000000,0x0000,0x0000,{0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; checkResult(pMob->QueryInterface(IID_IAAFObject, (void **)&pObject)); checkResult(pDictionary->LookupClassDef(kAAFClassID_Mob, &pClassDef)); checkResult(pClassDef->LookupPropertyDef(propId, &pPropertyDef)); checkResult(pObject->GetPropertyValue(pPropertyDef, &pPropertyValue)); checkResult(pPropertyValue->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefWeakObjRef, (void **)&pWeakRefType)); release(pType); checkResult(pWeakRefType->QueryInterface(IID_IAAFTypeDefObjectRef, (void **)&pObjectRefType)); release(pWeakRefType); checkResult(pObjectRefType->GetObject(pPropertyValue, IID_IAAFClassDef, &pReferencedObject)); printf("passed\n"); passed = true; } catch (...) { printf("FAILED\n"); passed = false; } release(pReferencedObject); release(pObjectRefType); release(pWeakRefType); release(pType); release(pPropertyValue); release(pPropertyDef); release(pClassDef); release(pObject); try { printf(" * Reference to baseline MetaDefinition using QSymbol: "); const aafUID_t propId = {0x20000000,0x0000,0x0000,{0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; checkResult(pMob->QueryInterface(IID_IAAFObject, (void **)&pObject)); checkResult(pDictionary->LookupClassDef(kAAFClassID_Mob, &pClassDef)); checkResult(pClassDef->LookupPropertyDef(propId, &pPropertyDef)); checkResult(pObject->GetPropertyValue(pPropertyDef, &pPropertyValue)); checkResult(pPropertyValue->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefWeakObjRef, (void **)&pWeakRefType)); release(pType); checkResult(pWeakRefType->QueryInterface(IID_IAAFTypeDefObjectRef, (void **)&pObjectRefType)); release(pWeakRefType); checkResult(pObjectRefType->GetObject(pPropertyValue, IID_IAAFClassDef, &pReferencedObject)); printf("passed\n"); passed = true; } catch (...) { printf("FAILED\n"); passed = false; } release(pReferencedObject); release(pObjectRefType); release(pWeakRefType); release(pType); release(pPropertyValue); release(pPropertyDef); release(pClassDef); release(pObject); try { printf(" * Reference to non-baseline MetaDefinition using AUID: "); const aafUID_t propId = {0x30000000,0x0000,0x0000,{0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; checkResult(pMob->QueryInterface(IID_IAAFObject, (void **)&pObject)); checkResult(pDictionary->LookupClassDef(kAAFClassID_Mob, &pClassDef)); checkResult(pClassDef->LookupPropertyDef(propId, &pPropertyDef)); checkResult(pObject->GetPropertyValue(pPropertyDef, &pPropertyValue)); checkResult(pPropertyValue->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefWeakObjRef, (void **)&pWeakRefType)); release(pType); checkResult(pWeakRefType->QueryInterface(IID_IAAFTypeDefObjectRef, (void **)&pObjectRefType)); release(pWeakRefType); checkResult(pObjectRefType->GetObject(pPropertyValue, IID_IAAFClassDef, &pReferencedObject)); printf("passed\n"); passed = true; } catch (...) { printf("FAILED\n"); passed = false; } release(pReferencedObject); release(pObjectRefType); release(pWeakRefType); release(pType); release(pPropertyValue); release(pPropertyDef); release(pClassDef); release(pObject); try { printf(" * Reference to non-baseline MetaDefinition using QSymbol: "); const aafUID_t propId = {0x40000000,0x0000,0x0000,{0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; checkResult(pMob->QueryInterface(IID_IAAFObject, (void **)&pObject)); checkResult(pDictionary->LookupClassDef(kAAFClassID_Mob, &pClassDef)); checkResult(pClassDef->LookupPropertyDef(propId, &pPropertyDef)); checkResult(pObject->GetPropertyValue(pPropertyDef, &pPropertyValue)); checkResult(pPropertyValue->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefWeakObjRef, (void **)&pWeakRefType)); release(pType); checkResult(pWeakRefType->QueryInterface(IID_IAAFTypeDefObjectRef, (void **)&pObjectRefType)); release(pWeakRefType); checkResult(pObjectRefType->GetObject(pPropertyValue, IID_IAAFClassDef, &pReferencedObject)); printf("passed\n"); passed = true; } catch (...) { printf("FAILED\n"); passed = false; } release(pReferencedObject); release(pObjectRefType); release(pWeakRefType); release(pType); release(pPropertyValue); release(pPropertyDef); release(pClassDef); release(pObject); try { printf(" * Reference to baseline DefinitionObject using AUID: "); const aafUID_t propId = {0x50000000,0x0000,0x0000,{0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; checkResult(pMob->QueryInterface(IID_IAAFObject, (void **)&pObject)); checkResult(pDictionary->LookupClassDef(kAAFClassID_Mob, &pClassDef)); checkResult(pClassDef->LookupPropertyDef(propId, &pPropertyDef)); checkResult(pObject->GetPropertyValue(pPropertyDef, &pPropertyValue)); checkResult(pPropertyValue->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefWeakObjRef, (void **)&pWeakRefType)); release(pType); checkResult(pWeakRefType->QueryInterface(IID_IAAFTypeDefObjectRef, (void **)&pObjectRefType)); release(pWeakRefType); checkResult(pObjectRefType->GetObject(pPropertyValue, IID_IAAFDataDef, &pReferencedObject)); printf("passed\n"); passed = true; } catch (...) { printf("FAILED\n"); passed = false; } release(pReferencedObject); release(pObjectRefType); release(pWeakRefType); release(pType); release(pPropertyValue); release(pPropertyDef); release(pClassDef); release(pObject); try { printf(" * Reference to baseline DefinitionObject using Symbol: "); const aafUID_t propId = {0x60000000,0x0000,0x0000,{0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; checkResult(pMob->QueryInterface(IID_IAAFObject, (void **)&pObject)); checkResult(pDictionary->LookupClassDef(kAAFClassID_Mob, &pClassDef)); checkResult(pClassDef->LookupPropertyDef(propId, &pPropertyDef)); checkResult(pObject->GetPropertyValue(pPropertyDef, &pPropertyValue)); checkResult(pPropertyValue->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefWeakObjRef, (void **)&pWeakRefType)); release(pType); checkResult(pWeakRefType->QueryInterface(IID_IAAFTypeDefObjectRef, (void **)&pObjectRefType)); release(pWeakRefType); checkResult(pObjectRefType->GetObject(pPropertyValue, IID_IAAFDataDef, &pReferencedObject)); printf("passed\n"); passed = true; } catch (...) { printf("FAILED\n"); passed = false; } release(pReferencedObject); release(pObjectRefType); release(pWeakRefType); release(pType); release(pPropertyValue); release(pPropertyDef); release(pClassDef); release(pObject); try { printf(" * Reference to non-baseline DefinitionObject using AUID: "); const aafUID_t propId = {0x70000000,0x0000,0x0000,{0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; checkResult(pMob->QueryInterface(IID_IAAFObject, (void **)&pObject)); checkResult(pDictionary->LookupClassDef(kAAFClassID_Mob, &pClassDef)); checkResult(pClassDef->LookupPropertyDef(propId, &pPropertyDef)); checkResult(pObject->GetPropertyValue(pPropertyDef, &pPropertyValue)); checkResult(pPropertyValue->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefWeakObjRef, (void **)&pWeakRefType)); release(pType); checkResult(pWeakRefType->QueryInterface(IID_IAAFTypeDefObjectRef, (void **)&pObjectRefType)); release(pWeakRefType); checkResult(pObjectRefType->GetObject(pPropertyValue, IID_IAAFDataDef, &pReferencedObject)); printf("passed\n"); passed = true; } catch (...) { printf("FAILED\n"); passed = false; } release(pReferencedObject); release(pObjectRefType); release(pWeakRefType); release(pType); release(pPropertyValue); release(pPropertyDef); release(pClassDef); release(pObject); try { printf(" * Reference to non-baseline DefinitionObject using uid string: "); const aafUID_t propId = {0x80000000,0x0000,0x0000,{0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; checkResult(pMob->QueryInterface(IID_IAAFObject, (void **)&pObject)); checkResult(pDictionary->LookupClassDef(kAAFClassID_Mob, &pClassDef)); checkResult(pClassDef->LookupPropertyDef(propId, &pPropertyDef)); checkResult(pObject->GetPropertyValue(pPropertyDef, &pPropertyValue)); checkResult(pPropertyValue->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefWeakObjRef, (void **)&pWeakRefType)); release(pType); checkResult(pWeakRefType->QueryInterface(IID_IAAFTypeDefObjectRef, (void **)&pObjectRefType)); release(pWeakRefType); checkResult(pObjectRefType->GetObject(pPropertyValue, IID_IAAFDataDef, &pReferencedObject)); printf("passed\n"); passed = true; } catch (...) { printf("FAILED\n"); passed = false; } release(pReferencedObject); release(pObjectRefType); release(pWeakRefType); release(pType); release(pPropertyValue); release(pPropertyDef); release(pClassDef); release(pObject); try { printf(" * Non-baseline reference type to ClassDefinition: "); const aafUID_t propId = {0x90000000,0x0000,0x0000,{0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; checkResult(pMob->QueryInterface(IID_IAAFObject, (void **)&pObject)); checkResult(pDictionary->LookupClassDef(kAAFClassID_Mob, &pClassDef)); checkResult(pClassDef->LookupPropertyDef(propId, &pPropertyDef)); checkResult(pObject->GetPropertyValue(pPropertyDef, &pPropertyValue)); checkResult(pPropertyValue->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefWeakObjRef, (void **)&pWeakRefType)); release(pType); checkResult(pWeakRefType->QueryInterface(IID_IAAFTypeDefObjectRef, (void **)&pObjectRefType)); release(pWeakRefType); checkResult(pObjectRefType->GetObject(pPropertyValue, IID_IAAFClassDef, &pReferencedObject)); printf("passed\n"); passed = true; } catch (...) { printf("FAILED\n"); passed = false; } release(pReferencedObject); release(pObjectRefType); release(pWeakRefType); release(pType); release(pPropertyValue); release(pPropertyDef); release(pClassDef); release(pObject); try { printf(" * Non-baseline reference type to DataDefinition: "); const aafUID_t propId = {0xA0000000,0x0000,0x0000,{0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; checkResult(pMob->QueryInterface(IID_IAAFObject, (void **)&pObject)); checkResult(pDictionary->LookupClassDef(kAAFClassID_Mob, &pClassDef)); checkResult(pClassDef->LookupPropertyDef(propId, &pPropertyDef)); checkResult(pObject->GetPropertyValue(pPropertyDef, &pPropertyValue)); checkResult(pPropertyValue->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefWeakObjRef, (void **)&pWeakRefType)); release(pType); checkResult(pWeakRefType->QueryInterface(IID_IAAFTypeDefObjectRef, (void **)&pObjectRefType)); release(pWeakRefType); checkResult(pObjectRefType->GetObject(pPropertyValue, IID_IAAFDataDef, &pReferencedObject)); printf("passed\n"); passed = true; } catch (...) { printf("FAILED\n"); passed = false; } release(pReferencedObject); release(pObjectRefType); release(pWeakRefType); release(pType); release(pPropertyValue); release(pPropertyDef); release(pClassDef); release(pObject); } catch (...) { passed = false; } // cleanup release(pMob); release(pMobs); release(pStorage); release(pDictionary); release(pHeader); checkResult(pFile->Close()); release(pFile); report(passed); return passed; } bool testWeakRef() { printf("Rule 5.15: Weak Object Reference\n"); bool passed = true; try { printf("a) Restore\n"); passed = testRestore(L"input/testWeakRef.xml") && passed; printf("b) Roundtrip\n"); saveCopy(L"input/testWeakRef.xml", L"tmp.xml"); passed = testRestore(L"tmp.xml") && passed; printf("c) Modify\n"); copyAndTouch(L"input/testWeakRef.xml", L"input/tmp.xml"); passed = testRestore(L"input/tmp.xml") && passed; } catch (...) { passed = false; printf("FAILED: Exception thrown\n"); } printf("\n"); return passed; } --- NEW FILE: TestStream.cpp --- //=---------------------------------------------------------------------= // // $Id: TestStream.cpp,v 1.1 2007/03/26 15:57:22 philipn Exp $ $Name: $ // // The contents of this file are subject to the AAF SDK Public // Source License Agreement (the "License"); You may not use this file // except in compliance with the License. The License is available in // AAFSDKPSL.TXT, or you may obtain a copy of the License from the AAF // Association or its successor. // // Software distributed under the License is distributed on an "AS IS" // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See // the License for the specific language governing rights and limitations // under the License. // // The Original Code of this file is Copyright 1998-2007, Licensor of the // AAF Association. // // The Initial Developer of the Original Code of this file and the // Licensor of the AAF Association is British Broadcasting Corporation. // All rights reserved. // //=---------------------------------------------------------------------= #include "XMLStoredFormatTest.h" static bool testRestore(wchar_t* fileName) { bool passed = true; IAAFFile* pFile = 0; IAAFHeader* pHeader = 0; IAAFDictionary* pDictionary = 0; IAAFContentStorage* pStorage = 0; IEnumAAFMobs* pMobs = 0; IAAFMob* pMob = 0; try { pFile = openFileForReading(fileName); } catch (...) { return false; } try { // get the Mob containing the test data checkResult(pFile->GetHeader(&pHeader)); checkResult(pHeader->GetDictionary(&pDictionary)); checkResult(pHeader->GetContentStorage(&pStorage)); aafSearchCrit_t searchCrit; searchCrit.searchTag = kAAFByMobKind; searchCrit.tags.mobKind = kAAFAllMob; checkResult(pStorage->GetMobs(&searchCrit, &pMobs)); checkResult(pMobs->NextOne(&pMob)); IAAFObject* pObject = 0; IAAFClassDef* pClassDef = 0; IAAFPropertyDef* pPropertyDef = 0; IAAFPropertyValue* pPropertyValue = 0; IAAFTypeDef* pType = 0; IAAFTypeDefStream* pStreamType = 0; try { printf(" * Simple: "); const aafUID_t propId = {0x00000000,0x0000,0x0000,{0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; aafUInt8 testValue[8] = {'A', 'B', 'C', 'D', 'E', 'F', 'G', '\n'}; eAAFByteOrder_t testByteOrderValue = kAAFByteOrderBig; checkResult(pMob->QueryInterface(IID_IAAFObject, (void **)&pObject)); checkResult(pDictionary->LookupClassDef(kAAFClassID_Mob, &pClassDef)); checkResult(pClassDef->LookupPropertyDef(propId, &pPropertyDef)); checkResult(pObject->GetPropertyValue(pPropertyDef, &pPropertyValue)); checkResult(pPropertyValue->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefStream, (void **)&pStreamType)); release(pType); eAAFByteOrder_t byteOrderValue; checkResult(pStreamType->GetStoredByteOrder(pPropertyValue, &byteOrderValue)); aafInt64 size; checkResult(pStreamType->GetSize(pPropertyValue, &size)); aafUInt8 value[256]; aafUInt32 numRead; checkResult(pStreamType->Read(pPropertyValue, size, value, &numRead)); if (byteOrderValue == testByteOrderValue && size == 8 && memcmp(value, testValue, (size_t)size) == 0) { printf("passed\n"); } else { printf("FAILED\n"); passed = false; } } catch (...) { printf("FAILED\n"); passed = false; } release(pStreamType); release(pType); release(pPropertyValue); release(pPropertyDef); release(pClassDef); release(pObject); try { printf(" * Empty: "); const aafUID_t propId = {0x10000000,0x0000,0x0000,{0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; checkResult(pMob->QueryInterface(IID_IAAFObject, (void **)&pObject)); checkResult(pDictionary->LookupClassDef(kAAFClassID_Mob, &pClassDef)); checkResult(pClassDef->LookupPropertyDef(propId, &pPropertyDef)); HRESULT hr = pObject->GetPropertyValue(pPropertyDef, &pPropertyValue); if (hr == AAFRESULT_PROP_NOT_PRESENT) { // Note: A DataValue is represented by a OMArrayProperty (OMDataVector) // and when cloning the destination will get no elements appended and // therefore isPresent() will be false printf("passed (property not present)\n"); } else { checkResult(hr); checkResult(pObject->GetPropertyValue(pPropertyDef, &pPropertyValue)); checkResult(pPropertyValue->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefStream, (void **)&pStreamType)); release(pType); aafBoolean_t hasByteOrderValue; checkResult(pStreamType->HasStoredByteOrder(pPropertyValue, &hasByteOrderValue)); aafInt64 size; checkResult(pStreamType->GetSize(pPropertyValue, &size)); if (hasByteOrderValue == kAAFFalse && size == 0) { printf("passed\n"); } else { printf("FAILED\n"); passed = false; } } } catch (...) { printf("FAILED\n"); passed = false; } release(pStreamType); release(pType); release(pPropertyValue); release(pPropertyDef); release(pClassDef); release(pObject); } catch (...) { passed = false; } // cleanup release(pMob); release(pMobs); release(pStorage); release(pDictionary); release(pHeader); checkResult(pFile->Close()); release(pFile); report(passed); return passed; } bool testStream() { printf("Rule 5.11: Stream\n"); bool passed = true; try { printf("a) Restore\n"); passed = testRestore(L"input/testStream.xml") && passed; printf("b) Roundtrip\n"); saveCopy(L"input/testStream.xml", L"tmp.xml"); passed = testRestore(L"tmp.xml") && passed; printf("c) Modify\n"); copyAndTouch(L"input/testStream.xml", L"input/tmp.xml"); passed = testRestore(L"input/tmp.xml") && passed; } catch (...) { passed = false; printf("FAILED: Exception thrown\n"); } printf("\n"); return passed; } --- NEW FILE: TestInteger.cpp --- //=---------------------------------------------------------------------= // // $Id: TestInteger.cpp,v 1.1 2007/03/26 15:57:23 philipn Exp $ $Name: $ // // The contents of this file are subject to the AAF SDK Public // Source License Agreement (the "License"); You may not use this file // except in compliance with the License. The License is available in // AAFSDKPSL.TXT, or you may obtain a copy of the License from the AAF // Association or its successor. // // Software distributed under the License is distributed on an "AS IS" // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See // the License for the specific language governing rights and limitations // under the License. // // The Original Code of this file is Copyright 1998-2007, Licensor of the // AAF Association. // // The Initial Developer of the Original Code of this file and the // Licensor of the AAF Association is British Broadcasting Corporation. // All rights reserved. // //=---------------------------------------------------------------------= #include "XMLStoredFormatTest.h" static bool testRestore(wchar_t* fileName) { bool passed = true; IAAFFile* pFile = 0; IAAFHeader* pHeader = 0; IAAFDictionary* pDictionary = 0; IAAFContentStorage* pStorage = 0; IEnumAAFMobs* pMobs = 0; IAAFMob* pMob = 0; try { pFile = openFileForReading(fileName); } catch (...) { return false; } try { // get the Mob containing the test data checkResult(pFile->GetHeader(&pHeader)); checkResult(pHeader->GetDictionary(&pDictionary)); checkResult(pHeader->GetContentStorage(&pStorage)); aafSearchCrit_t searchCrit; searchCrit.searchTag = kAAFByMobKind; searchCrit.tags.mobKind = kAAFAllMob; checkResult(pStorage->GetMobs(&searchCrit, &pMobs)); checkResult(pMobs->NextOne(&pMob)); IAAFObject* pObject = 0; IAAFClassDef* pClassDef = 0; IAAFPropertyDef* pPropertyDef = 0; IAAFPropertyValue* pPropertyValue = 0; IAAFTypeDef* pType = 0; IAAFTypeDefVariableArray* pVarArrayType = 0; IAAFTypeDefInt* pIntType = 0; IAAFPropertyValue* pIntValue = 0; try { printf(" * UInt8: "); const aafUID_t propId = {0x00000000,0x0000,0x0000,{0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; checkResult(pMob->QueryInterface(IID_IAAFObject, (void **)&pObject)); checkResult(pDictionary->LookupClassDef(kAAFClassID_Mob, &pClassDef)); checkResult(pClassDef->LookupPropertyDef(propId, &pPropertyDef)); checkResult(pObject->GetPropertyValue(pPropertyDef, &pPropertyValue)); checkResult(pPropertyValue->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefVariableArray, (void **)&pVarArrayType)); release(pType); checkResult(pVarArrayType->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefInt, (void **)&pIntType)); bool localPassed = true; aafUInt8 value; checkResult(pVarArrayType->GetElementValue(pPropertyValue, 0, &pIntValue)); checkResult(pIntType->GetInteger(pIntValue, &value, 1)); localPassed = localPassed && value == 0; checkResult(pVarArrayType->GetElementValue(pPropertyValue, 1, &pIntValue)); checkResult(pIntType->GetInteger(pIntValue, &value, 1)); localPassed = localPassed && value == 255; checkResult(pVarArrayType->GetElementValue(pPropertyValue, 2, &pIntValue)); checkResult(pIntType->GetInteger(pIntValue, &value, 1)); localPassed = localPassed && value == 0xFF; if (localPassed) { printf("passed\n"); } else { printf("FAILED\n"); passed = false; } } catch (...) { printf("FAILED\n"); passed = false; } release(pIntValue); release(pIntType); release(pVarArrayType); release(pType); release(pPropertyValue); release(pPropertyDef); release(pClassDef); release(pObject); try { printf(" * Int8: "); const aafUID_t propId = {0x10000000,0x0000,0x0000,{0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; checkResult(pMob->QueryInterface(IID_IAAFObject, (void **)&pObject)); checkResult(pDictionary->LookupClassDef(kAAFClassID_Mob, &pClassDef)); checkResult(pClassDef->LookupPropertyDef(propId, &pPropertyDef)); checkResult(pObject->GetPropertyValue(pPropertyDef, &pPropertyValue)); checkResult(pPropertyValue->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefVariableArray, (void **)&pVarArrayType)); release(pType); checkResult(pVarArrayType->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefInt, (void **)&pIntType)); bool localPassed = true; aafInt8 value; checkResult(pVarArrayType->GetElementValue(pPropertyValue, 0, &pIntValue)); checkResult(pIntType->GetInteger(pIntValue, (aafUInt8*)&value, 1)); localPassed = localPassed && value == -128; checkResult(pVarArrayType->GetElementValue(pPropertyValue, 1, &pIntValue)); checkResult(pIntType->GetInteger(pIntValue, (aafUInt8*)&value, 1)); localPassed = localPassed && value == 127; checkResult(pVarArrayType->GetElementValue(pPropertyValue, 2, &pIntValue)); checkResult(pIntType->GetInteger(pIntValue, (aafUInt8*)&value, 1)); localPassed = localPassed && (aafUInt8)value == 0xFF; if (localPassed) { printf("passed\n"); } else { printf("FAILED\n"); passed = false; } } catch (...) { printf("FAILED\n"); passed = false; } release(pIntValue); release(pIntType); release(pVarArrayType); release(pType); release(pPropertyValue); release(pPropertyDef); release(pClassDef); release(pObject); try { printf(" * UInt16: "); const aafUID_t propId = {0x20000000,0x0000,0x0000,{0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; checkResult(pMob->QueryInterface(IID_IAAFObject, (void **)&pObject)); checkResult(pDictionary->LookupClassDef(kAAFClassID_Mob, &pClassDef)); checkResult(pClassDef->LookupPropertyDef(propId, &pPropertyDef)); checkResult(pObject->GetPropertyValue(pPropertyDef, &pPropertyValue)); checkResult(pPropertyValue->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefVariableArray, (void **)&pVarArrayType)); release(pType); checkResult(pVarArrayType->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefInt, (void **)&pIntType)); bool localPassed = true; aafUInt16 value; checkResult(pVarArrayType->GetElementValue(pPropertyValue, 0, &pIntValue)); checkResult(pIntType->GetInteger(pIntValue, (aafUInt8*)&value, 2)); localPassed = localPassed && value == 0; checkResult(pVarArrayType->GetElementValue(pPropertyValue, 1, &pIntValue)); checkResult(pIntType->GetInteger(pIntValue, (aafUInt8*)&value, 2)); localPassed = localPassed && value == 65535; checkResult(pVarArrayType->GetElementValue(pPropertyValue, 2, &pIntValue)); checkResult(pIntType->GetInteger(pIntValue, (aafUInt8*)&value, 2)); localPassed = localPassed && value == 0xFFFF; if (localPassed) { printf("passed\n"); } else { printf("FAILED\n"); passed = false; } } catch (...) { printf("FAILED\n"); passed = false; } release(pIntValue); release(pIntType); release(pVarArrayType); release(pType); release(pPropertyValue); release(pPropertyDef); release(pClassDef); release(pObject); try { printf(" * Int16: "); const aafUID_t propId = {0x30000000,0x0000,0x0000,{0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; checkResult(pMob->QueryInterface(IID_IAAFObject, (void **)&pObject)); checkResult(pDictionary->LookupClassDef(kAAFClassID_Mob, &pClassDef)); checkResult(pClassDef->LookupPropertyDef(propId, &pPropertyDef)); checkResult(pObject->GetPropertyValue(pPropertyDef, &pPropertyValue)); checkResult(pPropertyValue->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefVariableArray, (void **)&pVarArrayType)); release(pType); checkResult(pVarArrayType->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefInt, (void **)&pIntType)); bool localPassed = true; aafInt16 value; checkResult(pVarArrayType->GetElementValue(pPropertyValue, 0, &pIntValue)); checkResult(pIntType->GetInteger(pIntValue, (aafUInt8*)&value, 2)); localPassed = localPassed && value == -32768; checkResult(pVarArrayType->GetElementValue(pPropertyValue, 1, &pIntValue)); checkResult(pIntType->GetInteger(pIntValue, (aafUInt8*)&value, 2)); localPassed = localPassed && value == 32767; checkResult(pVarArrayType->GetElementValue(pPropertyValue, 2, &pIntValue)); checkResult(pIntType->GetInteger(pIntValue, (aafUInt8*)&value, 2)); localPassed = localPassed && (aafUInt16)value == 0xFFFF; if (localPassed) { printf("passed\n"); } else { printf("FAILED\n"); passed = false; } } catch (...) { printf("FAILED\n"); passed = false; } release(pIntValue); release(pIntType); release(pVarArrayType); release(pType); release(pPropertyValue); release(pPropertyDef); release(pClassDef); release(pObject); try { printf(" * UInt32: "); const aafUID_t propId = {0x40000000,0x0000,0x0000,{0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; checkResult(pMob->QueryInterface(IID_IAAFObject, (void **)&pObject)); checkResult(pDictionary->LookupClassDef(kAAFClassID_Mob, &pClassDef)); checkResult(pClassDef->LookupPropertyDef(propId, &pPropertyDef)); checkResult(pObject->GetPropertyValue(pPropertyDef, &pPropertyValue)); checkResult(pPropertyValue->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefVariableArray, (void **)&pVarArrayType)); release(pType); checkResult(pVarArrayType->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefInt, (void **)&pIntType)); bool localPassed = true; aafUInt32 value; checkResult(pVarArrayType->GetElementValue(pPropertyValue, 0, &pIntValue)); checkResult(pIntType->GetInteger(pIntValue, (aafUInt8*)&value, 4)); localPassed = localPassed && value == 0; checkResult(pVarArrayType->GetElementValue(pPropertyValue, 1, &pIntValue)); checkResult(pIntType->GetInteger(pIntValue, (aafUInt8*)&value, 4)); localPassed = localPassed && value == 0xFFFFFFFF;//4294967295; checkResult(pVarArrayType->GetElementValue(pPropertyValue, 2, &pIntValue)); checkResult(pIntType->GetInteger(pIntValue, (aafUInt8*)&value, 4)); localPassed = localPassed && value == 0xFFFFFFFF; if (localPassed) { printf("passed\n"); } else { printf("FAILED\n"); passed = false; } } catch (...) { printf("FAILED\n"); passed = false; } release(pIntValue); release(pIntType); release(pVarArrayType); release(pType); release(pPropertyValue); release(pPropertyDef); release(pClassDef); release(pObject); try { printf(" * Int32: "); const aafUID_t propId = {0x50000000,0x0000,0x0000,{0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; checkResult(pMob->QueryInterface(IID_IAAFObject, (void **)&pObject)); checkResult(pDictionary->LookupClassDef(kAAFClassID_Mob, &pClassDef)); checkResult(pClassDef->LookupPropertyDef(propId, &pPropertyDef)); checkResult(pObject->GetPropertyValue(pPropertyDef, &pPropertyValue)); checkResult(pPropertyValue->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefVariableArray, (void **)&pVarArrayType)); release(pType); checkResult(pVarArrayType->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefInt, (void **)&pIntType)); bool localPassed = true; aafInt32 value; aafUInt32 maxValue; memset(&maxValue, 0xFF, sizeof(aafUInt64)); checkResult(pVarArrayType->GetElementValue(pPropertyValue, 0, &pIntValue)); checkResult(pIntType->GetInteger(pIntValue, (aafUInt8*)&value, 4)); localPassed = localPassed && value == (aafInt32)(maxValue / 2 + 1); checkResult(pVarArrayType->GetElementValue(pPropertyValue, 1, &pIntValue)); checkResult(pIntType->GetInteger(pIntValue, (aafUInt8*)&value, 4)); localPassed = localPassed && value == (aafInt32)(maxValue / 2); checkResult(pVarArrayType->GetElementValue(pPropertyValue, 2, &pIntValue)); checkResult(pIntType->GetInteger(pIntValue, (aafUInt8*)&value, 4)); localPassed = localPassed && (aafUInt32)value == 0xFFFFFFFF; if (localPassed) { printf("passed\n"); } else { printf("FAILED\n"); passed = false; } } catch (...) { printf("FAILED\n"); passed = false; } release(pIntValue); release(pIntType); release(pVarArrayType); release(pType); release(pPropertyValue); release(pPropertyDef); release(pClassDef); release(pObject); try { printf(" * UInt64: "); const aafUID_t propId = {0x60000000,0x0000,0x0000,{0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; checkResult(pMob->QueryInterface(IID_IAAFObject, (void **)&pObject)); checkResult(pDictionary->LookupClassDef(kAAFClassID_Mob, &pClassDef)); checkResult(pClassDef->LookupPropertyDef(propId, &pPropertyDef)); checkResult(pObject->GetPropertyValue(pPropertyDef, &pPropertyValue)); checkResult(pPropertyValue->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefVariableArray, (void **)&pVarArrayType)); release(pType); checkResult(pVarArrayType->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefInt, (void **)&pIntType)); bool localPassed = true; aafUInt64 value; aafUInt64 maxValue; memset(&maxValue, 0xFF, sizeof(aafUInt64)); checkResult(pVarArrayType->GetElementValue(pPropertyValue, 0, &pIntValue)); checkResult(pIntType->GetInteger(pIntValue, (aafUInt8*)&value, 8)); localPassed = localPassed && value == 0; checkResult(pVarArrayType->GetElementValue(pPropertyValue, 1, &pIntValue)); checkResult(pIntType->GetInteger(pIntValue, (aafUInt8*)&value, 8)); localPassed = localPassed && value == maxValue;//18446744073709551615; checkResult(pVarArrayType->GetElementValue(pPropertyValue, 2, &pIntValue)); checkResult(pIntType->GetInteger(pIntValue, (aafUInt8*)&value, 8)); localPassed = localPassed && value == maxValue; if (localPassed) { printf("passed\n"); } else { printf("FAILED\n"); passed = false; } } catch (...) { printf("FAILED\n"); passed = false; } release(pIntValue); release(pIntType); release(pVarArrayType); release(pType); release(pPropertyValue); release(pPropertyDef); release(pClassDef); release(pObject); try { printf(" * Int64: "); const aafUID_t propId = {0x70000000,0x0000,0x0000,{0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; checkResult(pMob->QueryInterface(IID_IAAFObject, (void **)&pObject)); checkResult(pDictionary->LookupClassDef(kAAFClassID_Mob, &pClassDef)); checkResult(pClassDef->LookupPropertyDef(propId, &pPropertyDef)); checkResult(pObject->GetPropertyValue(pPropertyDef, &pPropertyValue)); checkResult(pPropertyValue->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefVariableArray, (void **)&pVarArrayType)); release(pType); checkResult(pVarArrayType->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefInt, (void **)&pIntType)); bool localPassed = true; aafInt64 value; aafUInt64 maxValue; memset(&maxValue, 0xFF, sizeof(aafUInt64)); checkResult(pVarArrayType->GetElementValue(pPropertyValue, 0, &pIntValue)); checkResult(pIntType->GetInteger(pIntValue, (aafUInt8*)&value, 8)); localPassed = localPassed && value == (aafInt64)(maxValue / 2 + 1); checkResult(pVarArrayType->GetElementValue(pPropertyValue, 1, &pIntValue)); checkResult(pIntType->GetInteger(pIntValue, (aafUInt8*)&value, 8)); localPassed = localPassed && value == (aafInt64)(maxValue / 2); checkResult(pVarArrayType->GetElementValue(pPropertyValue, 2, &pIntValue)); checkResult(pIntType->GetInteger(pIntValue, (aafUInt8*)&value, 8)); localPassed = localPassed && (aafUInt64)value == maxValue; if (localPassed) { printf("passed\n"); } else { printf("FAILED\n"); passed = false; } } catch (...) { printf("FAILED\n"); passed = false; } release(pIntValue); release(pIntType); release(pVarArrayType); release(pType); release(pPropertyValue); release(pPropertyDef); release(pClassDef); release(pObject); } catch (...) { passed = false; } // cleanup release(pMob); release(pMobs); release(pStorage); release(pDictionary); release(pHeader); checkResult(pFile->Close()); release(pFile); report(passed); return passed; } bool testInteger() { printf("Rule 5.6: Integer\n"); bool passed = true; try { printf("a) Restore\n"); passed = testRestore(L"input/testInteger.xml") && passed; printf("b) Roundtrip\n"); saveCopy(L"input/testInteger.xml", L"tmp.xml"); passed = testRestore(L"tmp.xml") && passed; printf("c) Modify\n"); copyAndTouch(L"input/testInteger.xml", L"tmp.xml"); passed = testRestore(L"tmp.xml") && passed; } catch (...) { passed = false; printf("FAILED: Exception thrown\n"); } printf("\n"); return passed; } --- NEW FILE: TestSet.cpp --- //=---------------------------------------------------------------------= // // $Id: TestSet.cpp,v 1.1 2007/03/26 15:57:22 philipn Exp $ $Name: $ // // The contents of this file are subject to the AAF SDK Public // Source License Agreement (the "License"); You may not use this file // except in compliance with the License. The License is available in // AAFSDKPSL.TXT, or you may obtain a copy of the License from the AAF // Association or its successor. // // Software distributed under the License is distributed on an "AS IS" // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See // the License for the specific language governing rights and limitations // under the License. // // The Original Code of this file is Copyright 1998-2007, Licensor of the // AAF Association. // // The Initial Developer of the Original Code of this file and the // Licensor of the AAF Association is British Broadcasting Corporation. // All rights reserved. // //=---------------------------------------------------------------------= #include "XMLStoredFormatTest.h" static bool testRestore(wchar_t* fileName) { bool passed = true; IAAFFile* pFile = 0; IAAFHeader* pHeader = 0; IAAFDictionary* pDictionary = 0; IAAFContentStorage* pStorage = 0; IEnumAAFMobs* pMobs = 0; IAAFMob* pMob = 0; try { pFile = openFileForReading(fileName); } catch (...) { return false; } try { // get the Mob containing the test data checkResult(pFile->GetHeader(&pHeader)); checkResult(pHeader->GetDictionary(&pDictionary)); checkResult(pHeader->GetContentStorage(&pStorage)); aafSearchCrit_t searchCrit; searchCrit.searchTag = kAAFByMobKind; searchCrit.tags.mobKind = kAAFAllMob; checkResult(pStorage->GetMobs(&searchCrit, &pMobs)); checkResult(pMobs->NextOne(&pMob)); IAAFObject* pObject = 0; IAAFClassDef* pClassDef = 0; IAAFPropertyDef* pPropertyDef = 0; IAAFPropertyValue* pPropertyValue = 0; IAAFTypeDef* pType = 0; IAAFTypeDefSet* pSetType = 0; IEnumAAFPropertyValues* pEnumValues = 0; IAAFTypeDefInt* pIntType = 0; IAAFPropertyValue* pIntValue = 0; try { printf(" * Baseline element type: "); const aafUID_t propId = {0x00000000,0x0000,0x0000,{0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; aafUInt8 testValue[2] = {0,255}; checkResult(pMob->QueryInterface(IID_IAAFObject, (void **)&pObject)); checkResult(pDictionary->LookupClassDef(kAAFClassID_Mob, &pClassDef)); checkResult(pClassDef->LookupPropertyDef(propId, &pPropertyDef)); checkResult(pObject->GetPropertyValue(pPropertyDef, &pPropertyValue)); checkResult(pPropertyValue->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefSet, (void **)&pSetType)); release(pType); checkResult(pSetType->GetElementType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefInt, (void **)&pIntType)); aafUInt8 value[2]; checkResult(pSetType->GetElements(pPropertyValue, &pEnumValues)); checkResult(pEnumValues->NextOne(&pIntValue)); checkResult(pIntType->GetInteger(pIntValue, &value[0], 1)); release(pIntValue); checkResult(pEnumValues->NextOne(&pIntValue)); checkResult(pIntType->GetInteger(pIntValue, &value[1], 1)); if (value[0] == testValue[0] && value[1] == testValue[1]) { printf("passed\n"); } else { printf("FAILED\n"); passed = false; } } catch (...) { printf("FAILED\n"); passed = false; } release(pIntValue); release(pIntType); release(pEnumValues); release(pSetType); release(pType); release(pPropertyValue); release(pPropertyDef); release(pClassDef); release(pObject); try { printf(" * Non-Baseline element type: "); const aafUID_t propId = {0x10000000,0x0000,0x0000,{0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; aafUInt8 testValue[2] = {1,2}; checkResult(pMob->QueryInterface(IID_IAAFObject, (void **)&pObject)); checkResult(pDictionary->LookupClassDef(kAAFClassID_Mob, &pClassDef)); checkResult(pClassDef->LookupPropertyDef(propId, &pPropertyDef)); checkResult(pObject->GetPropertyValue(pPropertyDef, &pPropertyValue)); checkResult(pPropertyValue->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefSet, (void **)&pSetType)); release(pType); checkResult(pSetType->GetElementType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefInt, (void **)&pIntType)); aafUInt8 value[2]; checkResult(pSetType->GetElements(pPropertyValue, &pEnumValues)); checkResult(pEnumValues->NextOne(&pIntValue)); checkResult(pIntType->GetInteger(pIntValue, &value[0], 1)); release(pIntValue); checkResult(pEnumValues->NextOne(&pIntValue)); checkResult(pIntType->GetInteger(pIntValue, &value[1], 1)); if (value[0] == testValue[0] && value[1] == testValue[1]) { printf("passed\n"); } else { printf("FAILED\n"); passed = false; } } catch (...) { printf("FAILED\n"); passed = false; } release(pIntValue); release(pIntType); release(pEnumValues); release(pSetType); release(pType); release(pPropertyValue); release(pPropertyDef); release(pClassDef); release(pObject); try { printf(" * Empty: "); const aafUID_t propId = {0x20000000,0x0000,0x0000,{0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; checkResult(pMob->QueryInterface(IID_IAAFObject, (void **)&pObject)); checkResult(pDictionary->LookupClassDef(kAAFClassID_Mob, &pClassDef)); checkResult(pClassDef->LookupPropertyDef(propId, &pPropertyDef)); HRESULT hr = (pObject->GetPropertyValue(pPropertyDef, &pPropertyValue)); if (hr == AAFRESULT_PROP_NOT_PRESENT) { // Note: A DataValue is represented by a OMArrayProperty (OMDataVector) // and when cloning the destination will get no elements appended and // therefore isPresent() will be false printf("passed (property not present)\n"); } else { checkResult(hr); checkResult(pPropertyValue->GetType(&pType)); checkResult(pType->QueryInterface(IID_IAAFTypeDefSet, (void **)&pSetType)); release(pType); aafUInt32 count; checkResult(pSetType->GetCount(pPropertyValue, &count)); if (count == 0) { printf("passed\n"); } else { printf("FAILED\n"); passed = false; } } } catch (...) { printf("FAILED\n"); passed = false; } release(pIntValue); release(pIntType); release(pEnumValues); release(pSetType); release(pType); release(pPropertyValue); release(pPropertyDef); release(pClassDef); release(pObject); } catch (...) { passed = false; } // cleanup release(pMob); release(pMobs); release(pStorage); release(pDictionary); release(pHeader); checkResult(pFile->Close()); release(pFile); report(passed); return passed; } bool testSet() { printf("Rule 5.10: Set\n"); bool passed = true; try { printf("a) Restore\n"); passed = testRestore(L"input/testSet.xml") && passed; printf("b) Roundtrip\n"); saveCopy(L"input/testSet.xml", L"tmp.xml"); passed = testRestore(L"tmp.xml") && passed; printf("c) Modify\n"); copyAndTouch(L"input/testSet.xml", L"tmp.xml"); passed = testRestore(L"tmp.xml") && passed; } catch (...) { passed = false; printf("FAILED: Exception thrown\n"); } printf("\n"); return passed; } --- NEW FILE: XMLStoredFormatTest.cpp --- //=---------------------------------------------------------------------= // // $Id: XMLStoredFormatTest.cpp,v 1.1 2007/03/26 15:57:22 philipn Exp $ $Name: $ // // The contents of this file are subject to the AAF SDK Public // Source License Agreement (the "License"); You may not use this file // except in compliance with the License. The License is available in // AAFSDKPSL.TXT, or you may obtain a copy of the License from the AAF // Association or its successor. // // Software distributed under the License is distributed on an "AS IS" // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See // the License for the specific language governing rights and limitations // under the License. // // The Original Code of this file is Copyright 1998-2007, Licensor of the // AAF Association. // // The Initial Developer of the Original Code of this file and the // Licensor of the AAF Association is British Broadcasting Corporation. // All rights reserved. // //=---------------------------------------------------------------------= #include "XMLStoredFormatTest.h" struct CAAFInitialize { CAAFInitialize(const char *dllname = NULL) { HRESULT hr = AAFLoad(dllname); if (!AAFRESULT_SUCCEEDED(hr)) { fprintf(stderr, "Error : Failed to load the AAF library, "); fprintf(stderr, "check environment variables -\n"); fprintf(stderr, " Windows - $PATH\n"); fprintf(stderr, " Unix/Linux - $LD_LIBRARY_PATH\n"); exit(hr); } } ~CAAFInitialize() { AAFUnload(); } }; void report(bool passed) { if (passed) { printf("--> passed\n"); } else { printf("--> FAILED\n"); } } IAAFFile* openFileForReading(aafCharacter* fileName) { IAAFFile* file = 0; checkResult(AAFFileOpenExistingRead(fileName, 0, &file)); return file; } void replaceCharacter(wchar_t* str, wchar_t c, wchar_t r) { wchar_t* tmp = wcschr(str, c); *tmp = r; } void saveCopy(aafCharacter* inFileName, aafCharacter* outFileName) { char tmp[256]; wcstombs(tmp, outFileName, 256); remove(tmp); IAAFFile* inFile = 0; IAAFFile* outFile = 0; checkResult(AAFFileOpenExistingRead(inFileName, 0, &inFile)); aafProductVersion_t v; v.major = 0; v.minor = 1; v.tertiary = 0; v.patchLevel = 0; v.type = kAAFVersionUnknown; const aafUID_t productUID = {0xd3ec8680, 0x1e79, 0x48f9, {0x99, 0x41, 0x0a, 0x10, 0xa1, 0x68, 0x86, 0xaf}}; aafProductIdentification_t productInfo; productInfo.companyName = L"AAF Association"; productInfo.productName = L"AAF-X Test"; productInfo.productVersion = &v; productInfo.productVersionString = 0; productInfo.productID = productUID; productInfo.platform = 0; checkResult(AAFFileOpenNewModifyEx(outFileName, &kAAFFileKind_AafXmlText, 0, &productInfo, &outFile)); checkResult(inFile->SaveCopyAs(outFile)); checkResult(outFile->Close()); release(outFile); checkResult(inFile->Close()); release(inFile); } void copyAndTouch(aafCharacter* inFileName, aafCharacter* outFileName) { char tmp[256]; wcstombs(tmp, outFileName, 256); remove(tmp); char copyCmd[512]; strcpy(copyCmd, "cp "); wcstombs(tmp, inFileName, 256); strcat(copyCmd, tm... [truncated message content] |