1 common.test CommonValidNumberStepUnitTestCase::testNumberStep()

Tests valid_number_step() without offset.

File

core/modules/simpletest/tests/common.test, line 2432
Tests for common.inc functionality.

Class

CommonValidNumberStepUnitTestCase
Tests number step validation by valid_number_step().

Code

function testNumberStep() {
  // Value and step equal.
  $this->assertTrue(valid_number_step(10.3, 10.3));

  // Valid integer steps.
  $this->assertTrue(valid_number_step(42, 21));
  $this->assertTrue(valid_number_step(42, 3));

  // Valid float steps.
  $this->assertTrue(valid_number_step(42, 10.5));
  $this->assertTrue(valid_number_step(1000, -10));

  // Valid and very small float steps.
  $this->assertTrue(valid_number_step(1000.12345, 1e-10));
  $this->assertTrue(valid_number_step(1936.5, 3e-8));
  $this->assertTrue(valid_number_step(3.9999999999999, 1e-13));

  // Valid and confirmed to fail with the former approach.
  $this->assertTrue(valid_number_step(20.123456789, 1.0E-10));
  $this->assertTrue(valid_number_step(9999.1933172003, 1.0E-10));
  $this->assertTrue(valid_number_step(199.200001, 1.0E-10));
  $this->assertTrue(valid_number_step(1109.87, 1.0E-10));
  $this->assertTrue(valid_number_step(41239412.55, 1.0E-2));
  $this->assertTrue(valid_number_step(13517282.20, 1.0E-2));
  $this->assertTrue(valid_number_step(12345678.12, 1.0E-2));

  // Invalid integer steps.
  $this->assertFalse(valid_number_step(100, 30));
  $this->assertFalse(valid_number_step(-10, 4));

  // Invalid float steps.
  $this->assertFalse(valid_number_step(6, 5 / 7));
  $this->assertFalse(valid_number_step(10.3, 10.25));
  $this->assertFalse(valid_number_step(1, 1 / 3));
  $this->assertFalse(valid_number_step(-100, 100 / 7));

  // Step mismatches very close to being valid.
  $this->assertFalse(valid_number_step(70 + 9e-7, 10 + 9e-7));
  $this->assertFalse(valid_number_step(1109.87, 0.07));
  $this->assertFalse(valid_number_step(41239412.11, 2));
  $this->assertFalse(valid_number_step(13517283.0001, 3));
}