Я туплю или SimpleTest ?

whirlwind

TDD infected, paranoid
Я туплю или SimpleTest ?

Ткните носом чего я не вижу, а то я кажись уработался

PHP:
$this->assertEqual( (float)$o->total_amount, (float)$total );
1) Equal expectation fails because [Float: 339.83] differs from [Float: 339.83] by 5.68434188608E-014 at line [106]
in testOrderSimple
in OrderTest
in E:\sites\cmf.test\htdocs\classes\test/unit_test/order.php

PHP:
$this->assertEqual( $o->total_amount, $total );
1) Equal expectation fails at character 6 with [339.83] and [339.83] at line [106]
in testOrderSimple
in OrderTest
in E:\sites\cmf.test\htdocs\classes\test/unit_test/order.php

-~{}~ 21.02.06 14:18:

Пипец, а так прокатывает. Мистика.

PHP:
$this->assertEqual( (string)$o->total_amount, (string)$total );
 

itprog

Cruftsman
Ничего не мистика, видимо проверяемое значение берется из базы, где точность выше,
кстати 5.68434188608E-014 это ~ 0.000000000000057
 

whirlwind

TDD infected, paranoid
Не, в базе намерик стандартный 13.2

>Equal expectation fails at character 6 with [339.83] and [339.83] at line [106]

А это? Ведь пишет, зараза, правильно. Я уж подумал, что мне глаза отказали.
 

itprog

Cruftsman
Как вариант сделать округление дробной части в коде и в тестах
 

slach

Новичок
хреновый вариант
сначала надо покурить

var_dump($o->total_amount);
var_dump($total);
 

whirlwind

TDD infected, paranoid
beg dumping
string(6) "339.83"
float(339.83)
end dumping
OK

Да я давно уже заметил, что кусок от float теряется в случае привидения к строке. Просто написано же "fails at character 6" вот я и подумал, что ST приводит к типу первого операнда. А он оказываецца сам себе на уме.
 

slach

Новичок
еще можно так попробовать
$this->assertEqual( dobuleval($o->total_amount), doubleval($total) );
 

Wicked

Новичок
а еще можно смотреть, что эти 2 числа отличаются не больше, чем на epsilon (= 1.0E-010, например)
 
Сверху