From 6f295ce7fb4d95a738961ec4420bac4cd5f1422c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20B=C3=B6hmer?= Date: Mon, 15 Apr 2024 22:31:19 +0200 Subject: [PATCH] Added more tests for parameter parsing --- .../InfoProviderSystem/DTOs/ParameterDTO.php | 3 +++ .../DTOs/ParameterDTOTest.php | 27 +++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/src/Services/InfoProviderSystem/DTOs/ParameterDTO.php b/src/Services/InfoProviderSystem/DTOs/ParameterDTO.php index 3b34446d..d9a0596c 100644 --- a/src/Services/InfoProviderSystem/DTOs/ParameterDTO.php +++ b/src/Services/InfoProviderSystem/DTOs/ParameterDTO.php @@ -45,6 +45,9 @@ class ParameterDTO /** * This function tries to decide on the value, if it is a numerical value (which is then stored in one of the value_*) fields) or a text value (which is stored in value_text). * It is possible to give ranges like 1...2 (or 1~2) here, which will be parsed as value_min: 1.0, value_max: 2.0. + * + * For certain expressions (like ranges) the unit is automatically extracted from the value, if no unit is given + * @TODO Rework that, so that the difference between parseValueField and parseValueIncludingUnit is clearer or merge them * @param string $name * @param string|float $value * @param string|null $unit diff --git a/tests/Services/InfoProviderSystem/DTOs/ParameterDTOTest.php b/tests/Services/InfoProviderSystem/DTOs/ParameterDTOTest.php index 066797dc..105cbfcf 100644 --- a/tests/Services/InfoProviderSystem/DTOs/ParameterDTOTest.php +++ b/tests/Services/InfoProviderSystem/DTOs/ParameterDTOTest.php @@ -192,6 +192,33 @@ class ParameterDTOTest extends TestCase 'm', 'test' ]; + + //Test ranges with tilde + yield [ + new ParameterDTO('test', value_min: -1.0, value_max: 2.0, unit: 'kg', symbol: 'm', group: 'test'), + 'test', + '-1.0kg~+2.0kg', //Leading signs are parsed correctly + 'm', + 'test' + ]; + + //Test @comment + yield [ + new ParameterDTO('test', value_text: "@comment", value_typ: 1.0, unit: 'kg', symbol: 'm', group: 'test'), + 'test', + '1.0 kg@comment', + 'm', + 'test' + ]; + + //Test plus minus range (without unit) + yield [ + new ParameterDTO('test', value_min: -1.0, value_max: +1.0, unit: 'kg', symbol: 'm', group: 'test'), + 'test', + '±1.0 kg', + 'm', + 'test' + ]; } /**