Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения

tolerance (decorator)

Boost , Boost.Test , Reference API for writing tests

Boost C++ Libraries

...one of the most highly regarded and expertly designed C++ library projects in the world. Herb Sutter and Andrei Alexandrescu, C++ Coding Standards

PrevUpHomeNext
template <typename FPT>
  tolerance(FPT eps);
template <typename FPT>
  tolerance(test_tools::fpc::percent_tolerance_t<FPT> eps)

Декоратор<tolerance>указывает допуск сравнения по умолчанию для типа с плавающей точкой<FTP>в декорированном испытательном блоке. Допуск по умолчанию применяется только к определенному типу, поэтому имеет смысл предоставить более одного декоратора, если мы сравниваем различные типы плавающих точек. Подробнее см. __floating_points_testing_impl__. Вариант с<percent_tolerance>использует значение<eps/100>в качестве допуска.

Example: decorator tolerance

Код

<
#defineBOOST_TEST_MODULEdecorator_13
#include<boost/test/included/unit_test.hpp>
namespaceutf=boost::unit_test;
namespacefpc=boost::test_tools::fpc;
BOOST_AUTO_TEST_CASE(test1,*utf::tolerance(0.0005))
{
 BOOST_TEST(0.001==0.000);
 BOOST_TEST(1.100==1.101);
}
BOOST_AUTO_TEST_CASE(test2,*utf::tolerance(0.005))
{
 BOOST_TEST(0.001==0.000);
 BOOST_TEST(1.100==1.101);
}
BOOST_AUTO_TEST_CASE(test3,*utf::tolerance(0.05F))
{
 BOOST_TEST(0.001==0.000);
 BOOST_TEST(1.100==1.101);
}
BOOST_AUTO_TEST_CASE(test4,
 *utf::tolerance(fpc::percent_tolerance(0.05)))
{
 BOOST_TEST(0.001==0.000);
 BOOST_TEST(1.100==1.101);
}
BOOST_AUTO_TEST_CASE(test5,
 *utf::tolerance(fpc::percent_tolerance(0.5)))
{
 BOOST_TEST(0.001==0.000);
 BOOST_TEST(1.100==1.101);
}
>

выход

<
>decorator_13
Running5testcases...
test.cpp(9):error:in"test1":check0.001==0.000hasfailed[0.001!=0].Absolutevalueexceedstolerance[|0.001|>0.0005]
test.cpp(10):error:in"test1":check1.100==1.101hasfailed[1.1000000000000001!=1.101].Relativedifferenceexceedstolerance[0.000908265>0.0005]
test.cpp(21):error:in"test3":check0.001==0.000hasfailed[0.001!=0].Absolutevalueexceedstolerance[|0.001|>0]
test.cpp(22):error:in"test3":check1.100==1.101hasfailed[1.1000000000000001!=1.101]
test.cpp(28):error:in"test4":check0.001==0.000hasfailed[0.001!=0].Absolutevalueexceedstolerance[|0.001|>0.0005]
test.cpp(29):error:in"test4":check1.100==1.101hasfailed[1.1000000000000001!=1.101].Relativedifferenceexceedstolerance[0.000908265>0.0005]
***6failuresaredetectedinthetestmodule"decorator_13"
>

В приведенном выше примере в<test1>проверка на<double>терпит неудачу, потому что они отличаются больше тем, что указывает толерантность к<double>. В<test2>терпимость к<double>s больше, и поэтому проверки успешны. В<test3>мы указываем только допуск по типу<float>, а поскольку при проверках используется тип<double>, указанный допуск не применяется. Толерантность в<test4>эквивалентна таковой в<test1>, поэтому ее проверки также терпят неудачу. Толерантность в<test5>эквивалентна таковой в<test2>, поэтому ее проверки также успешны.


PrevUpHomeNext

Статья tolerance (decorator) раздела Boost.Test Reference API for writing tests может быть полезна для разработчиков на c++ и boost.




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Reference API for writing tests ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-30 11:47:00
2025-07-05 04:43:26/0.0042619705200195/0