Skip to content

Commit

Permalink
reflexive matching
Browse files Browse the repository at this point in the history
  • Loading branch information
mority committed Sep 2, 2024
1 parent f1f48af commit 9de77c4
Show file tree
Hide file tree
Showing 2 changed files with 163 additions and 0 deletions.
3 changes: 3 additions & 0 deletions src/loader/build_footpaths.cc
Original file line number Diff line number Diff line change
Expand Up @@ -421,6 +421,9 @@ void build_footpaths(timetable& tt,
for (auto const& [a, b] : matches) {
find_duplicates(tt, matches, a, b);
}
for (auto l = location_idx_t{0U}; l != tt.n_locations(); ++l) {
find_duplicates(tt, matches, l, l);
}
}
connect_components(tt, max_footpath_length, adjust_footpaths);
sort_footpaths(tt);
Expand Down
160 changes: 160 additions & 0 deletions test/loader/merge_duplicates_test.cc
Original file line number Diff line number Diff line change
Expand Up @@ -380,4 +380,164 @@ TEST(loader, merge_inter_src) {
EXPECT_EQ(tr_range_a.first, tr_range_b.first);
EXPECT_EQ(tr_range_a.second, tr_range_b.second);
}
}

namespace {

mem_dir bus500_files() {
return mem_dir::read(R"__(
# trips.txt
"route_id","service_id","trip_id","trip_headsign","trip_short_name","direction_id","block_id","shape_id","wheelchair_accessible","bikes_allowed"
"de:vvo:27-500_3",1171,2593445670,"Bautzen Bahnhof","",1,,50186,0,0
"de:von:27-500_3",1171,2593399038,"Bautzen Bahnhof","",1,,89025,0,0
# routes.txt
"route_id","agency_id","route_short_name","route_long_name","route_type","route_color","route_text_color","route_desc"
"de:vvo:27-500_3",8197,"500","",3,"","",""
"de:von:27-500_3",7874,"500","",3,"","",""
# agency.txt
"agency_id","agency_name","agency_url","agency_timezone","agency_lang","agency_phone"
8197,"RBO-Busverkehr","https://www.delfi.de","Europe/Berlin","",""
7874,"RBO-Bus","https://www.delfi.de","Europe/Berlin","",""
# stop_times.txt
"trip_id","arrival_time","departure_time","stop_id","stop_sequence","pickup_type","drop_off_type","stop_headsign"
2593445670,12:32:00,12:32:00,"de:14625:8000:3:3",0,0,0,""
2593445670,12:34:00,12:34:00,"de:14625:8010:1:1",1,0,0,""
2593445670,12:36:00,12:36:00,"de:14625:8041:1:2",2,0,0,""
2593445670,12:38:00,12:38:00,"de:14625:8044:0:8",3,0,0,""
2593445670,12:42:00,12:42:00,"de:14625:8063:0:2",4,0,0,""
2593445670,12:48:00,12:48:00,"de:14625:6954:1:2",5,0,0,""
2593445670,12:53:00,12:53:00,"de:14625:6967:1:2",6,0,0,""
2593445670,12:56:00,12:56:00,"de:14625:6969:1:2",7,0,0,""
2593445670,12:58:00,12:58:00,"de:14625:7721:0:2",8,0,0,""
2593445670,13:00:00,13:00:00,"de:14625:7720:0:2",9,0,0,""
2593445670,13:03:00,13:03:00,"de:14625:7733:0:2",10,0,0,""
2593445670,13:05:00,13:05:00,"de:14625:7692:0:2",11,0,0,""
2593445670,13:07:00,13:07:00,"de:14625:7689:0:2",12,0,0,""
2593445670,13:08:00,13:08:00,"de:14625:7687:0:2",13,0,0,""
2593445670,13:11:00,13:11:00,"de:14625:7685:0:2",14,0,0,""
2593445670,13:13:00,13:13:00,"de:14625:7770:0:2",15,0,0,""
2593445670,13:15:00,13:15:00,"de:14625:7661:0:2",16,0,0,""
2593445670,13:17:00,13:17:00,"de:14625:7652:0:2",17,0,0,""
2593445670,13:19:00,13:19:00,"de:14625:7577:0:2",18,0,0,""
2593445670,13:20:00,13:20:00,"de:14625:7578:0:2",19,0,0,""
2593445670,13:23:00,13:23:00,"de:14625:7507:0:2",20,0,0,""
2593445670,13:26:00,13:26:00,"de:14625:7502:0:2",21,0,0,""
2593445670,13:28:00,13:28:00,"de:14625:7555:0:2",22,0,0,""
2593445670,13:30:00,13:30:00,"de:14625:7501:0:9",23,0,0,""
2593445670,13:31:00,13:31:00,"de:14625:7500:3:1",24,0,0,""
2593399038,12:32:00,12:32:00,"de:14625:8000:3:3",0,0,0,""
2593399038,12:34:00,12:34:00,"de:14625:8010:1:1",1,0,0,""
2593399038,12:36:00,12:36:00,"de:14625:8041:0:2",2,0,0,""
2593399038,12:38:00,12:38:00,"de:14625:8044:0:8",3,0,0,""
2593399038,12:42:00,12:42:00,"de:14625:8063:0:2_G",4,0,0,""
2593399038,12:48:00,12:48:00,"de:14625:6954:1:2_G",5,0,0,""
2593399038,12:53:00,12:53:00,"de:14625:6967:1:2",6,0,0,""
2593399038,12:56:00,12:56:00,"de:14625:6969:1:2",7,0,0,""
2593399038,12:58:00,12:58:00,"de:14625:7721:0:2_G",8,0,0,""
2593399038,13:00:00,13:00:00,"de:14625:7720:0:2_G",9,0,0,""
2593399038,13:03:00,13:03:00,"de:14625:7733:0:2",10,0,0,""
2593399038,13:05:00,13:05:00,"de:14625:7692:0:2_G",11,0,0,""
2593399038,13:07:00,13:07:00,"de:14625:7689:0:2_G",12,0,0,""
2593399038,13:08:00,13:08:00,"de:14625:7687:0:2_G",13,0,0,""
2593399038,13:11:00,13:11:00,"de:14625:7685:0:2_G",14,0,0,""
2593399038,13:13:00,13:13:00,"de:14625:7770:0:2_G",15,0,0,""
2593399038,13:15:00,13:15:00,"de:14625:7661:0:4",16,0,0,""
2593399038,13:17:00,13:17:00,"de:14625:7652:0:2_G",17,0,0,""
2593399038,13:19:00,13:19:00,"de:14625:7577:0:2_G",18,0,0,""
2593399038,13:20:00,13:20:00,"de:14625:7578:0:2_G",19,0,0,""
2593399038,13:23:00,13:23:00,"de:14625:7507:0:2_G",20,0,0,""
2593399038,13:26:00,13:26:00,"de:14625:7502:0:2_G",21,0,0,""
2593399038,13:28:00,13:28:00,"de:14625:7555:0:2_G",22,0,0,""
2593399038,13:30:00,13:30:00,"de:14625:7501:0:9_G",23,0,0,""
2593399038,13:31:00,13:31:00,"de:14625:7500:3:1",24,0,0,""
# stops.txt
"stop_id","stop_code","stop_name","stop_desc","stop_lat","stop_lon","location_type","parent_station","wheelchair_boarding","platform_code","level_id"
"de:14625:7500:3:1","","Bautzen Bahnhof","Bus","51.173723000000","14.429764000000",0,,0,"1","2"
"de:14625:7501:0:9","","Bautzen August-Bebel-Pl (ZOB)",,"51.177017000000","14.433968000000",0,,0,"",""
"de:14625:7507:0:2","","Bautzen Fiedlerstraße",,"51.180633000000","14.415202000000",0,,0,"",""
"de:14625:7577:0:2","","Bautzen Hoyerswerdaer Straße",,"51.196189000000","14.409480000000",0,,0,"",""
"de:14625:7652:0:2","","Kleinwelka Gasthof",,"51.212827000000","14.393418000000",0,,0,"",""
"de:14625:7661:0:2","","Cölln Goldene Höhe",,"51.223225000000","14.388289000000",0,,0,"",""
"de:14625:7770:0:2","","Schwarzadler",,"51.235145000000","14.372020000000",0,,0,"",""
"de:14625:7555:0:2","","Bautzen Taucherstraße/Friedhof",,"51.180492000000","14.437436000000",0,,0,"",""
"de:14625:7502:0:2","","Bautzen Lauengraben",,"51.179698000000","14.425955000000",0,,0,"",""
"de:14625:7685:0:2","","Luga (b Neschwitz) B 96",,"51.247967000000","14.356273000000",0,,0,"",""
"de:14625:7687:0:2","","Holscha B 96",,"51.266941000000","14.344837000000",0,,0,"",""
"de:14625:7689:0:2","","Neudorf (b Neschwitz) B96",,"51.275427000000","14.339807000000",0,,0,"",""
"de:14625:7733:0:2","","Königswartha Kirchplatz","Königswartha Kirchplatz","51.309672000000","14.328452000000",0,,0,"2","2"
"de:14625:8041:1:2","","Hoyersw. Albert-Einstein-Str.",,"51.438741000000","14.256093000000",0,,0,"",""
"de:14625:8010:1:1","","Hoyerswerda Behördenpark","Haltestelle","51.435135000000","14.246202000000",0,,0,"1","2"
"de:14625:6969:1:2","","Wartha (b Königswartha) B 96","Haltestelle","51.350254000000","14.326395000000",0,,0,"2","2"
"de:14625:7578:0:2","","Bautzen Abzw Seidau",,"51.192108000000","14.411555000000",0,,0,"",""
"de:14625:7721:0:2","","Caminau Kaolinwerk",,"51.336983000000","14.342116000000",0,,0,"",""
"de:14625:6954:1:2","","Maukendorf, B96",,"51.396848000000","14.294685000000",0,,0,"",""
"de:14625:7720:0:2","","Caminau Dorf",,"51.327851000000","14.341118000000",0,,0,"",""
"de:14625:6967:1:2","","Groß Särchen Cafe","Haltestelle","51.365288000000","14.310243000000",0,,0,"2","2"
"de:14625:8063:0:2","","Hoyerswerda Straße E",,"51.430806000000","14.285944000000",0,,0,"",""
"de:14625:8044:0:8","","Hoyerswerda Lausitzer Platz","Hoyerswerda Lausitzer Platz","51.438416000000","14.263486000000",0,,0,"8","2"
"de:14625:7692:0:2","","Zescha B 96",,"51.292294000000","14.328138000000",0,,0,"",""
"de:14625:8000:3:3","","Hoyerswerda Bahnhof","Bus","51.433460000000","14.231371000000",0,,0,"3","2"
"de:14625:7501:0:9_G","","Bautzen August-Bebel-Pl (ZOB)",,"51.177006000000","14.433986000000",0,,0,"",""
"de:14625:7507:0:2_G","","Bautzen Fiedlerstraße",,"51.180734000000","14.415077000000",0,,0,"",""
"de:14625:7577:0:2_G","","Bautzen Hoyerswerdaer Straße",,"51.196330000000","14.409372000000",0,,0,"",""
"de:14625:7652:0:2_G","","Kleinwelka Gasthof",,"51.212832000000","14.393337000000",0,,0,"",""
"de:14625:7661:0:4","","Cölln Goldene Höhe",,"51.223630000000","14.387202000000",0,,0,"",""
"de:14625:8041:0:2","","Hoyersw. Albert-Einstein-Str.",,"51.438696000000","14.256057000000",0,,0,"",""
"de:14625:6954:1:2_G","","Maukendorf, B96",,"51.396848000000","14.294685000000",0,,0,"",""
"de:14625:7685:0:2_G","","Luga (b Neschwitz) B 96",,"51.248051000000","14.356183000000",0,,0,"",""
"de:14625:7502:0:2_G","","Bautzen Lauengraben",,"51.179692000000","14.425848000000",0,,0,"",""
"de:14625:7687:0:2_G","","Holscha B 96",,"51.266963000000","14.344748000000",0,,0,"",""
"de:14625:7689:0:2_G","","Neudorf (b Neschwitz) B96",,"51.275545000000","14.339726000000",0,,0,"",""
"de:14625:7578:0:2_G","","Bautzen Abzw Seidau",,"51.192114000000","14.411474000000",0,,0,"",""
"de:14625:7692:0:2_G","","Zescha B 96",,"51.292396000000","14.328066000000",0,,0,"",""
"de:14625:7721:0:2_G","","Caminau Kaolinwerk",,"51.337006000000","14.342080000000",0,,0,"",""
"de:14625:7770:0:2_G","","Schwarzadler",,"51.235207000000","14.371913000000",0,,0,"",""
"de:14625:7720:0:2_G","","Caminau Dorf",,"51.327896000000","14.341029000000",0,,0,"",""
"de:14625:7555:0:2_G","","Bautzen Taucherstraße/Friedhof",,"51.180503000000","14.437472000000",0,,0,"",""
"de:14625:8063:0:2_G","","Hoyerswerda Straße E",,"51.430806000000","14.285944000000",0,,0,"",""
# calendar.txt
"service_id","monday","tuesday","wednesday","thursday","friday","saturday","sunday","start_date","end_date"
1171,1,1,1,1,1,0,0,20240805,20241214
# calendar_dates.txt
"service_id","date","exception_type"
1171,20240805,2
1171,20240812,2
1171,20240806,2
1171,20240813,2
1171,20240807,2
1171,20241120,2
1171,20240808,2
1171,20241003,2
1171,20241031,2
1171,20240809,2
)__");
}

} // namespace

TEST(loader, merge_reflexive_matching) {
timetable tt;
register_special_stations(tt);
tt.date_range_ = {date::sys_days{2024_y / August / 1},
date::sys_days{2024_y / September / 30}};
auto const src_idx = source_idx_t{0};
load_timetable({}, src_idx, bus500_files(), tt);
finalize(tt, false, true, false);

for (auto a = transport_idx_t{0U}; a != tt.next_transport_idx(); ++a) {
for (auto b = transport_idx_t{0U}; b != tt.next_transport_idx(); ++b) {
if (a != b) {
EXPECT_EQ(tt.bitfields_[tt.transport_traffic_days_[a]] &
tt.bitfields_[tt.transport_traffic_days_[b]],
tt.bitfields_[bitfield_idx_t{0U}]);
}
}
}
}

0 comments on commit 9de77c4

Please sign in to comment.