mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2025-06-21 01:25:55 +02:00
Improve parameter parsing (#583)
* DigiKey: Skip empty values * Move improved range detection from LCSCProvider to ParameterDTO class Improve numeric value detection by moving extra info to value_text * ParameterDTO: Add micro unit prefix * Bring $value_text2 to a defined state * ParameterDTO: Don't overwrite $unit if it's not empty * ParameterDTO: Don't overwrite $unit if it's not empty * Correct some inaccuacies in comments * Added tests and fixed certain edge cases in parsing parameters * Added more tests for parameter parsing --------- Co-authored-by: Jan Böhmer <mail@jan-boehmer.de>
This commit is contained in:
parent
fdf64f9e9a
commit
7a6b045030
4 changed files with 141 additions and 34 deletions
|
@ -67,6 +67,56 @@ 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.0~+2.0', //Leading signs are parsed correctly
|
||||
'kg',
|
||||
'm',
|
||||
'test'
|
||||
];
|
||||
|
||||
//Test ranges with comment
|
||||
yield [
|
||||
new ParameterDTO('test', value_text: "Test", value_min: -1.0, value_max: 2.0, unit: 'kg', symbol: 'm',
|
||||
group: 'test'),
|
||||
'test',
|
||||
'-1.0~+2.0 kg Test', //Leading signs are parsed correctly
|
||||
'kg',
|
||||
'm',
|
||||
'test'
|
||||
];
|
||||
|
||||
//Test @comment
|
||||
yield [
|
||||
new ParameterDTO('test', value_text: "@comment", value_typ: 1.0, unit: 'kg', symbol: 'm', group: 'test'),
|
||||
'test',
|
||||
'1.0@comment',
|
||||
'kg',
|
||||
'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'
|
||||
];
|
||||
|
||||
yield [ //And with unit
|
||||
new ParameterDTO('test', value_min: -1.0, value_max: +1.0, unit: 'kg', symbol: 'm', group: 'test'),
|
||||
'test',
|
||||
'±1.0kg',
|
||||
'kg',
|
||||
'm',
|
||||
'test'
|
||||
];
|
||||
}
|
||||
|
||||
public function parseValueIncludingUnitDataProvider(): \Generator
|
||||
|
@ -142,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'
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -175,6 +252,7 @@ class ParameterDTOTest extends TestCase
|
|||
$this->assertEquals(["70", "℃"], ParameterDTO::splitIntoValueAndUnit("70℃"));
|
||||
|
||||
$this->assertEquals(["-5.0", "kg"], ParameterDTO::splitIntoValueAndUnit("-5.0 kg"));
|
||||
$this->assertEquals(["-5.0", "µg"], ParameterDTO::splitIntoValueAndUnit("-5.0 µg"));
|
||||
|
||||
$this->assertNull(ParameterDTO::splitIntoValueAndUnit('kg'));
|
||||
$this->assertNull(ParameterDTO::splitIntoValueAndUnit('Test'));
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue