add tests

Signed-off-by: map-per <map-per@gmx.de>
This commit is contained in:
map-per
2025-12-12 13:33:04 +01:00
parent cbb5db9f99
commit ce89c78bc5

View File

@@ -7,13 +7,11 @@
using namespace editor;
UNIT_TEST(loadFromStream_simpleType)
UNIT_TEST(simpleType)
{
std::string data =
"building;[building];;addr:housenumber;name;1;\n"
" # comment that should be ignored\n"
"\n"
"amenity|restaurant;61;\n";
"amenity|restaurant;61;\n"
"amenity|bicycle_parking;1071;\n";
classificator::Load();
@@ -26,15 +24,43 @@ UNIT_TEST(loadFromStream_simpleType)
TEST_EQUAL(result.size(), 1, ());
TEST_EQUAL(result[0].key, "amenity", ());
TEST_EQUAL(result[0].value, "restaurant", ());
uint32_t type2 = classif().GetTypeByReadableObjectName("building");
std::vector<OSMTag> result2 = translator.OsmTagsFromType(type2);
TEST_EQUAL(result2.size(), 1, ());
TEST_EQUAL(result2[0].key, "building", ());
TEST_EQUAL(result2[0].value, "yes", ());
}
UNIT_TEST(loadFromStream_complexType)
UNIT_TEST(simpleTypeWithTags)
{
std::string data =
"building;[building];;addr:housenumber;name;1;\n"
"amenity|school;[amenity=school],[education=school];;name;int_name;36;\n"
"amenity|doctors;[amenity=doctors][healthcare=doctor],[amenity=doctors],[healthcare=doctor];;name;int_name;207;\n";
classificator::Load();
TypeToOSMTranslator translator(false);
std::stringstream s(data);
translator.LoadFromStream(s);
uint32_t buildingType = classif().GetTypeByReadableObjectName("building");
std::vector<OSMTag> buildingResult = translator.OsmTagsFromType(buildingType);
TEST_EQUAL(buildingResult.size(), 1, ());
TEST_EQUAL(buildingResult[0].key, "building", ());
TEST_EQUAL(buildingResult[0].value, "yes", ());
uint32_t schoolType = classif().GetTypeByReadableObjectName("amenity-school");
std::vector<OSMTag> schoolResult = translator.OsmTagsFromType(schoolType);
TEST_EQUAL(schoolResult.size(), 1, ());
TEST_EQUAL(schoolResult[0].key, "amenity", ());
TEST_EQUAL(schoolResult[0].value, "school", ());
uint32_t doctorType = classif().GetTypeByReadableObjectName("amenity-doctors");
std::vector<OSMTag> doctorResult = translator.OsmTagsFromType(doctorType);
TEST_EQUAL(doctorResult.size(), 2, ());
TEST_EQUAL(doctorResult[0].key, "amenity", ());
TEST_EQUAL(doctorResult[0].value, "doctors", ());
TEST_EQUAL(doctorResult[1].key, "healthcare", ());
TEST_EQUAL(doctorResult[1].value, "doctor", ());
}
UNIT_TEST(complexType)
{
std::string data =
"building;[building];;addr:housenumber;name;1;\n"
@@ -79,6 +105,94 @@ UNIT_TEST(loadFromStream_complexType)
TEST_EQUAL(mormonResult[2].value, "mormon", ());
}
UNIT_TEST(mandatorySelector)
{
std::string data =
"amenity|parking|fee;[amenity=parking][fee];;name;int_name;125;\n"
"highway|track|bridge;[highway=track][bridge?];;name;int_name;193;\n"
"shop;[shop?];;name;int_name;943;\n"
"disusedbusiness;[disused:shop?],[disused:amenity=restaurant],[disused:amenity=fast_food],[disused:amenity=cafe],[disused:amenity=pub],[disused:amenity=bar];;;;1237;\n";
classificator::Load();
TypeToOSMTranslator translator(false);
std::stringstream s(data);
translator.LoadFromStream(s);
uint32_t parkingType = classif().GetTypeByReadableObjectName("amenity-parking-fee");
std::vector<OSMTag> parkingResult = translator.OsmTagsFromType(parkingType);
TEST_EQUAL(parkingResult.size(), 2, ());
TEST_EQUAL(parkingResult[0].key, "amenity", ());
TEST_EQUAL(parkingResult[0].value, "parking", ());
TEST_EQUAL(parkingResult[1].key, "fee", ());
TEST_EQUAL(parkingResult[1].value, "yes", ());
uint32_t trackType = classif().GetTypeByReadableObjectName("highway-track-bridge");
std::vector<OSMTag> trackResult = translator.OsmTagsFromType(trackType);
TEST_EQUAL(trackResult.size(), 2, ());
TEST_EQUAL(trackResult[0].key, "highway", ());
TEST_EQUAL(trackResult[0].value, "track", ());
TEST_EQUAL(trackResult[1].key, "bridge", ());
TEST_EQUAL(trackResult[1].value, "yes", ());
uint32_t shopType = classif().GetTypeByReadableObjectName("shop");
std::vector<OSMTag> shopResult = translator.OsmTagsFromType(shopType);
TEST_EQUAL(shopResult.size(), 1, ());
TEST_EQUAL(shopResult[0].key, "shop", ());
TEST_EQUAL(shopResult[0].value, "yes", ());
uint32_t disusedType = classif().GetTypeByReadableObjectName("disusedbusiness");
std::vector<OSMTag> disusedResult = translator.OsmTagsFromType(disusedType);
TEST_EQUAL(disusedResult.size(), 1, ());
TEST_EQUAL(disusedResult[0].key, "disused:shop", ());
TEST_EQUAL(disusedResult[0].value, "yes", ());
}
UNIT_TEST(forbiddenSelector)
{
std::string data =
"amenity|lounger;[amenity=lounger][!seasonal];;name;int_name;153;\n"
"amenity|charging_station|motorcar|small;[amenity=charging_station][motorcar?][!capacity],[amenity=charging_station][motorcar?][capacity=1],[amenity=charging_station][motorcar?][capacity=2];;name;int_name;201;\n";
classificator::Load();
TypeToOSMTranslator translator(false);
std::stringstream s(data);
translator.LoadFromStream(s);
uint32_t loungerType = classif().GetTypeByReadableObjectName("amenity-lounger");
std::vector<OSMTag> loungerResult = translator.OsmTagsFromType(loungerType);
TEST_EQUAL(loungerResult.size(), 1, ());
TEST_EQUAL(loungerResult[0].key, "amenity", ());
TEST_EQUAL(loungerResult[0].value, "lounger", ());
uint32_t chargingType = classif().GetTypeByReadableObjectName("amenity-charging_station-motorcar-small");
std::vector<OSMTag> chargingResult = translator.OsmTagsFromType(chargingType);
TEST_EQUAL(chargingResult.size(), 2, ());
TEST_EQUAL(chargingResult[0].key, "amenity", ());
TEST_EQUAL(chargingResult[0].value, "charging_station", ());
TEST_EQUAL(chargingResult[1].key, "motorcar", ());
TEST_EQUAL(chargingResult[1].value, "yes", ());
}
UNIT_TEST(ignoreComments)
{
std::string data =
"building;[building];;addr:housenumber;name;1;\n"
" # comment that should be ignored\n"
"\n"
"deprecated:waterway|riverbank:05.2024;52;x\n"
"amenity|restaurant;61;\n"
"moved:amenity|telephone:05.2024;122;amenity|telephone\n"
"natural|lake;564;natural|water|lake\n"; // moved type, should be ignored
classificator::Load();
TypeToOSMTranslator translator(false);
std::stringstream s(data);
translator.LoadFromStream(s);
}
UNIT_TEST(loadConfigFile)
{
TypeToOSMTranslator translator(false);
@@ -90,7 +204,7 @@ UNIT_TEST(loadConfigFile)
ASSERT(size < 1700, ());
}
UNIT_TEST(OsmTagsFromType)
UNIT_TEST(testWithRealFile)
{
classificator::Load();