From eb1a4ebdc9f42d8c08f90555a65860b53da5a36e Mon Sep 17 00:00:00 2001 From: David Amo <david.amo-gonzalez@ext.ec.europa.eu> Date: Thu, 30 May 2024 08:02:51 +0100 Subject: [PATCH] Implement unit tests for PEVs subgroup allocation --- .../Models/Declaration/DeclarationDataTest.cs | 60 -------- .../Declaration/WeightingGroupHelperTest.cs | 132 ++++++++++++++++++ 2 files changed, 132 insertions(+), 60 deletions(-) create mode 100644 VectoCore/VectoCoreTest/Models/Declaration/WeightingGroupHelperTest.cs diff --git a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs index 63475b24dc..3beaf1e52b 100644 --- a/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs +++ b/VectoCore/VectoCoreTest/Models/Declaration/DeclarationDataTest.cs @@ -2427,66 +2427,6 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration Assert.AreEqual(expectedCorrectionFactor, cf, 1e-6); } - [ - TestCase(VehicleClass.Class1, false, true, 169.9, WeightingGroup.Group1), - TestCase(VehicleClass.Class1, false, false, 265, WeightingGroup.Group1), - TestCase(VehicleClass.Class2, false, true, 169.9, WeightingGroup.Group2), - TestCase(VehicleClass.Class2, false, false, 265, WeightingGroup.Group2), - TestCase(VehicleClass.Class3, false, true, 169.9, WeightingGroup.Group3), - TestCase(VehicleClass.Class3, false, false, 265, WeightingGroup.Group3), - - - TestCase(VehicleClass.Class4, false, true, 169.9, WeightingGroup.Group4UD), - TestCase(VehicleClass.Class4, false, false, 169.9, WeightingGroup.Group4UD), - TestCase(VehicleClass.Class4, false, false, 170, WeightingGroup.Group4RD), - TestCase(VehicleClass.Class4, false, true, 170, WeightingGroup.Group4RD), - TestCase(VehicleClass.Class4, false, true, 264.9, WeightingGroup.Group4RD), - TestCase(VehicleClass.Class4, false, true, 265, WeightingGroup.Group4LH), - TestCase(VehicleClass.Class4, true, true, 265, WeightingGroup.Group4V), - TestCase(VehicleClass.Class4, true, false, 265, WeightingGroup.Group4V), - - TestCase(VehicleClass.Class5, false, false, 169.9, WeightingGroup.Group5RD), - TestCase(VehicleClass.Class5, false, false, 170, WeightingGroup.Group5RD), - TestCase(VehicleClass.Class5, false, false, 264.9, WeightingGroup.Group5RD), - TestCase(VehicleClass.Class5, false, false, 265, WeightingGroup.Group5RD), - TestCase(VehicleClass.Class5, false, true, 264.9, WeightingGroup.Group5RD), - TestCase(VehicleClass.Class5, false, true, 265, WeightingGroup.Group5LH), - TestCase(VehicleClass.Class5, true, true, 265, WeightingGroup.Group5V), - TestCase(VehicleClass.Class5, true, false, 265, WeightingGroup.Group5V), - - TestCase(VehicleClass.Class9, false, false, 169.9, WeightingGroup.Group9RD), - TestCase(VehicleClass.Class9, false, false, 264.9, WeightingGroup.Group9RD), - TestCase(VehicleClass.Class9, false, false, 265, WeightingGroup.Group9RD), - TestCase(VehicleClass.Class9, false, true, 169.9, WeightingGroup.Group9LH), - TestCase(VehicleClass.Class9, false, true, 264.9, WeightingGroup.Group9LH), - TestCase(VehicleClass.Class9, false, true, 265, WeightingGroup.Group9LH), - TestCase(VehicleClass.Class9, true, true, 265, WeightingGroup.Group9V), - TestCase(VehicleClass.Class9, true, false, 265, WeightingGroup.Group9V), - - TestCase(VehicleClass.Class10, false, 169.9, WeightingGroup.Group10RD), - TestCase(VehicleClass.Class10, false, 264.9, WeightingGroup.Group10RD), - TestCase(VehicleClass.Class10, false, 265, WeightingGroup.Group10RD), - TestCase(VehicleClass.Class10, true, 169.9, WeightingGroup.Group10LH), - TestCase(VehicleClass.Class10, true, 264.9, WeightingGroup.Group10LH), - TestCase(VehicleClass.Class10, true, 265, WeightingGroup.Group10LH), - - TestCase(VehicleClass.Class11, true, 169.9, WeightingGroup.Group11), - TestCase(VehicleClass.Class11, false, 265, WeightingGroup.Group11), - TestCase(VehicleClass.Class12, true, 169.9, WeightingGroup.Group12), - TestCase(VehicleClass.Class12, false, 265, WeightingGroup.Group12), - TestCase(VehicleClass.Class16, true, 169.9, WeightingGroup.Group16), - TestCase(VehicleClass.Class16, false, 265, WeightingGroup.Group16), - ] - public void TestWeightingGroupLookup( - VehicleClass vehicleGroup, bool vocational, bool sleeperCab, double ratedPowerkWm, WeightingGroup expectedWeightingGroup) - { - var wGroup = DeclarationData.WeightingGroup.Lookup( - vehicleGroup, - sleeperCab, - ratedPowerkWm.SI(Unit.SI.Kilo.Watt).Cast<Watt>()); - Assert.AreEqual(expectedWeightingGroup, wGroup); - } - [ TestCase(WeightingGroup.Group51, 0, 0, 0.25, 0.25, 0.25, 0.25), diff --git a/VectoCore/VectoCoreTest/Models/Declaration/WeightingGroupHelperTest.cs b/VectoCore/VectoCoreTest/Models/Declaration/WeightingGroupHelperTest.cs new file mode 100644 index 0000000000..77fdcc3f2a --- /dev/null +++ b/VectoCore/VectoCoreTest/Models/Declaration/WeightingGroupHelperTest.cs @@ -0,0 +1,132 @@ + +namespace TUGraz.VectoCore.Tests.Models.Declaration +{ + using NUnit.Framework; + using TUGraz.VectoCommon.Models; + using TUGraz.VectoCommon.Utils; + using TUGraz.VectoCore.Models.Declaration; + + [TestFixture] + [Parallelizable(ParallelScope.All)] + public class WeightingGroupHelperTest: WeightingGroups + { + [TestCase()] + public void WeightingGroupHelper_ResourceId() + { + Assert.AreEqual("TUGraz.VectoCore.Resources.Declaration.CO2Standards.WeightingGroups.csv", ResourceId); + } + + // Group 1s + [TestCase(VehicleClass.Class1s, false, false, 100, null, WeightingGroup.Group1s)] + [TestCase(VehicleClass.Class1s, false, true, 100, null, WeightingGroup.Group1s)] + [TestCase(VehicleClass.Class1s, false, false, 100, 100, WeightingGroup.Group1s)] + [TestCase(VehicleClass.Class1s, true, false, 100, 100, WeightingGroup.Group1s)] + + // Group 1 + [TestCase(VehicleClass.Class1, false, false, 100, null, WeightingGroup.Group1)] + [TestCase(VehicleClass.Class1, false, true, 100, null, WeightingGroup.Group1)] + [TestCase(VehicleClass.Class1, false, false, 100, 100, WeightingGroup.Group1)] + [TestCase(VehicleClass.Class1, true, false, 100, 100, WeightingGroup.Group1)] + + // Group 2 + [TestCase(VehicleClass.Class2, false, false, 100, null, WeightingGroup.Group2)] + [TestCase(VehicleClass.Class2, false, true, 100, null, WeightingGroup.Group2)] + [TestCase(VehicleClass.Class2, false, false, 100, 100, WeightingGroup.Group2)] + [TestCase(VehicleClass.Class2, true, false, 100, 100, WeightingGroup.Group2)] + + // Group 3 + [TestCase(VehicleClass.Class3, false, false, 100, null, WeightingGroup.Group3)] + [TestCase(VehicleClass.Class3, false, true, 100, null, WeightingGroup.Group3)] + [TestCase(VehicleClass.Class3, false, false, 100, 100, WeightingGroup.Group3)] + [TestCase(VehicleClass.Class3, true, false, 100, 100, WeightingGroup.Group3)] + [TestCase(VehicleClass.Class3, true, true, 100, 100, WeightingGroup.Group3)] + + // Group 4-UD + [TestCase(VehicleClass.Class4, false, false, 169.9, null, WeightingGroup.Group4UD)] + [TestCase(VehicleClass.Class4, false, true, 169.9, null, WeightingGroup.Group4UD)] + [TestCase(VehicleClass.Class4, false, false, 169.9, 100, WeightingGroup.Group4UD)] + [TestCase(VehicleClass.Class4, true, false, 169.9, 100, WeightingGroup.Group4UD)] + [TestCase(VehicleClass.Class4, true, true, 100, 400, WeightingGroup.Group4UD)] + + // Group 4-RD + [TestCase(VehicleClass.Class4, false, false, 170, null, WeightingGroup.Group4RD)] + [TestCase(VehicleClass.Class4, false, false, 265, null, WeightingGroup.Group4RD)] + [TestCase(VehicleClass.Class4, false, false, 170, 100, WeightingGroup.Group4RD)] + [TestCase(VehicleClass.Class4, false, true, 170, null, WeightingGroup.Group4RD)] + [TestCase(VehicleClass.Class4, false, true, 170, 351, WeightingGroup.Group4RD)] + [TestCase(VehicleClass.Class4, false, true, 264, null, WeightingGroup.Group4RD)] + [TestCase(VehicleClass.Class4, true, true, 270, 250, WeightingGroup.Group4RD)] + [TestCase(VehicleClass.Class4, true, false, 170, 400, WeightingGroup.Group4RD)] + [TestCase(VehicleClass.Class4, true, true, 170, 400, WeightingGroup.Group4RD)] + + // Group 4-LH + [TestCase(VehicleClass.Class4, false, true, 270, 100, WeightingGroup.Group4LH)] + [TestCase(VehicleClass.Class4, false, true, 265, null, WeightingGroup.Group4LH)] + [TestCase(VehicleClass.Class4, true, true, 270, 351, WeightingGroup.Group4LH)] + [TestCase(VehicleClass.Class4, true, true, 265, null, WeightingGroup.Group4LH)] + + //Group 5-RD + [TestCase(VehicleClass.Class5, false, false, 0, null, WeightingGroup.Group5RD)] + [TestCase(VehicleClass.Class5, false, false, 0, null, WeightingGroup.Group5RD)] + [TestCase(VehicleClass.Class5, false, false, 0, 100, WeightingGroup.Group5RD)] + [TestCase(VehicleClass.Class5, false, true, 264.9, null, WeightingGroup.Group5RD)] + [TestCase(VehicleClass.Class5, false, true, 264.9, 351, WeightingGroup.Group5RD)] + [TestCase(VehicleClass.Class5, false, true, 264.9, null, WeightingGroup.Group5RD)] + [TestCase(VehicleClass.Class5, true, true, 265, 250, WeightingGroup.Group5RD)] + [TestCase(VehicleClass.Class5, true, false, 265, 400, WeightingGroup.Group5RD)] + + //Group 5-LH + [TestCase(VehicleClass.Class5, false, true, 270, 100, WeightingGroup.Group5LH)] + [TestCase(VehicleClass.Class5, false, true, 265, null, WeightingGroup.Group5LH)] + [TestCase(VehicleClass.Class5, true, true, 270, 351, WeightingGroup.Group5LH)] + [TestCase(VehicleClass.Class5, true, true, 265, null, WeightingGroup.Group5LH)] + + //Group 9-RD + [TestCase(VehicleClass.Class9, false, false, 0, null, WeightingGroup.Group9RD)] + [TestCase(VehicleClass.Class9, true, false, 0, null, WeightingGroup.Group9RD)] + [TestCase(VehicleClass.Class9, true, true, 0, 349, WeightingGroup.Group9RD)] + + ////Group 9-LH + [TestCase(VehicleClass.Class9, true, true, 0, null, WeightingGroup.Group9LH)] + [TestCase(VehicleClass.Class9, false, true, 0, null, WeightingGroup.Group9LH)] + [TestCase(VehicleClass.Class9, false, true, 0, 349, WeightingGroup.Group9LH)] + [TestCase(VehicleClass.Class9, false, true, 0, null, WeightingGroup.Group9LH)] + [TestCase(VehicleClass.Class9, false, true, 0, 350, WeightingGroup.Group9LH)] + [TestCase(VehicleClass.Class9, true, true, 0, 350, WeightingGroup.Group9LH)] + + // Group 10-RD + [TestCase(VehicleClass.Class10, false, false, 0, null, WeightingGroup.Group10RD)] + [TestCase(VehicleClass.Class10, true, false, 0, null, WeightingGroup.Group10RD)] + + // Group 10-LH + [TestCase(VehicleClass.Class10, false, true, 0, null, WeightingGroup.Group10LH)] + [TestCase(VehicleClass.Class10, true, true, 0, null, WeightingGroup.Group10LH)] + [TestCase(VehicleClass.Class10, false, true, 0, 100, WeightingGroup.Group10LH)] + [TestCase(VehicleClass.Class10, true, true, 0, 100, WeightingGroup.Group10LH)] + + // Group 11 + [TestCase(VehicleClass.Class11, false, false, 0, null, WeightingGroup.Group11)] + [TestCase(VehicleClass.Class11, false, true, 0, null, WeightingGroup.Group11)] + [TestCase(VehicleClass.Class11, true, false, 0, null, WeightingGroup.Group11)] + [TestCase(VehicleClass.Class11, true, true, 0, null, WeightingGroup.Group11)] + + // Group 12 + [TestCase(VehicleClass.Class12, false, false, 0, null, WeightingGroup.Group12)] + [TestCase(VehicleClass.Class12, false, true, 0, null, WeightingGroup.Group12)] + [TestCase(VehicleClass.Class12, true, false, 0, null, WeightingGroup.Group12)] + [TestCase(VehicleClass.Class12, true, true, 0, null, WeightingGroup.Group12)] + + // Group 16 + [TestCase(VehicleClass.Class16, false, false, 0, null, WeightingGroup.Group16)] + [TestCase(VehicleClass.Class16, false, true, 0, null, WeightingGroup.Group16)] + [TestCase(VehicleClass.Class16, true, false, 0, null, WeightingGroup.Group16)] + [TestCase(VehicleClass.Class16, true, true, 0, null, WeightingGroup.Group16)] + public void WeightingGroupHelper_AssignsCorrectSubgroup(VehicleClass vehicleClass, bool isElectric, bool hasSleeperCabin, double enginePower, double? operationalRange, WeightingGroup expectedSubgroup) + { + double? range = operationalRange != null ? operationalRange.Value.SI(Unit.SI.Kilo.Meter).Cast<Meter>().Value() : null; + var subgroup = Lookup(vehicleClass, hasSleeperCabin, enginePower.SI(Unit.SI.Kilo.Watt).Cast<Watt>(), isElectric, range); + + Assert.AreEqual(expectedSubgroup, subgroup); + } + } +} -- GitLab