mirror of
https://github.com/minetest/irrlicht.git
synced 2024-11-16 15:30:25 +01:00
98 lines
2.6 KiB
C++
98 lines
2.6 KiB
C++
|
// Copyright (C) 2008-2012 Colin MacDonald
|
||
|
// No rights reserved: this software is in the public domain.
|
||
|
|
||
|
#include "testUtils.h"
|
||
|
|
||
|
using namespace irr;
|
||
|
using namespace core;
|
||
|
using namespace scene;
|
||
|
using namespace video;
|
||
|
using namespace io;
|
||
|
using namespace gui;
|
||
|
|
||
|
/** This tests verifies that textures opened from different places in the
|
||
|
filesystem don't create duplicated textures. */
|
||
|
bool loadFromFileFolder(void)
|
||
|
{
|
||
|
IrrlichtDevice *device =
|
||
|
createDevice( video::EDT_NULL, dimension2du(160, 120));
|
||
|
|
||
|
if (!device)
|
||
|
{
|
||
|
logTestString("Unable to create EDT_NULL device\n");
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
IVideoDriver * driver = device->getVideoDriver();
|
||
|
|
||
|
u32 numTexs = driver->getTextureCount();
|
||
|
|
||
|
ITexture * tex1 = driver->getTexture("../media/tools.png");
|
||
|
assert_log(tex1);
|
||
|
if(!tex1)
|
||
|
logTestString("Unable to open ../media/tools.png\n");
|
||
|
if (driver->getTextureCount()!=numTexs+1)
|
||
|
{
|
||
|
logTestString("No additional texture in the texture cache %s:%d\n", __FILE__, __LINE__);
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
IReadFile * readFile = device->getFileSystem()->createAndOpenFile("../media/tools.png");
|
||
|
assert_log(readFile);
|
||
|
if(!readFile)
|
||
|
logTestString("Unable to open ../media/tools.png\n");
|
||
|
if (driver->getTextureCount()!=numTexs+1)
|
||
|
{
|
||
|
logTestString("Additional texture in the texture cache %s:%d\n", __FILE__, __LINE__);
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
ITexture * tex2 = driver->getTexture(readFile);
|
||
|
assert_log(tex2);
|
||
|
if(!readFile)
|
||
|
logTestString("Unable to create texture from ../media/tools.png\n");
|
||
|
if (driver->getTextureCount()!=numTexs+1)
|
||
|
{
|
||
|
logTestString("Additional texture in the texture cache %s:%d\n", __FILE__, __LINE__);
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
readFile->drop();
|
||
|
|
||
|
// adding a folder archive
|
||
|
device->getFileSystem()->addFileArchive( "../media/" );
|
||
|
|
||
|
ITexture * tex3 = driver->getTexture("tools.png");
|
||
|
assert_log(tex3);
|
||
|
if(!tex3)
|
||
|
logTestString("Unable to open tools.png\n");
|
||
|
if (driver->getTextureCount()!=numTexs+1)
|
||
|
{
|
||
|
logTestString("Additional texture in the texture cache %s:%d\n", __FILE__, __LINE__);
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
ITexture * tex4 = driver->getTexture("tools.png");
|
||
|
assert_log(tex4);
|
||
|
if(!tex4)
|
||
|
logTestString("Unable to open tools.png\n");
|
||
|
if (driver->getTextureCount()!=numTexs+1)
|
||
|
{
|
||
|
logTestString("Additional texture in the texture cache %s:%d\n", __FILE__, __LINE__);
|
||
|
return false;
|
||
|
}
|
||
|
|
||
|
device->closeDevice();
|
||
|
device->run();
|
||
|
device->drop();
|
||
|
return ((tex1 == tex2) && (tex1 == tex3) && (tex1 == tex4));
|
||
|
}
|
||
|
|
||
|
bool loadTextures()
|
||
|
{
|
||
|
bool result = true;
|
||
|
result &= loadFromFileFolder();
|
||
|
return result;
|
||
|
}
|
||
|
|