+
+ template<>
+ template<>
+ void testobject::test<8>()
+ {
+ set_test_name("Check changePolicy - TO_CHEAP");
+
+ TARIFF_DATA td("test");
+ td.tariffConf.changePolicy = TARIFF::TO_CHEAP;
+ td.tariffConf.fee = 100;
+ TARIFF_IMPL tariff(td);
+
+ td.tariffConf.fee = 50;
+ TARIFF_IMPL cheaper(td);
+
+ ensure_equals("Allow cheaper", tariff.TariffChangeIsAllowed(cheaper).empty(), true);
+
+ td.tariffConf.fee = 100;
+ TARIFF_IMPL equal(td);
+
+ ensure_equals("Prohibit equal", tariff.TariffChangeIsAllowed(equal).empty(), false);
+
+ td.tariffConf.fee = 150;
+ TARIFF_IMPL expensive(td);
+
+ ensure_equals("Prohibit expensive", tariff.TariffChangeIsAllowed(expensive).empty(), false);
+ }
+
+ template<>
+ template<>
+ void testobject::test<9>()
+ {
+ set_test_name("Check changePolicy - TO_EXPENSIVE");
+
+ TARIFF_DATA td("test");
+ td.tariffConf.changePolicy = TARIFF::TO_EXPENSIVE;
+ td.tariffConf.fee = 100;
+ TARIFF_IMPL tariff(td);
+
+ td.tariffConf.fee = 50;
+ TARIFF_IMPL cheaper(td);
+
+ ensure_equals("Prohibit cheaper", tariff.TariffChangeIsAllowed(cheaper).empty(), false);
+
+ td.tariffConf.fee = 100;
+ TARIFF_IMPL equal(td);
+
+ ensure_equals("Allow equal", tariff.TariffChangeIsAllowed(equal).empty(), true);
+
+ td.tariffConf.fee = 150;
+ TARIFF_IMPL expensive(td);
+
+ ensure_equals("Allow expensive", tariff.TariffChangeIsAllowed(expensive).empty(), true);
+ }
+
+ template<>
+ template<>
+ void testobject::test<10>()
+ {
+ set_test_name("Check changePolicy - DENY");
+
+ TARIFF_DATA td("test");
+ td.tariffConf.changePolicy = TARIFF::DENY;
+ td.tariffConf.fee = 100;
+ TARIFF_IMPL tariff(td);
+
+ td.tariffConf.fee = 50;
+ TARIFF_IMPL cheaper(td);
+
+ ensure_equals("Prohibit cheaper", tariff.TariffChangeIsAllowed(cheaper).empty(), false);
+
+ td.tariffConf.fee = 100;
+ TARIFF_IMPL equal(td);
+
+ ensure_equals("Prohibit equal", tariff.TariffChangeIsAllowed(equal).empty(), false);
+
+ td.tariffConf.fee = 150;
+ TARIFF_IMPL expensive(td);
+
+ ensure_equals("Prohibit expensive", tariff.TariffChangeIsAllowed(expensive).empty(), false);
+ }