Finalize library bootstrap status and stabilize async asset regressions
This commit is contained in:
@@ -9,6 +9,26 @@ using namespace XCEngine::Math;
|
||||
|
||||
namespace {
|
||||
|
||||
struct TrackingMaterial final : Material {
|
||||
static int s_destructorCount;
|
||||
|
||||
~TrackingMaterial() override {
|
||||
++s_destructorCount;
|
||||
}
|
||||
};
|
||||
|
||||
int TrackingMaterial::s_destructorCount = 0;
|
||||
|
||||
struct TrackingTexture final : Texture {
|
||||
static int s_destructorCount;
|
||||
|
||||
~TrackingTexture() override {
|
||||
++s_destructorCount;
|
||||
}
|
||||
};
|
||||
|
||||
int TrackingTexture::s_destructorCount = 0;
|
||||
|
||||
TEST(Mesh, DefaultConstructor) {
|
||||
Mesh mesh;
|
||||
EXPECT_EQ(mesh.GetVertexCount(), 0u);
|
||||
@@ -88,6 +108,27 @@ TEST(Mesh, AddMaterial) {
|
||||
EXPECT_GT(mesh.GetMemorySize(), 0u);
|
||||
}
|
||||
|
||||
TEST(Mesh, ReleaseDeletesOwnedSubresourcesOnce) {
|
||||
TrackingMaterial::s_destructorCount = 0;
|
||||
TrackingTexture::s_destructorCount = 0;
|
||||
|
||||
auto* mesh = new Mesh();
|
||||
mesh->AddMaterial(new TrackingMaterial());
|
||||
mesh->AddTexture(new TrackingTexture());
|
||||
|
||||
mesh->Release();
|
||||
|
||||
EXPECT_EQ(TrackingMaterial::s_destructorCount, 1);
|
||||
EXPECT_EQ(TrackingTexture::s_destructorCount, 1);
|
||||
EXPECT_EQ(mesh->GetMaterials().Size(), 0u);
|
||||
EXPECT_EQ(mesh->GetTextures().Size(), 0u);
|
||||
|
||||
delete mesh;
|
||||
|
||||
EXPECT_EQ(TrackingMaterial::s_destructorCount, 1);
|
||||
EXPECT_EQ(TrackingTexture::s_destructorCount, 1);
|
||||
}
|
||||
|
||||
TEST(Mesh, SetBounds) {
|
||||
Mesh mesh;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user