static void testAddResource() { ResourceManager * resourceManager; void * resource; loadResourceCalls = 0; unloadResourceCalls = 0; resourceManager = ResourceManager_create(); TestCase_assert(resourceManager != NULL, "Expected non-NULL but got NULL"); if (resourceManager == NULL) { return; } // Suppress clang warning resourceNameToLoad = "bar"; resourceToLoad = "foo"; resourceManager->addResource(resourceManager, "type", resourceNameToLoad, resourceToLoad); resource = resourceManager->referenceResource(resourceManager, "type", "resource"); TestCase_assert(resource == NULL, "Expected NULL but got %p", resource); loadContext = NULL; resourceManager->addTypeHandler(resourceManager, "type", loadResource, unloadResource, loadContext); resourceManager->addResource(resourceManager, "type", resourceNameToLoad, resourceToLoad); resource = resourceManager->referenceResource(resourceManager, "type", resourceNameToLoad); TestCase_assert(resource == resourceToLoad, "Expected %p but got %p", resourceToLoad, resource); TestCase_assert(loadResourceCalls == 0, "Expected 0 but got %u", loadResourceCalls); resourceManager->releaseResource(resourceManager, "type", resourceNameToLoad); TestCase_assert(unloadResourceCalls == 0, "Expected 0 but got %u", unloadResourceCalls); resourceManager->releaseResource(resourceManager, "type", resourceNameToLoad); TestCase_assert(unloadResourceCalls == 1, "Expected 1 but got %u", unloadResourceCalls); resourceManager->dispose(resourceManager); }
AudioStreamResource* AudioStreamResource::createAudioStreamResource ( const String& fileName, unsigned int buff, unsigned int samples ) { // Criamos a mensagem de carregamento String str ( "File " + fileName ); // Instancia de ResourceManager ResourceManager* rscMap = ResourceManager::Instance(); // Verificamos se o Resource ja foi carregado AudioStreamResource* rsc = static_cast<AudioStreamResource*> ( rscMap->getResource ( fileName ) ); if ( rsc == nullptr ) { // Criamos o AudioStream ALLEGRO_AUDIO_STREAM* stream = al_load_audio_stream ( fileName.c_str(), buff, samples ); if ( stream == nullptr ) { throw Ludic::Exception ( "ERROR: Error to load AudioStreamResource " + fileName ); return nullptr; } // Criamos o AudioStreamResource rsc = new AudioStreamResource ( fileName, stream, buff, samples ); // Adicionamos ao mapa rscMap->addResource ( fileName, rsc ); str += " loaded successfully!"; } else { str += " already exists!"; } // Imprimims a mensagem de carregamento std::cout << str << std::endl; return rsc; }
static void testOptionalityOfCallbacks() { ResourceManager * resourceManager; void * resource; resourceManager = ResourceManager_create(); TestCase_assert(resourceManager != NULL, "Expected non-NULL but got NULL"); if (resourceManager == NULL) { return; } // Suppress clang warning loadContext = NULL; loadResourceCalls = 0; unloadResourceCalls = 0; resourceManager->addTypeHandler(resourceManager, "load only", loadResource, NULL, NULL); resourceManager->addTypeHandler(resourceManager, "unload only", NULL, unloadResource, NULL); resource = resourceManager->referenceResource(resourceManager, "unload only", "foo"); TestCase_assert(resource == NULL, "Expected NULL but got %p", resource); TestCase_assert(loadResourceCalls == 0, "Expected 0 but got %u", loadResourceCalls); resourceManager->addResource(resourceManager, "load only", "foo", "bar"); resourceManager->releaseResource(resourceManager, "load only", "foo"); TestCase_assert(unloadResourceCalls == 0, "Expected 0 but got %u", unloadResourceCalls); resourceManager->dispose(resourceManager); }
void XMLProvider::addResource(std::string const &name, Resource &resource, ResourceManager &manager) { this->addResource(name, resource); manager.addResource(resource); }