// // Created by stani on 3/10/2025. // #ifndef FACTORY_H #define FACTORY_H #include #include "../../src/model/Building.h" #include "../../src/model/Community.h" #include "../../src/model/Energy_Tariff.h" namespace Building { class Cost; } class Factory { public: std::unique_ptr static create_test_cost() { auto cost = std::make_unique(); cost->set_special_rate_consumption(0.15f); cost->set_special_rate_generation(0.10f); return cost; } std::unique_ptr static create_test_simulation_values() { auto values = std::make_unique(); auto communityCoverage = std::vector>(); auto ownUsage = std::vector>(); auto neededCon = std::vector>(); auto neededGen = std::vector>(); for (int i = 0; i < 5; i++) { // Populate with test values communityCoverage.push_back(std::make_unique(i * 10.0f)); ownUsage.push_back(std::make_unique(i * 5.0f)); neededCon.push_back(std::make_unique(i * 3.0f)); neededGen.push_back(std::make_unique(i * 2.0f)); } values->set_community_coverage(std::move(communityCoverage)); values->set_own_usage(std::move(ownUsage)); values->set_needed_con(std::move(neededCon)); values->set_needed_gen(std::move(neededGen)); return values; } std::unique_ptr static create_test_metadata() { auto metadata = std::make_unique(); metadata->set_name("Test Building"); metadata->set_annual_consumption(12000.0f); metadata->set_annual_generation(5000.0f); metadata->set_consumption_profile_name("Profile_1"); metadata->set_generation_profile_name("Profile_2"); metadata->set_connection_power(100); metadata->set_grid_power(50); auto consumptionProfile = std::vector>(); auto generationProfile = std::vector>(); for (int i = 0; i < 5; i++) { // Populate with test values consumptionProfile.push_back(std::make_unique(i * 100.0f)); generationProfile.push_back(std::make_unique(i * 50.0f)); } metadata->set_consumption_profile(std::move(consumptionProfile)); metadata->set_generation_profile(std::move(generationProfile)); return metadata; } std::unique_ptr static create_test_building() { auto building = std::make_unique(); building->set_cost(create_test_cost()); building->set_values(create_test_simulation_values()); building->set_metadata(create_test_metadata()); return building; } Energy_Tariff static create_test_energy_tariff() { return {}; } std::unique_ptr static create_test_community() { auto community = std::make_unique(); community->set_name("Test Community"); std::vector> buildings; for (int i = 0; i < 3; i++) { buildings.push_back(create_test_building()); } community->set_buildings(std::move(buildings)); community->set_energy_tariff(create_test_energy_tariff()); return community; } }; #endif //FACTORY_H