Finalize library bootstrap status and stabilize async asset regressions

This commit is contained in:
2026-04-04 19:44:59 +08:00
parent 013e5a73b9
commit bcef1f145b
25 changed files with 3415 additions and 81 deletions

View File

@@ -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;