Loading core/lib/Drupal/Core/Field/Plugin/Field/FieldType/DecimalItem.php +2 −2 Original line number Diff line number Diff line Loading @@ -136,8 +136,8 @@ public static function generateSampleValue(FieldDefinitionInterface $field_defin // point. // The maximum number you can get with 3 digits is 10^3 - 1 --> 999. // The minimum number you can get with 3 digits is -1 * (10^3 - 1). $max = is_numeric($settings['max']) ?: pow(10, ($precision - $scale)) - 1; $min = is_numeric($settings['min']) ?: -pow(10, ($precision - $scale)) + 1; $max = is_numeric($settings['max']) ? $settings['max'] : pow(10, ($precision - $scale)) - 1; $min = is_numeric($settings['min']) ? $settings['min'] : -pow(10, ($precision - $scale)) + 1; // Get the number of decimal digits for the $max $decimal_digits = self::getDecimalDigits($max); Loading core/lib/Drupal/Core/Field/Plugin/Field/FieldType/FloatItem.php +2 −2 Original line number Diff line number Diff line Loading @@ -64,8 +64,8 @@ public static function generateSampleValue(FieldDefinitionInterface $field_defin $settings = $field_definition->getSettings(); $precision = rand(10, 32); $scale = rand(0, 2); $max = is_numeric($settings['max']) ?: pow(10, ($precision - $scale)) - 1; $min = is_numeric($settings['min']) ?: -pow(10, ($precision - $scale)) + 1; $max = is_numeric($settings['max']) ? $settings['max'] : pow(10, ($precision - $scale)) - 1; $min = is_numeric($settings['min']) ? $settings['min'] : -pow(10, ($precision - $scale)) + 1; // @see "Example #1 Calculate a random floating-point number" in // http://php.net/manual/function.mt-getrandmax.php $random_decimal = $min + mt_rand() / mt_getrandmax() * ($max - $min); Loading core/modules/field/tests/src/Kernel/Number/NumberItemTest.php +20 −1 Original line number Diff line number Diff line Loading @@ -95,9 +95,28 @@ public function testNumberItem() { // Test sample item generation. $entity = EntityTest::create(); // Make sure that field settings are respected by the generation. $entity->field_decimal ->getFieldDefinition() ->setSetting('min', 99) ->setSetting('max', 100); $entity->field_float ->getFieldDefinition() ->setSetting('min', 99) ->setSetting('max', 100); $entity->field_integer ->getFieldDefinition() ->setSetting('min', 99) ->setSetting('max', 100); $entity->field_decimal->generateSampleItems(); $entity->field_integer->generateSampleItems(); $entity->field_float->generateSampleItems(); $entity->field_decimal->generateSampleItems(); // Confirm that the generated sample values are within range. $this->entityValidateAndSave($entity); } Loading Loading
core/lib/Drupal/Core/Field/Plugin/Field/FieldType/DecimalItem.php +2 −2 Original line number Diff line number Diff line Loading @@ -136,8 +136,8 @@ public static function generateSampleValue(FieldDefinitionInterface $field_defin // point. // The maximum number you can get with 3 digits is 10^3 - 1 --> 999. // The minimum number you can get with 3 digits is -1 * (10^3 - 1). $max = is_numeric($settings['max']) ?: pow(10, ($precision - $scale)) - 1; $min = is_numeric($settings['min']) ?: -pow(10, ($precision - $scale)) + 1; $max = is_numeric($settings['max']) ? $settings['max'] : pow(10, ($precision - $scale)) - 1; $min = is_numeric($settings['min']) ? $settings['min'] : -pow(10, ($precision - $scale)) + 1; // Get the number of decimal digits for the $max $decimal_digits = self::getDecimalDigits($max); Loading
core/lib/Drupal/Core/Field/Plugin/Field/FieldType/FloatItem.php +2 −2 Original line number Diff line number Diff line Loading @@ -64,8 +64,8 @@ public static function generateSampleValue(FieldDefinitionInterface $field_defin $settings = $field_definition->getSettings(); $precision = rand(10, 32); $scale = rand(0, 2); $max = is_numeric($settings['max']) ?: pow(10, ($precision - $scale)) - 1; $min = is_numeric($settings['min']) ?: -pow(10, ($precision - $scale)) + 1; $max = is_numeric($settings['max']) ? $settings['max'] : pow(10, ($precision - $scale)) - 1; $min = is_numeric($settings['min']) ? $settings['min'] : -pow(10, ($precision - $scale)) + 1; // @see "Example #1 Calculate a random floating-point number" in // http://php.net/manual/function.mt-getrandmax.php $random_decimal = $min + mt_rand() / mt_getrandmax() * ($max - $min); Loading
core/modules/field/tests/src/Kernel/Number/NumberItemTest.php +20 −1 Original line number Diff line number Diff line Loading @@ -95,9 +95,28 @@ public function testNumberItem() { // Test sample item generation. $entity = EntityTest::create(); // Make sure that field settings are respected by the generation. $entity->field_decimal ->getFieldDefinition() ->setSetting('min', 99) ->setSetting('max', 100); $entity->field_float ->getFieldDefinition() ->setSetting('min', 99) ->setSetting('max', 100); $entity->field_integer ->getFieldDefinition() ->setSetting('min', 99) ->setSetting('max', 100); $entity->field_decimal->generateSampleItems(); $entity->field_integer->generateSampleItems(); $entity->field_float->generateSampleItems(); $entity->field_decimal->generateSampleItems(); // Confirm that the generated sample values are within range. $this->entityValidateAndSave($entity); } Loading