Code development platform for open source projects from the European Union institutions :large_blue_circle: EU Login authentication by SMS has been phased out. To see alternatives please check here

Skip to content
Snippets Groups Projects
Commit d5096b17 authored by Markus Quaritsch's avatar Markus Quaritsch
Browse files

Merge pull request #185 in VECTO/vecto-sim from...

Merge pull request #185 in VECTO/vecto-sim from ~EMKRISPMI/vecto-sim:bugfix/VECTO-269-vehicleclass-display to develop

* commit 'a8cda3af':
  corrected display of vehicle class in vecto 2.2 gui
  formatted segment table, added more tests for extreme cases of segment table
parents f25d71dc a8cda3af
Branches
Tags
No related merge requests found
...@@ -1122,10 +1122,8 @@ Public Class cSegmentTable ...@@ -1122,10 +1122,8 @@ Public Class cSegmentTable
Public Function SetRef(ByRef SegTableEntryRef As cSegmentTableEntry, ByVal VehCat As tVehCat, Public Function SetRef(ByRef SegTableEntryRef As cSegmentTableEntry, ByVal VehCat As tVehCat,
ByVal AxleConf As tAxleConf, ByVal MaxMass As Single) As Boolean ByVal AxleConf As tAxleConf, ByVal MaxMass As Single) As Boolean
Dim s0 As cSegmentTableEntry For Each s0 As cSegmentTableEntry In SegTableEntries
If s0.VehCat = VehCat And s0.AxleConf = AxleConf And MaxMass >= s0.MinGVW And MaxMass <= s0.MaxGVW Then
For Each s0 In SegTableEntries
If s0.VehCat = VehCat And s0.AxleConf = AxleConf And s0.MaxGVW > MaxMass And s0.MinGVW <= MaxMass Then
SegTableEntryRef = s0 SegTableEntryRef = s0
Return True Return True
End If End If
......
...@@ -67,12 +67,20 @@ namespace TUGraz.VectoCore.Models.Declaration ...@@ -67,12 +67,20 @@ namespace TUGraz.VectoCore.Models.Declaration
DataRow row; DataRow row;
try { try {
row = SegmentTable.Rows.Cast<DataRow>().First(r => r.Field<string>("valid") == "1" row = SegmentTable.Rows.Cast<DataRow>().First(r => {
&& r.Field<string>("vehiclecategory") == vehicleCategory.ToString() var isValid = r.Field<string>("valid");
&& r.Field<string>("axleconf.") == axleConfiguration.GetName() var category = r.Field<string>("vehiclecategory");
&& r.ParseDouble("gvw_min").SI().Ton < grossVehicleMassRating var axleConf = r.Field<string>("axleconf.");
&& r.ParseDouble("gvw_max").SI().Ton >= grossVehicleMassRating var massMin = r.ParseDouble("gvw_min").SI().Ton;
); var massMax = r.ParseDouble("gvw_max").SI().Ton;
return isValid == "1"
&& category == vehicleCategory.ToString()
&& axleConf == axleConfiguration.GetName()
// MK 2016-06-07: normally the next condition should be "mass > massMin", except for 7.5t where is should be ">="
// in any case ">=" is also correct, because the segment table is sorted by weight.
&& grossVehicleMassRating >= massMin
&& grossVehicleMassRating <= massMax;
});
} catch (InvalidOperationException e) { } catch (InvalidOperationException e) {
var errorMessage = string.Format( var errorMessage = string.Format(
"ERROR: Could not find the declaration segment for vehicle. Category: {0}, AxleConfiguration: {1}, GrossVehicleMassRating: {2}", "ERROR: Could not find the declaration segment for vehicle. Category: {0}, AxleConfiguration: {1}, GrossVehicleMassRating: {2}",
......
...@@ -133,7 +133,7 @@ namespace TUGraz.VectoCore.Utils ...@@ -133,7 +133,7 @@ namespace TUGraz.VectoCore.Utils
do { do {
var line = lines.Current; var line = lines.Current;
var cells = line.Split(Delimiter); var cells = line.Split(Delimiter).Select(s => s.Trim()).ToArray();
if (!ignoreEmptyColumns && cells.Length != table.Columns.Count) { if (!ignoreEmptyColumns && cells.Length != table.Columns.Count) {
throw new CSVReadException( throw new CSVReadException(
string.Format("Line {0}: The number of values is not correct. Expected {1} Columns, Got {2} Columns", i, string.Format("Line {0}: The number of values is not correct. Expected {1} Columns, Got {2} Columns", i,
......
...@@ -33,6 +33,8 @@ using System; ...@@ -33,6 +33,8 @@ using System;
using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.VisualStudio.TestTools.UnitTesting;
using TUGraz.VectoCommon.Exceptions; using TUGraz.VectoCommon.Exceptions;
// ReSharper disable ObjectCreationAsStatement
namespace TUGraz.VectoCore.Tests.Exceptions namespace TUGraz.VectoCore.Tests.Exceptions
{ {
[TestClass] [TestClass]
......
...@@ -414,29 +414,65 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration ...@@ -414,29 +414,65 @@ namespace TUGraz.VectoCore.Tests.Models.Declaration
} }
} }
[Test] [
public void SegmentLookupTestOutOfRange() TestCase(0),
TestCase(1000),
TestCase(3500),
TestCase(7499)
]
public void SegmentWeightOutOfRange4X2(double weight)
{ {
AssertHelper.Exception<VectoException>( AssertHelper.Exception<VectoException>(() =>
() => DeclarationData.Segments.Lookup(
DeclarationData.Segments.Lookup(VehicleCategory.RigidTruck, VehicleCategory.RigidTruck,
AxleConfiguration.AxleConfig_4x2, AxleConfiguration.AxleConfig_4x2,
1000.SI<Kilogram>(), 0.SI<Kilogram>()), "Gross vehicle mass must be greater than 7.5 tons"); weight.SI<Kilogram>(),
0.SI<Kilogram>()),
"Gross vehicle mass must be greater than 7.5 tons");
}
[
TestCase(0),
TestCase(1000),
TestCase(3500),
TestCase(7499)
]
public void SegmentWeightOutOfRange4X4(double weight)
{
AssertHelper.Exception<VectoException>(() =>
DeclarationData.Segments.Lookup(
VehicleCategory.RigidTruck,
AxleConfiguration.AxleConfig_4x4,
weight.SI<Kilogram>(),
0.SI<Kilogram>()),
"Gross vehicle mass must be greater than 7.5 tons");
} }
[Test, [Test,
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 7500, 0, VehicleClass.Class1),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 7500, 0, VehicleClass.Class1),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 10000, 0, VehicleClass.Class1), TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 10000, 0, VehicleClass.Class1),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 10000, 0, VehicleClass.Class1), TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 10000, 0, VehicleClass.Class1),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 10001, 0, VehicleClass.Class2),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 10001, 0, VehicleClass.Class2),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 12000, 0, VehicleClass.Class2), TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 12000, 0, VehicleClass.Class2),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 12000, 0, VehicleClass.Class2), TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 12000, 0, VehicleClass.Class2),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 12001, 0, VehicleClass.Class3),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 12001, 0, VehicleClass.Class3),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 16000, 0, VehicleClass.Class3), TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 16000, 0, VehicleClass.Class3),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 16000, 0, VehicleClass.Class3), TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 16000, 0, VehicleClass.Class3),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 16001, 0, VehicleClass.Class4), TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 16001, 0, VehicleClass.Class4),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_4x2, 99000, 0, VehicleClass.Class4),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 16001, 0, VehicleClass.Class5), TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 16001, 0, VehicleClass.Class5),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_4x2, 99000, 0, VehicleClass.Class5),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 7500, 0, VehicleClass.Class9), TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 7500, 0, VehicleClass.Class9),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 7500, 0, VehicleClass.Class10), TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 16000, 0, VehicleClass.Class9),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 40000, 0, VehicleClass.Class9), TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 40000, 0, VehicleClass.Class9),
TestCase(VehicleCategory.RigidTruck, AxleConfiguration.AxleConfig_6x2, 99000, 0, VehicleClass.Class9),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 7500, 0, VehicleClass.Class10),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 16000, 0, VehicleClass.Class10),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 40000, 0, VehicleClass.Class10), TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 40000, 0, VehicleClass.Class10),
TestCase(VehicleCategory.Tractor, AxleConfiguration.AxleConfig_6x2, 99000, 0, VehicleClass.Class10),
] ]
public void SegmentLookupTest(VehicleCategory category, AxleConfiguration axleConfiguration, double grossWeight, public void SegmentLookupTest(VehicleCategory category, AxleConfiguration axleConfiguration, double grossWeight,
double curbWeight, VehicleClass expectedClass) double curbWeight, VehicleClass expectedClass)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment