Пригарин Олег Юрьевич c8b6287b76 Economy ECS API base
2025-07-03 21:51:21 +03:00

89 lines
3.2 KiB
C++

#include <gtest/gtest.h>
#include "components/container.h"
#include "components/miner.h"
#include "defines.h"
#include "../test_conf.h"
#include "systems.h"
TEST_F(SystemsTest, MiningNormal)
{
ee_ecs::container &state_container = registry.get<ee_ecs::container>(state);
ee_ecs::container &miner_container = registry.get<ee_ecs::container>(miner);
ee_ecs::miner &miner_miner = registry.get<ee_ecs::miner>(miner);
state_container.capacity = 15.0;
state_container.add(ee_ecs::RESOURCE_TYPE::COAL, 10.0);
miner_container.capacity = 5.0;
miner_miner.resource = ee_ecs::RESOURCE_TYPE::COAL;
miner_miner.value = 0.1;
ee_ecs::mining(registry);
ASSERT_DOUBLE_EQ(state_container.total, 9.9);
ASSERT_DOUBLE_EQ(state_container.content[ee_ecs::RESOURCE_TYPE::COAL], 9.9);
ASSERT_DOUBLE_EQ(miner_container.total, 0.1);
ASSERT_DOUBLE_EQ(miner_container.content[ee_ecs::RESOURCE_TYPE::COAL], 0.1);
}
TEST_F(SystemsTest, MiningEmptyState)
{
ee_ecs::container &state_container = registry.get<ee_ecs::container>(state);
ee_ecs::container &miner_container = registry.get<ee_ecs::container>(miner);
ee_ecs::miner &miner_miner = registry.get<ee_ecs::miner>(miner);
state_container.capacity = 15.0;
miner_container.capacity = 5.0;
miner_miner.resource = ee_ecs::RESOURCE_TYPE::COAL;
miner_miner.value = 0.1;
ee_ecs::mining(registry);
ASSERT_DOUBLE_EQ(state_container.total, 0.0);
ASSERT_DOUBLE_EQ(state_container.content[ee_ecs::RESOURCE_TYPE::COAL], 0.0);
ASSERT_DOUBLE_EQ(miner_container.total, 0.0);
ASSERT_DOUBLE_EQ(miner_container.content[ee_ecs::RESOURCE_TYPE::COAL], 0.0);
}
TEST_F(SystemsTest, MiningPoorState)
{
ee_ecs::container &state_container = registry.get<ee_ecs::container>(state);
ee_ecs::container &miner_container = registry.get<ee_ecs::container>(miner);
ee_ecs::miner &miner_miner = registry.get<ee_ecs::miner>(miner);
state_container.capacity = 15.0;
state_container.add(ee_ecs::RESOURCE_TYPE::COAL, 0.05);
miner_container.capacity = 5.0;
miner_miner.resource = ee_ecs::RESOURCE_TYPE::COAL;
miner_miner.value = 0.1;
ee_ecs::mining(registry);
ASSERT_DOUBLE_EQ(state_container.total, 0.0);
ASSERT_DOUBLE_EQ(state_container.content[ee_ecs::RESOURCE_TYPE::COAL], 0.0);
ASSERT_DOUBLE_EQ(miner_container.total, 0.05);
ASSERT_DOUBLE_EQ(miner_container.content[ee_ecs::RESOURCE_TYPE::COAL], 0.05);
}
TEST_F(SystemsTest, MiningReachCap)
{
ee_ecs::container &state_container = registry.get<ee_ecs::container>(state);
ee_ecs::container &miner_container = registry.get<ee_ecs::container>(miner);
ee_ecs::miner &miner_miner = registry.get<ee_ecs::miner>(miner);
state_container.capacity = 15.0;
state_container.add(ee_ecs::RESOURCE_TYPE::COAL, 10.0);
miner_container.capacity = 0.05;
miner_miner.resource = ee_ecs::RESOURCE_TYPE::COAL;
miner_miner.value = 0.1;
ee_ecs::mining(registry);
ASSERT_DOUBLE_EQ(state_container.total, 9.95);
ASSERT_DOUBLE_EQ(state_container.content[ee_ecs::RESOURCE_TYPE::COAL], 9.95);
ASSERT_DOUBLE_EQ(miner_container.total, 0.05);
ASSERT_DOUBLE_EQ(miner_container.content[ee_ecs::RESOURCE_TYPE::COAL], 0.05);
}