From 3aa0cd85a2fb67b5b14703a44d11fe9c1a301b95 Mon Sep 17 00:00:00 2001 From: Michael Fitzmaurice Date: Fri, 19 Jan 2024 22:10:24 +0000 Subject: [PATCH] Refactor package names and add regression test data --- .../com/arup/cml/{ => abm}/kpi/DataModel.java | 0 .../cml/{ => abm}/kpi/KPIDomainModel.java | 0 .../cml/{ => abm}/kpi/matsim/MATSimModel.java | 50 +- .../kpi/matsim/handlers/LinkLogHandler.java | 0 .../kpi/matsim/run/KpiGenerator.java | 0 .../matsim/RelaxedReflectiveConfigGroup.java | 20 - .../arup/cml/{ => abm}/kpi/TableHelpers.java | 0 .../cml/{ => abm}/kpi/matsim/TestNothing.java | 0 .../matsim/handlers/TestLinkLogHandler.java | 0 .../TestLinkLogHandlerWithMultipleAgents.java | 0 .../TestLinkLogHandlerWithSimpleData.java | 0 .../output_allVehicles.xml.gz | Bin 0 -> 566 bytes .../smol-matsim-outputs/output_config.xml | 1394 +++++++++++++++++ .../output_config_reduced.xml | 589 +++++++ .../smol-matsim-outputs/output_counts.xml.gz | Bin 0 -> 194 bytes .../smol-matsim-outputs/output_events.xml.gz | Bin 0 -> 4280 bytes .../output_facilities.xml.gz | Bin 0 -> 140 bytes .../output_households.xml.gz | Bin 0 -> 176 bytes .../smol-matsim-outputs/output_legs.csv.gz | Bin 0 -> 729 bytes .../smol-matsim-outputs/output_network.xml.gz | Bin 0 -> 722 bytes .../smol-matsim-outputs/output_persons.csv.gz | Bin 0 -> 336 bytes .../smol-matsim-outputs/output_plans.xml.gz | Bin 0 -> 2334 bytes .../output_transitSchedule.xml.gz | Bin 0 -> 627 bytes .../output_transitVehicles.xml.gz | Bin 0 -> 488 bytes .../smol-matsim-outputs/output_trips.csv.gz | Bin 0 -> 867 bytes .../output_vehicles.xml.gz | Bin 0 -> 594 bytes 26 files changed, 2013 insertions(+), 40 deletions(-) rename src/main/java/com/arup/cml/{ => abm}/kpi/DataModel.java (100%) rename src/main/java/com/arup/cml/{ => abm}/kpi/KPIDomainModel.java (100%) rename src/main/java/com/arup/cml/{ => abm}/kpi/matsim/MATSimModel.java (80%) rename src/main/java/com/arup/cml/{ => abm}/kpi/matsim/handlers/LinkLogHandler.java (100%) rename src/main/java/com/arup/cml/{ => abm}/kpi/matsim/run/KpiGenerator.java (100%) delete mode 100644 src/main/java/com/arup/cml/kpi/matsim/RelaxedReflectiveConfigGroup.java rename src/test/java/com/arup/cml/{ => abm}/kpi/TableHelpers.java (100%) rename src/test/java/com/arup/cml/{ => abm}/kpi/matsim/TestNothing.java (100%) rename src/test/java/com/arup/cml/{ => abm}/kpi/matsim/handlers/TestLinkLogHandler.java (100%) rename src/test/java/com/arup/cml/{ => abm}/kpi/matsim/handlers/TestLinkLogHandlerWithMultipleAgents.java (100%) rename src/test/java/com/arup/cml/{ => abm}/kpi/matsim/handlers/TestLinkLogHandlerWithSimpleData.java (100%) create mode 100644 src/test/regression/data/smol-matsim-outputs/output_allVehicles.xml.gz create mode 100644 src/test/regression/data/smol-matsim-outputs/output_config.xml create mode 100644 src/test/regression/data/smol-matsim-outputs/output_config_reduced.xml create mode 100644 src/test/regression/data/smol-matsim-outputs/output_counts.xml.gz create mode 100644 src/test/regression/data/smol-matsim-outputs/output_events.xml.gz create mode 100644 src/test/regression/data/smol-matsim-outputs/output_facilities.xml.gz create mode 100644 src/test/regression/data/smol-matsim-outputs/output_households.xml.gz create mode 100644 src/test/regression/data/smol-matsim-outputs/output_legs.csv.gz create mode 100644 src/test/regression/data/smol-matsim-outputs/output_network.xml.gz create mode 100644 src/test/regression/data/smol-matsim-outputs/output_persons.csv.gz create mode 100644 src/test/regression/data/smol-matsim-outputs/output_plans.xml.gz create mode 100644 src/test/regression/data/smol-matsim-outputs/output_transitSchedule.xml.gz create mode 100644 src/test/regression/data/smol-matsim-outputs/output_transitVehicles.xml.gz create mode 100644 src/test/regression/data/smol-matsim-outputs/output_trips.csv.gz create mode 100644 src/test/regression/data/smol-matsim-outputs/output_vehicles.xml.gz diff --git a/src/main/java/com/arup/cml/kpi/DataModel.java b/src/main/java/com/arup/cml/abm/kpi/DataModel.java similarity index 100% rename from src/main/java/com/arup/cml/kpi/DataModel.java rename to src/main/java/com/arup/cml/abm/kpi/DataModel.java diff --git a/src/main/java/com/arup/cml/kpi/KPIDomainModel.java b/src/main/java/com/arup/cml/abm/kpi/KPIDomainModel.java similarity index 100% rename from src/main/java/com/arup/cml/kpi/KPIDomainModel.java rename to src/main/java/com/arup/cml/abm/kpi/KPIDomainModel.java diff --git a/src/main/java/com/arup/cml/kpi/matsim/MATSimModel.java b/src/main/java/com/arup/cml/abm/kpi/matsim/MATSimModel.java similarity index 80% rename from src/main/java/com/arup/cml/kpi/matsim/MATSimModel.java rename to src/main/java/com/arup/cml/abm/kpi/matsim/MATSimModel.java index d4dc6a1..6295f52 100644 --- a/src/main/java/com/arup/cml/kpi/matsim/MATSimModel.java +++ b/src/main/java/com/arup/cml/abm/kpi/matsim/MATSimModel.java @@ -8,7 +8,9 @@ import org.matsim.api.core.v01.network.Network; import org.matsim.core.api.experimental.events.EventsManager; import org.matsim.core.config.Config; +import org.matsim.core.config.ConfigGroup; import org.matsim.core.config.ConfigUtils; +import org.matsim.core.config.ReflectiveConfigGroup; import org.matsim.core.config.groups.*; import org.matsim.core.events.EventsUtils; import org.matsim.core.events.MatsimEventsReader; @@ -18,8 +20,7 @@ import tech.tablesaw.api.StringColumn; import tech.tablesaw.api.Table; -import java.util.ArrayList; -import java.util.Arrays; +import java.util.*; public class MATSimModel implements DataModel { @@ -28,16 +29,15 @@ public class MATSimModel implements DataModel { private final String matsimOutputDir; private final Scenario scenario; private final EventsManager eventsManager; - - private final String[] necessaryConfigGroups = new String[]{ - GlobalConfigGroup.GROUP_NAME, - PlansConfigGroup.GROUP_NAME, - FacilitiesConfigGroup.GROUP_NAME, - HouseholdsConfigGroup.GROUP_NAME, - TransitConfigGroup.GROUP_NAME, - VehiclesConfigGroup.GROUP_NAME, - NetworkConfigGroup.GROUP_NAME - }; + private final Set necessaryConfigGroups = new HashSet<>(Arrays.asList( + GlobalConfigGroup.GROUP_NAME, + PlansConfigGroup.GROUP_NAME, + FacilitiesConfigGroup.GROUP_NAME, + HouseholdsConfigGroup.GROUP_NAME, + TransitConfigGroup.GROUP_NAME, + VehiclesConfigGroup.GROUP_NAME, + NetworkConfigGroup.GROUP_NAME + )); private final Table linkLog; private final Table vehicleOccupancy; @@ -65,18 +65,28 @@ public MATSimModel(String matsimInputConfig, String matsimOutputDir) { private Config getConfig(String matsimInputConfig) { Config config = ConfigUtils.createConfig(); - ArrayList configGroups = new ArrayList<>(config.getModules().keySet()); - for (String module : configGroups) { - if (Arrays.asList(necessaryConfigGroups).contains(module)) { +// TreeMap configuredModules = config.getModules(); +// for (ConfigGroup module : configuredModules.values().stream().toList()){ +// for (Map.Entry entry : module.getParams().entrySet()) { +// System.out.println((entry.getKey() + "," + entry.getValue())); +// } +// } + + TreeMap configuredModules = config.getModules(); + for (ConfigGroup module : configuredModules.values().stream().toList()) { + if (necessaryConfigGroups.contains(module.getName())) { System.out.println("Config group " + module + " is read as is"); } else { - config.removeModule(module); - config.addModule(new RelaxedReflectiveConfigGroup(module)); + ReflectiveConfigGroup relaxedModule = + new ReflectiveConfigGroup(module.getName(),true) {}; +// for (Map.Entry entry : module.getParams().entrySet()) { +// relaxedModule.addParam(entry.getKey(), entry.getValue()); +// } + config.removeModule(module.getName()); + config.addModule(relaxedModule); } } - ConfigUtils.loadConfig( - config, String.format(matsimInputConfig) - ); + ConfigUtils.loadConfig(config, String.format(matsimInputConfig)); setOutputFilePaths(config); return config; } diff --git a/src/main/java/com/arup/cml/kpi/matsim/handlers/LinkLogHandler.java b/src/main/java/com/arup/cml/abm/kpi/matsim/handlers/LinkLogHandler.java similarity index 100% rename from src/main/java/com/arup/cml/kpi/matsim/handlers/LinkLogHandler.java rename to src/main/java/com/arup/cml/abm/kpi/matsim/handlers/LinkLogHandler.java diff --git a/src/main/java/com/arup/cml/kpi/matsim/run/KpiGenerator.java b/src/main/java/com/arup/cml/abm/kpi/matsim/run/KpiGenerator.java similarity index 100% rename from src/main/java/com/arup/cml/kpi/matsim/run/KpiGenerator.java rename to src/main/java/com/arup/cml/abm/kpi/matsim/run/KpiGenerator.java diff --git a/src/main/java/com/arup/cml/kpi/matsim/RelaxedReflectiveConfigGroup.java b/src/main/java/com/arup/cml/kpi/matsim/RelaxedReflectiveConfigGroup.java deleted file mode 100644 index 105f7d9..0000000 --- a/src/main/java/com/arup/cml/kpi/matsim/RelaxedReflectiveConfigGroup.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.arup.cml.kpi.matsim; - -import org.matsim.core.config.ReflectiveConfigGroup; - -public class RelaxedReflectiveConfigGroup extends ReflectiveConfigGroup { - - public RelaxedReflectiveConfigGroup(String name) { - super(name, true); - } - -// @Override -// public void handleAddUnknownParam(final String paramName, final String value) { -// System.out.println("hey"); -// } - -// @Override -// public String handleGetUnknownValue(final String paramName) { -// return "hello"; -// } -} diff --git a/src/test/java/com/arup/cml/kpi/TableHelpers.java b/src/test/java/com/arup/cml/abm/kpi/TableHelpers.java similarity index 100% rename from src/test/java/com/arup/cml/kpi/TableHelpers.java rename to src/test/java/com/arup/cml/abm/kpi/TableHelpers.java diff --git a/src/test/java/com/arup/cml/kpi/matsim/TestNothing.java b/src/test/java/com/arup/cml/abm/kpi/matsim/TestNothing.java similarity index 100% rename from src/test/java/com/arup/cml/kpi/matsim/TestNothing.java rename to src/test/java/com/arup/cml/abm/kpi/matsim/TestNothing.java diff --git a/src/test/java/com/arup/cml/kpi/matsim/handlers/TestLinkLogHandler.java b/src/test/java/com/arup/cml/abm/kpi/matsim/handlers/TestLinkLogHandler.java similarity index 100% rename from src/test/java/com/arup/cml/kpi/matsim/handlers/TestLinkLogHandler.java rename to src/test/java/com/arup/cml/abm/kpi/matsim/handlers/TestLinkLogHandler.java diff --git a/src/test/java/com/arup/cml/kpi/matsim/handlers/TestLinkLogHandlerWithMultipleAgents.java b/src/test/java/com/arup/cml/abm/kpi/matsim/handlers/TestLinkLogHandlerWithMultipleAgents.java similarity index 100% rename from src/test/java/com/arup/cml/kpi/matsim/handlers/TestLinkLogHandlerWithMultipleAgents.java rename to src/test/java/com/arup/cml/abm/kpi/matsim/handlers/TestLinkLogHandlerWithMultipleAgents.java diff --git a/src/test/java/com/arup/cml/kpi/matsim/handlers/TestLinkLogHandlerWithSimpleData.java b/src/test/java/com/arup/cml/abm/kpi/matsim/handlers/TestLinkLogHandlerWithSimpleData.java similarity index 100% rename from src/test/java/com/arup/cml/kpi/matsim/handlers/TestLinkLogHandlerWithSimpleData.java rename to src/test/java/com/arup/cml/abm/kpi/matsim/handlers/TestLinkLogHandlerWithSimpleData.java diff --git a/src/test/regression/data/smol-matsim-outputs/output_allVehicles.xml.gz b/src/test/regression/data/smol-matsim-outputs/output_allVehicles.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..90ec1c6e83a5451437d995a8082cd2b8773d7165 GIT binary patch literal 566 zcmV-60?GX!iwFP!000000JT)nZrU&ueWqVwS$nM$LQyM}P-&x;kXmh8S+%#xI5)&? zY-hGZ;P2-c0+cechfYEYzW3a7eU7gk->yV~mY@w+GQoWkVg!<@l*>hef6VSLZ}9E- z;v!x`&RGEy$hhRzfemt%(j+*ywj2dPUDrfVYq%gvFM^C0V1m@9c!L|Q41a^I2ObxN zVL$l!`0&JX5cHBuW2t1|stg|)AAC@ZTED%HR;VK%ych9n8Ih2zOp2YzUaNApE&=g0 z!JjMR61`qbt<`*9SuoA=V2vadkYLIf7&GGnrt%4xlBxLy+Wm}@7_ovH=hO>bQc_U4 zAQM&13&7)$M8i1Pk)7sFmC|2J(B6bcmBNnDscVI9cW%h@Uc#rzyUMWv&1uou6Bhb| z^c*a`cQKzWZJAC3U^5K_zpZMAxLhWt3oR zrC%FM(ZT-&Gpe_ctWfn`mT|`2eOljBW|c;n|7`AA1B-)$i90!g4dG_P$G%ueN<2fMd{+-}EjH7T;K5)A{UCq$z5lzt-r9L(`WRW4+FW#BaRi9E z0D~^TRTp4*7Qk}NO^aydzd@u>aQA?(&w^f5PUTsI + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/regression/data/smol-matsim-outputs/output_config_reduced.xml b/src/test/regression/data/smol-matsim-outputs/output_config_reduced.xml new file mode 100644 index 0000000..dee0eda --- /dev/null +++ b/src/test/regression/data/smol-matsim-outputs/output_config_reduced.xml @@ -0,0 +1,589 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/test/regression/data/smol-matsim-outputs/output_counts.xml.gz b/src/test/regression/data/smol-matsim-outputs/output_counts.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..d0ba19fcf74ff99b1b7128486fda5b8a2b9fa9d1 GIT binary patch literal 194 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 aQ|JO>dz19l&wEnaH~#}1HRWTjwEzGB<0Tvb literal 0 HcmV?d00001 diff --git a/src/test/regression/data/smol-matsim-outputs/output_facilities.xml.gz b/src/test/regression/data/smol-matsim-outputs/output_facilities.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..9b8ac4f552ad564765765b5b341860774dca7b19 GIT binary patch literal 140 zcmb2|=3sz;%^TOBI2)+pt*dqJ%=yisMpujjf;`T8pYuO?#(R4x7jNO^tpS_1Ki(8r z^0Az+lcylm!`tWFnUgvveRRV(`gr&XzlH{!($Li0aOt|fzW(*ozB-!c&RjjM?{(e( s^chdxYyO&^7u_>D^^GqvcWK-#EWD}U(s)dHL^X{~uiy?e$PB^KFn`zogoAkr*R?5$p z;Gj;dchBYS>TY(HOlm|Ed;=vdfG975G=6B{dO79?=-Mo+b$FrD!Ac}c!eawE#%IM? zN{Koi(Ks5$fjx{>$Yhl8;i?(UADi|ow=0U0-A?^kXytfrJVx$?T2g2#T*W>J9@kkL eRb<0w-|_cpxkzV}&}Q|I-o6157F78O0RRAF_fb0l literal 0 HcmV?d00001 diff --git a/src/test/regression/data/smol-matsim-outputs/output_legs.csv.gz b/src/test/regression/data/smol-matsim-outputs/output_legs.csv.gz new file mode 100644 index 0000000000000000000000000000000000000000..2b864843c8ac11fd387d8182a4924165422dfc33 GIT binary patch literal 729 zcmV;~0w(<*iwFP!000000KJy$ZksR^$G=b7qcHhOh|j}B6uibu0uj(l-hTG64F=P# znxaNjn>st-hAEwjQ zbeG`1hwB4$*ZL2f^N#ibb<^l^JdIP2O8R+7Z>?T88szEuX6Rog4X^ranya>d_5E9O z9?S@6PZY>O@k$8-geY=Ul%eB(K}u_ydH`B*DD2G-0tLg1C?tpy-3qPyLFAgxfR>6% zB}#{-L`kvm%gE1YxnRQoSx@>_gTJ^4DrH3&g1J=kuqe=jHBaWE;aF6TjYPQ(fzA>h zy4A2z92B#3i>8Vn72}JBm^CtDE}CjQ>tT2RT3-i-ycxVWwtub{Op2!$V$PCuj*RF( zL77mLhbj>2i+i6o5Ep_Za;e0*ziHoKwvXVgA13JUhd`UVHvQx#5? zNK(UGRWK=T(hf4I_5Rr%GNq?yr*8eFbUD*=Sf;nohu*fnGpn;xS5_f5dB?RuMPciG z2#Yn_ugmEjH09%R4X0;{SU+9f)y`V-tUbYn|EoXO9ia7{BW2P#NCcs`@q(5njw& z1F36?brc^;WVk)eM55JK^QvvVqZ4*|tOymWbXDmr%aloZK}CEQiKQTsyC=o)yFn}n z<%%5>DH4mnL#~QroQ}^3@l}`Em{=N98H6^_EX2R52>hb(C7F{r_+OB@65kj9H*>!M LBXdlK&I$kk-56!w literal 0 HcmV?d00001 diff --git a/src/test/regression/data/smol-matsim-outputs/output_network.xml.gz b/src/test/regression/data/smol-matsim-outputs/output_network.xml.gz new file mode 100644 index 0000000000000000000000000000000000000000..b944f665ae37cb0da7ac03789a7c633f6540a111 GIT binary patch literal 722 zcmV;@0xkU?iwFP!000000L_@+Z<{a>$Dfd*^okjk=2QDk^&=6 zBE~}SD>_705@lO!C0w&DSS)W=UuMYnA)MPU^NHD8cT6tGG>!0|d<@ep*OKMyY8mp% zplcCMU_6BY%AlUA-_pRA7K$k>Z6^@c<_?CJJsi~o^?9Ju!~Y8pSM_lFJiO8)Xgs_g z5A-TXW{>q52*W=Ls#hD=);*JB)!u=Z9VVrN)8M#04!(ll7tTP<@kQ(DIa`;abG{ID z`W_NUXtrZU9PRg{pt%5o&J05F6-{NcAu*>15|boh^tVvAZ{gOs5HUH@HGdF6v3v|l zYB}M#tW1&kO_8UisCZr$LPD~ww6E5?DF|VELP|Bs0Ra-ll(+IIxKjBbR<*iZJTp3# zbEYyZA-JbIGCoGhZX8F&`2LZN<5QfFI*JlVA%mt=V#Nl}aB`%ktDmh6536*zfeW;< zIi>?&;HtdJk%5Fx;Gqs48Vnw47akg1;R!sqgXazg&uu5y9b9q+p4Y+i27~9dlj{vF zxv1GKP-nOBb&`p+)?{^32eOa3CQ``IU}EMeWZtWoX+-myLi64_mS{!83K||rrFr5% zuCu$GQe-iKquKmA)7R0o>mo18Wl`BD$tGQD`@^e8m`~u z)9>U{D_PKJAn0g7Z|exmse(3bp=s6Uv}w50Zo~cmXy=P}c?U7KUtTXh0~(@>FWVFV E0H?)SqW}N^ literal 0 HcmV?d00001 diff --git a/src/test/regression/data/smol-matsim-outputs/output_persons.csv.gz b/src/test/regression/data/smol-matsim-outputs/output_persons.csv.gz new file mode 100644 index 0000000000000000000000000000000000000000..00cf00050d130db6c54f4e73c918cfd4c79e6afe GIT binary patch literal 336 zcmV-W0k8faiwFP!000000DY0&Zo?o9M(->29rgl^3gm=88Rz#t^>bTJF?IW0 z)eLbIg}P8^to4RSS>xqk0Sb_VUXCVRf;92myv44{^?r9Mr*J7n0T!Tv5lDd{i%LAK zq@p8A{OMpI!}m78%J4wrR+w=vJF?se%TUpJn{@qvl6oZ{Whc=j`BQndzBM0duuS? zEYFSJ4EK?mvRgbA8Ft<~2IEi*@ruGG`dN-KFGF!*9C)uiDrRlH82_vKr)wSB_!aKH iz5ol}{<_LA(v4^+ZR8scXS{ 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 literal 0 HcmV?d00001 diff --git a/src/test/regression/data/smol-matsim-outputs/output_trips.csv.gz b/src/test/regression/data/smol-matsim-outputs/output_trips.csv.gz new file mode 100644 index 0000000000000000000000000000000000000000..a05d676762a070d873913fda0bd34c866a03216c GIT binary patch literal 867 zcmV-p1DyOHiwFP!000000L7N;j+-zLh5uLTqfq(E#eNvX1}E!=00OezynV-G2YHUxgj!JyV%7FKs^* z^~q>+KUKCgMLlob3R~y5rZl>0>Wk@z=SP0m4ZVh)Zpe$%VBhTU$cIM@Usji^9e>xk zIN8eWfj+-e+4?#z-^clZkB7IqYrN4d-f?{Bv+Y1pJLE4-(UrEoROgdA#Y{2Am@u4c2kmOUUID+|7RP2Ki|4~$JPgfA-CLby>i2{Kn zI1(atL!8EkM)+8{aS@UfW)vKj?T{*9%2}z81Z8y&h+u zYx1mZIMp<$ZSLAFmHdO+rX->iZHnNwtKf~VC_X=^S2-u~m?3=+V zpO$0GpK?ycBJimTd=iUv4m|uwYINB(ZF4@u!_W31H|{BqsF>b3LT*H`Sp>u17gN$H zS1b!e5MT7cdw%9mD|XDp57H=`4*XgNpLOuX0f1nzFc>iggUYQA_FVB@+i0 t@TbQYGV(vhOgUS5&6DO!dELqsMM{MDz(zIcGK=E*Et~` ziOp<7;NS1WkWyBND~(FK*cEX6__fay6M1yGEQ??P+6W~R64QtTAh}9~oFwGi|Kj2{TcE2~(SrH8)%uvBOqf z$91A84u9O=J@6b#b|$2;Ome_kMhuNB-YL$k+n#5sz%w4cZQ^Osp%Go0lwgx5O_z_W z83ZCt$kp7qfs+wuGscBo1qLuVA$=58Z?zWnRjKk;enE+<7Sf3}bHZlQxc*guoY*`l z!GcE9xGo9ZKqb;`y+bcH<&rH$IWNCMq1?g_z(pQ_D~WsSc3%>>GWJ$xN|#Plv-+P^ zEY6rQxDU{un7;ls7Yl~lvL={uSU>%BpafefJ-t^c1h2j)Ch#;s0m& zgU>K$`helyUmfA|m*cXdciZAWskgRqRJ|1|rXTW(i1z#4mVJI>+U*_t4H5hNIvvLl z?BwF&OA=Td+CI5Az*GH~*+9*|X9vP!+yGYxfQ}F7`hcDf=(hqq*TS^+>IiSMDHH;4 zOsm$Y2J)t5%;FuVHEWIdlQg95IS6=D@L+mcbA&hNr^=aZ&2fY`XUdFd*W(Cpjud>_ g8dC$_6s