Я пытался сделать регулярное выражение с условием ниже:
-90 < latitude < 90
-180 < longitude < 180
Should have 6 decimal points.
и мое регулярное выражение для обоих:
Latitude : /^-?(0|[0-9]|[1-8][0-9]|90)\.{1}\d{6}$/
Longitude : /^-?(0|[0-9]|[1-9][0-9]|1[0-7][0-9]|180)\.{1}\d{6}$/
Максимальный тест пройден через это. Но когда я пытаюсь это сделать в Php Unit
Latitude : 10.000000 , Longitude: 10.000000 // Got Failed
Latitude : 0.000001 , Longitude: 0.000001 // Got Failed
Latitude : 0.000000 , Longitude: 0.000000 // Got Failed
Я хочу также включить эти 3 варианта. Я использую это регулярное выражение в larval 5.6 (PHP).
Также, когда мне это нравится, он начинает работать в модульном тесте.
Latitude : "10.000000" , Longitude: "10.000000" // Got Succeed
Latitude : "0.000001" , Longitude: "0.000001" // Got Succeed
Latitude : "0.000000" , Longitude: "0.000000" // Got Succeed
Если я пробую через Почтальон, это работает в обоих случаях. Но во время модульного тестирования Laravel PHP он не работает.
Мои правила проверки:
public static $fieldValidations = [
'serial' => 'required|unique:panels|size:16|alpha_num',
'latitude' => array('required','numeric','between:-90,90','regex:/^-?(0|[0-9]|[1-8][0-9]|90)\.{1}\d{6}$/'),
'longitude' => array('required','numeric','between:-180,180','regex:/^-?(0|[0-9]|[1-9][0-9]|1[0-7][0-9]|180)\.{1}\d{6}$/'),
];
Мой код модульного тестирования Php:
public function testStoreFailureLatitudeLongitudeAllZeroDecimalCase()
{
$response = $this->json('POST', '/api/panels', [
'serial' => 'AAAABBBBCCCC1234',
'longitude' => 10.000000,
'latitude' => -20.000000
]);
$response->assertStatus(201);
}
public function testStoreFailurePrecisionFloatDecimalValueCase()
{
$response = $this->json('POST', '/api/panels', [
'serial' => 'AAAABBBBCCCC1234',
'longitude' => 0.000001,
'latitude' => 0.000001
]);
$response->assertStatus(201);
}
public function testStoreFailurePrecisionFloatDecimalValuewithZeroCase()
{
$response = $this->json('POST', '/api/panels', [
'serial' => 'AAAABBBBCCCC1234',
'longitude' => 0.000000,
'latitude' => 0.000000
]);
$response->assertStatus(201);
}
Это 3 случая, когда он потерпел неудачу и с такими же значениями через почтальон работает.
Любая помощь?