MDL-72329 phpunit: Avoid === on floats and raw reserved word

In general it's a bad idea to compare floats with ===,
because depending of different systems precision, can
come to mismatches after certain decimal position.

So we replace them by:

- assetIsFloat() : to verify the type.
- assertEqualsWithDelta() : to compare values with some delta allowed.

Also, "raw" is Oracle reserved word, so renaming to "someraw" in tests.
This commit is contained in:
Eloy Lafuente (stronk7) 2021-10-01 16:58:45 +02:00
parent bd12395717
commit e4f33b837c

View file

@ -83,7 +83,7 @@ class core_persistent_testcase extends advanced_testcase {
$table->add_field('intnull', XMLDB_TYPE_INTEGER, '10', null, null, null, null); $table->add_field('intnull', XMLDB_TYPE_INTEGER, '10', null, null, null, null);
$table->add_field('somefloat', XMLDB_TYPE_FLOAT, '10,5', null, null, null, null); $table->add_field('somefloat', XMLDB_TYPE_FLOAT, '10,5', null, null, null, null);
$table->add_field('sometext', XMLDB_TYPE_TEXT, null, null, null, null, null); $table->add_field('sometext', XMLDB_TYPE_TEXT, null, null, null, null, null);
$table->add_field('raw', XMLDB_TYPE_CHAR, '100', null, null, null, null); $table->add_field('someraw', XMLDB_TYPE_CHAR, '100', null, null, null, null);
$table->add_field('booltrue', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, '0'); $table->add_field('booltrue', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, '0');
$table->add_field('boolfalse', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, '0'); $table->add_field('boolfalse', XMLDB_TYPE_INTEGER, '1', null, XMLDB_NOTNULL, null, '0');
$table->add_field('timecreated', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null); $table->add_field('timecreated', XMLDB_TYPE_INTEGER, '10', null, XMLDB_NOTNULL, null, null);
@ -479,7 +479,7 @@ class core_persistent_testcase extends advanced_testcase {
'intnull' => null, 'intnull' => null,
'somefloat' => 33.44, 'somefloat' => 33.44,
'sometext' => 'Hello', 'sometext' => 'Hello',
'raw' => '/dev/hello', 'someraw' => '/dev/hello',
'booltrue' => true, 'booltrue' => true,
'boolfalse' => false, 'boolfalse' => false,
]; ];
@ -488,9 +488,10 @@ class core_persistent_testcase extends advanced_testcase {
$this->assertSame($data['intnull'], $p->get('intnull')); $this->assertSame($data['intnull'], $p->get('intnull'));
$this->assertSame($data['someint'], $p->get('someint')); $this->assertSame($data['someint'], $p->get('someint'));
$this->assertSame($data['somefloat'], $p->get('somefloat')); $this->assertIsFloat($p->get('somefloat')); // Avoid === comparisons on floats, verify type and value separated.
$this->assertEqualsWithDelta($data['somefloat'], $p->get('somefloat'), 0.00001);
$this->assertSame($data['sometext'], $p->get('sometext')); $this->assertSame($data['sometext'], $p->get('sometext'));
$this->assertSame($data['raw'], $p->get('raw')); $this->assertSame($data['someraw'], $p->get('someraw'));
$this->assertSame($data['booltrue'], $p->get('booltrue')); $this->assertSame($data['booltrue'], $p->get('booltrue'));
$this->assertSame($data['boolfalse'], $p->get('boolfalse')); $this->assertSame($data['boolfalse'], $p->get('boolfalse'));
@ -499,9 +500,10 @@ class core_persistent_testcase extends advanced_testcase {
$this->assertSame($data['someint'], $p->get('someint')); $this->assertSame($data['someint'], $p->get('someint'));
$this->assertSame($data['intnull'], $p->get('intnull')); $this->assertSame($data['intnull'], $p->get('intnull'));
$this->assertSame($data['somefloat'], $p->get('somefloat')); $this->assertIsFloat($p->get('somefloat')); // Avoid === comparisons on floats, verify type and value separated.
$this->assertEqualsWithDelta($data['somefloat'], $p->get('somefloat'), 0.00001);
$this->assertSame($data['sometext'], $p->get('sometext')); $this->assertSame($data['sometext'], $p->get('sometext'));
$this->assertSame($data['raw'], $p->get('raw')); $this->assertSame($data['someraw'], $p->get('someraw'));
$this->assertSame($data['booltrue'], $p->get('booltrue')); $this->assertSame($data['booltrue'], $p->get('booltrue'));
$this->assertSame($data['boolfalse'], $p->get('boolfalse')); $this->assertSame($data['boolfalse'], $p->get('boolfalse'));
} }
@ -642,7 +644,7 @@ class core_testable_second_persistent extends \core\persistent {
'type' => PARAM_TEXT, 'type' => PARAM_TEXT,
'default' => '' 'default' => ''
], ],
'raw' => [ 'someraw' => [
'type' => PARAM_RAW, 'type' => PARAM_RAW,
'default' => '' 'default' => ''
], ],