/**
*
* Copyright (c) 2005-2021 by Pierre-Henri WUILLEMIN(_at_LIP6) & Christophe GONZALES(_at_AMU)
* info_at_agrum_dot_org
*
* This library is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with this library. If not, see .
*
*/
#include
#include
#include
#include
#include
#include
#include
namespace gum_tests {
class DBTranslator4RangeVariableTestSuite: public CxxTest::TestSuite {
public:
void test_trans1() {
gum::learning::DBTranslator4RangeVariable<> translator;
TS_ASSERT(translator.isLossless())
TS_GUM_ASSERT_THROWS_NOTHING(translator.translate("3"));
TS_ASSERT_EQUALS(translator.translate("3").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"3");
TS_ASSERT_EQUALS(translator.missingValue().discr_val,
std::numeric_limits< std::size_t >::max());
TS_GUM_ASSERT_THROWS_NOTHING(translator.translate("5"));
TS_ASSERT_EQUALS(translator.translate("5").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator.translate("4").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"3");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"4");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"5");
TS_GUM_ASSERT_THROWS_NOTHING(translator.translate("1"));
TS_ASSERT_EQUALS(translator.translate("1").discr_val, (std::size_t)3)
TS_ASSERT_EQUALS(translator.translate("2").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{3}}),
"1");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{4}}),
"2");
TS_GUM_ASSERT_THROWS_NOTHING(translator.translate("-1"));
TS_ASSERT_EQUALS(translator.translate("-1").discr_val, (std::size_t)5)
TS_ASSERT_EQUALS(translator.translate("0").discr_val, (std::size_t)6)
TS_ASSERT_EQUALS(translator.translate("1").discr_val, (std::size_t)3)
TS_ASSERT_EQUALS(translator.translate("2").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator.translate("3").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator.translate("4").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator.translate("5").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"3");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"4");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"5");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{3}}),
"1");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{4}}),
"2");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{5}}),
"-1");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{6}}),
"0");
std::vector< std::string > missing{"2", "N/A", "20", "4", "xxx"};
gum::learning::DBTranslator4RangeVariable<> translator2(missing);
TS_ASSERT_EQUALS(translator2.translate("3").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator2.translate("2").discr_val,
std::numeric_limits< std::size_t >::max());
TS_ASSERT(translator2.translate("N/A").discr_val
== std::numeric_limits< std::size_t >::max());
TS_ASSERT(translator2.translate("xxx").discr_val
== std::numeric_limits< std::size_t >::max());
TS_ASSERT_THROWS(translator2.translate("yyy"), gum::TypeError)
TS_ASSERT_THROWS(translator2.translate("1"), gum::OperationNotAllowed)
TS_ASSERT_EQUALS(translator2.translate("5").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator2.translate("4").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator2.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"3");
TS_ASSERT_EQUALS(translator2.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"4");
TS_ASSERT_EQUALS(translator2.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"5");
gum::Set< std::string > possible_translated_miss{"N/A", "xxx"};
TS_ASSERT(possible_translated_miss.exists(translator2.translateBack(
gum::learning::DBTranslatedValue{std::numeric_limits< std::size_t >::max()})));
TS_ASSERT_EQUALS(translator2.needsReordering(), false)
const auto new_order = translator2.reorder();
TS_ASSERT_EQUALS(new_order.size(), (gum::Size)0)
gum::RangeVariable var("X2", "", 2, 3);
gum::learning::DBTranslator4RangeVariable<> translator3(var, missing, true);
TS_ASSERT_EQUALS(translator3.translate("2").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator3.translate("5").discr_val, (std::size_t)3)
TS_ASSERT_EQUALS(translator3.translate("4").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator3.translate("0").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator3.translate("1").discr_val, (std::size_t)5)
TS_ASSERT_EQUALS(translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"2");
TS_ASSERT_EQUALS(translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"3");
TS_ASSERT_EQUALS(translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"4");
TS_ASSERT_EQUALS(translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{3}}),
"5");
TS_ASSERT_EQUALS(translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{4}}),
"0");
TS_ASSERT_EQUALS(translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{5}}),
"1");
TS_ASSERT(translator3.needsReordering())
const auto new_order3 = translator3.reorder();
TS_ASSERT_EQUALS(new_order3[0], (std::size_t)2)
TS_ASSERT_EQUALS(new_order3[1], (std::size_t)3)
TS_ASSERT_EQUALS(new_order3[2], (std::size_t)4)
TS_ASSERT_EQUALS(new_order3[3], (std::size_t)5)
TS_ASSERT_EQUALS(new_order3[4], (std::size_t)0)
TS_ASSERT_EQUALS(new_order3[5], (std::size_t)1)
TS_ASSERT_EQUALS(translator3.translate("0").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator3.translate("1").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator3.translate("2").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator3.translate("3").discr_val, (std::size_t)3)
TS_ASSERT_EQUALS(translator3.translate("4").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator3.translate("5").discr_val, (std::size_t)5)
std::vector< std::string > missing2;
gum::learning::DBTranslator4RangeVariable<> translator4(var, missing2, true, 3);
TS_ASSERT_EQUALS(translator4.translate("2").discr_val, (std::size_t)0)
TS_ASSERT_THROWS(translator4.translate("5"), gum::SizeError)
TS_ASSERT_EQUALS(translator4.translate("4").discr_val, (std::size_t)2)
TS_ASSERT_THROWS(translator4.translate("0"), gum::SizeError)
TS_ASSERT_THROWS(translator4.translate("1"), gum::SizeError)
TS_ASSERT_EQUALS(translator4.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"2");
TS_ASSERT_EQUALS(translator4.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"3");
TS_ASSERT_EQUALS(translator4.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"4");
TS_ASSERT_THROWS(translator4.translateBack(gum::learning::DBTranslatedValue{std::size_t{3}}),
gum::UnknownLabelInDatabase);
}
void test_trans2() {
gum::learning::DBTranslator4RangeVariable< DebugCountedAlloc > translator;
TS_GUM_ASSERT_THROWS_NOTHING(translator.translate("3"));
TS_ASSERT_EQUALS(translator.translate("3").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"3");
TS_GUM_ASSERT_THROWS_NOTHING(translator.translate("5"));
TS_ASSERT_EQUALS(translator.translate("5").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator.translate("4").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"3");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"4");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"5");
TS_GUM_ASSERT_THROWS_NOTHING(translator.translate("1"));
TS_ASSERT_EQUALS(translator.translate("1").discr_val, (std::size_t)3)
TS_ASSERT_EQUALS(translator.translate("2").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{3}}),
"1");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{4}}),
"2");
TS_GUM_ASSERT_THROWS_NOTHING(translator.translate("-1"));
TS_ASSERT_EQUALS(translator.translate("-1").discr_val, (std::size_t)5)
TS_ASSERT_EQUALS(translator.translate("0").discr_val, (std::size_t)6)
TS_ASSERT_EQUALS(translator.translate("1").discr_val, (std::size_t)3)
TS_ASSERT_EQUALS(translator.translate("2").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator.translate("3").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator.translate("4").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator.translate("5").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"3");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"4");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"5");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{3}}),
"1");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{4}}),
"2");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{5}}),
"-1");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{6}}),
"0");
std::vector< std::string > missing{"2", "N/A", "20", "4", "xxx"};
gum::learning::DBTranslator4RangeVariable< DebugCountedAlloc > translator2(missing);
TS_ASSERT_EQUALS(translator2.translate("3").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator2.translate("2").discr_val,
std::numeric_limits< std::size_t >::max());
TS_ASSERT(translator2.translate("N/A").discr_val
== std::numeric_limits< std::size_t >::max());
TS_ASSERT(translator2.translate("xxx").discr_val
== std::numeric_limits< std::size_t >::max());
TS_ASSERT_THROWS(translator2.translate("yyy"), gum::TypeError)
TS_ASSERT_THROWS(translator2.translate("1"), gum::OperationNotAllowed)
TS_ASSERT_EQUALS(translator2.translate("5").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator2.translate("4").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator2.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"3");
TS_ASSERT_EQUALS(translator2.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"4");
TS_ASSERT_EQUALS(translator2.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"5");
gum::Set< std::string > possible_translated_miss{"N/A", "xxx"};
TS_ASSERT(possible_translated_miss.exists(translator2.translateBack(
gum::learning::DBTranslatedValue{std::numeric_limits< std::size_t >::max()})));
TS_ASSERT_EQUALS(translator2.needsReordering(), false)
const auto new_order = translator2.reorder();
TS_ASSERT_EQUALS(new_order.size(), (gum::Size)0)
gum::RangeVariable var("X2", "", 2, 3);
gum::learning::DBTranslator4RangeVariable< DebugCountedAlloc > translator3(var,
missing,
true);
TS_ASSERT_EQUALS(translator3.translate("2").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator3.translate("5").discr_val, (std::size_t)3)
TS_ASSERT_EQUALS(translator3.translate("4").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator3.translate("0").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator3.translate("1").discr_val, (std::size_t)5)
TS_ASSERT_EQUALS(translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"2");
TS_ASSERT_EQUALS(translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"3");
TS_ASSERT_EQUALS(translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"4");
TS_ASSERT_EQUALS(translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{3}}),
"5");
TS_ASSERT_EQUALS(translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{4}}),
"0");
TS_ASSERT_EQUALS(translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{5}}),
"1");
TS_ASSERT(translator3.needsReordering())
const auto new_order3 = translator3.reorder();
TS_ASSERT_EQUALS(new_order3[0], (std::size_t)2)
TS_ASSERT_EQUALS(new_order3[1], (std::size_t)3)
TS_ASSERT_EQUALS(new_order3[2], (std::size_t)4)
TS_ASSERT_EQUALS(new_order3[3], (std::size_t)5)
TS_ASSERT_EQUALS(new_order3[4], (std::size_t)0)
TS_ASSERT_EQUALS(new_order3[5], (std::size_t)1)
TS_ASSERT_EQUALS(translator3.translate("0").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator3.translate("1").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator3.translate("2").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator3.translate("4").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator3.translate("5").discr_val, (std::size_t)5)
TS_ASSERT_EQUALS(translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"0");
TS_ASSERT_EQUALS(translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"1");
TS_ASSERT_EQUALS(translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"2");
TS_ASSERT_EQUALS(translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{3}}),
"3");
TS_ASSERT_EQUALS(translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{4}}),
"4");
TS_ASSERT_EQUALS(translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{5}}),
"5");
std::vector< std::string > missing2;
gum::learning::DBTranslator4RangeVariable< DebugCountedAlloc > translator4(var,
missing2,
true,
3);
TS_ASSERT_EQUALS(translator4.translate("2").discr_val, (std::size_t)0)
TS_ASSERT_THROWS(translator4.translate("5"), gum::SizeError)
TS_ASSERT_EQUALS(translator4.translate("4").discr_val, (std::size_t)2)
TS_ASSERT_THROWS(translator4.translate("0"), gum::SizeError)
TS_ASSERT_THROWS(translator4.translate("1"), gum::SizeError)
TS_ASSERT_EQUALS(translator4.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"2");
TS_ASSERT_EQUALS(translator4.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"3");
TS_ASSERT_EQUALS(translator4.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"4");
TS_ASSERT_THROWS(translator4.translateBack(gum::learning::DBTranslatedValue{std::size_t{3}}),
gum::UnknownLabelInDatabase);
}
void test_trans4() {
{
gum::RangeVariable var("X1", "", 2, 3);
std::vector< std::string > missing;
gum::learning::DBTranslator4RangeVariable<> translator(var, missing, true);
TS_ASSERT_EQUALS(translator.translate("2").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator.translate("5").discr_val, (std::size_t)3)
TS_ASSERT_EQUALS(translator.translate("4").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator.translate("0").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator.translate("1").discr_val, (std::size_t)5)
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"2");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"3");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"4");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{3}}),
"5");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{4}}),
"0");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{5}}),
"1");
TS_ASSERT(translator.needsReordering())
const auto new_order = translator.reorder();
TS_ASSERT_EQUALS(new_order[0], (std::size_t)2)
TS_ASSERT_EQUALS(new_order[1], (std::size_t)3)
TS_ASSERT_EQUALS(new_order[2], (std::size_t)4)
TS_ASSERT_EQUALS(new_order[3], (std::size_t)5)
TS_ASSERT_EQUALS(new_order[4], (std::size_t)0)
TS_ASSERT_EQUALS(new_order[5], (std::size_t)1)
TS_ASSERT_EQUALS(translator.variable()->toString(), "X1:Range([0,5])")
gum::learning::DBTranslator4RangeVariable< DebugCountedAlloc > translator2(var,
missing,
true);
TS_ASSERT_EQUALS(translator2.translate("2").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator2.translate("5").discr_val, (std::size_t)3)
TS_ASSERT_EQUALS(translator2.translate("4").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator2.translate("0").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator2.translate("1").discr_val, (std::size_t)5)
TS_ASSERT_EQUALS(
translator2.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"2");
TS_ASSERT_EQUALS(
translator2.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"3");
TS_ASSERT_EQUALS(
translator2.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"4");
TS_ASSERT_EQUALS(
translator2.translateBack(gum::learning::DBTranslatedValue{std::size_t{3}}),
"5");
TS_ASSERT_EQUALS(
translator2.translateBack(gum::learning::DBTranslatedValue{std::size_t{4}}),
"0");
TS_ASSERT_EQUALS(
translator2.translateBack(gum::learning::DBTranslatedValue{std::size_t{5}}),
"1");
TS_ASSERT(translator2.needsReordering())
const auto new_order2 = translator2.reorder();
TS_ASSERT_EQUALS(new_order2[0], (std::size_t)2)
TS_ASSERT_EQUALS(new_order2[1], (std::size_t)3)
TS_ASSERT_EQUALS(new_order2[2], (std::size_t)4)
TS_ASSERT_EQUALS(new_order2[3], (std::size_t)5)
TS_ASSERT_EQUALS(new_order2[4], (std::size_t)0)
TS_ASSERT_EQUALS(new_order2[5], (std::size_t)1)
TS_ASSERT_EQUALS(translator2.variable()->toString(), "X1:Range([0,5])")
gum::learning::DBTranslator4RangeVariable<> translator3(
translator,
std::allocator< gum::learning::DBTranslatedValue >());
TS_ASSERT_EQUALS(translator3.translate("0").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator3.translate("1").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator3.translate("2").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator3.translate("4").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator3.translate("5").discr_val, (std::size_t)5)
TS_ASSERT_EQUALS(
translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"0");
TS_ASSERT_EQUALS(
translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"1");
TS_ASSERT_EQUALS(
translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"2");
TS_ASSERT_EQUALS(
translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{3}}),
"3");
TS_ASSERT_EQUALS(
translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{4}}),
"4");
TS_ASSERT_EQUALS(
translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{5}}),
"5");
gum::learning::DBTranslator4RangeVariable< DebugCountedAlloc > translator4(
translator2,
DebugCountedAlloc< gum::learning::DBTranslatedValue >());
TS_ASSERT_EQUALS(translator4.translate("0").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator4.translate("1").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator4.translate("2").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator4.translate("4").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator4.translate("5").discr_val, (std::size_t)5)
TS_ASSERT_EQUALS(
translator4.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"0");
TS_ASSERT_EQUALS(
translator4.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"1");
TS_ASSERT_EQUALS(
translator4.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"2");
TS_ASSERT_EQUALS(
translator4.translateBack(gum::learning::DBTranslatedValue{std::size_t{3}}),
"3");
TS_ASSERT_EQUALS(
translator4.translateBack(gum::learning::DBTranslatedValue{std::size_t{4}}),
"4");
TS_ASSERT_EQUALS(
translator4.translateBack(gum::learning::DBTranslatedValue{std::size_t{5}}),
"5");
gum::learning::DBTranslator4RangeVariable<> translator5(std::move(translator3));
TS_ASSERT_EQUALS(translator5.translate("0").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator5.translate("1").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator5.translate("2").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator5.translate("4").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator5.translate("5").discr_val, (std::size_t)5)
TS_ASSERT_EQUALS(
translator5.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"0");
TS_ASSERT_EQUALS(
translator5.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"1");
TS_ASSERT_EQUALS(
translator5.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"2");
TS_ASSERT_EQUALS(
translator5.translateBack(gum::learning::DBTranslatedValue{std::size_t{3}}),
"3");
TS_ASSERT_EQUALS(
translator5.translateBack(gum::learning::DBTranslatedValue{std::size_t{4}}),
"4");
TS_ASSERT_EQUALS(
translator5.translateBack(gum::learning::DBTranslatedValue{std::size_t{5}}),
"5");
gum::learning::DBTranslator4RangeVariable< DebugCountedAlloc > translator6(
std::move(translator4));
TS_ASSERT_EQUALS(translator6.translate("0").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator6.translate("1").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator6.translate("2").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator6.translate("4").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator6.translate("5").discr_val, (std::size_t)5)
TS_ASSERT_EQUALS(
translator6.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"0");
TS_ASSERT_EQUALS(
translator6.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"1");
TS_ASSERT_EQUALS(
translator6.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"2");
TS_ASSERT_EQUALS(
translator6.translateBack(gum::learning::DBTranslatedValue{std::size_t{3}}),
"3");
TS_ASSERT_EQUALS(
translator6.translateBack(gum::learning::DBTranslatedValue{std::size_t{4}}),
"4");
TS_ASSERT_EQUALS(
translator6.translateBack(gum::learning::DBTranslatedValue{std::size_t{5}}),
"5");
gum::learning::DBTranslator4RangeVariable< DebugCountedAlloc >* translator7
= translator6.clone();
TS_ASSERT_EQUALS(translator7->translate("0").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator7->translate("1").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator7->translate("2").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator7->translate("4").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator7->translate("5").discr_val, (std::size_t)5)
TS_ASSERT_EQUALS(
translator7->translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"0");
TS_ASSERT_EQUALS(
translator7->translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"1");
TS_ASSERT_EQUALS(
translator7->translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"2");
TS_ASSERT_EQUALS(
translator7->translateBack(gum::learning::DBTranslatedValue{std::size_t{3}}),
"3");
TS_ASSERT_EQUALS(
translator7->translateBack(gum::learning::DBTranslatedValue{std::size_t{4}}),
"4");
TS_ASSERT_EQUALS(
translator7->translateBack(gum::learning::DBTranslatedValue{std::size_t{5}}),
"5");
DebugCountedAlloc< gum::learning::DBTranslator4RangeVariable< DebugCountedAlloc > >
allocator(translator7->getAllocator());
allocator.destroy(translator7);
allocator.deallocate(translator7, 1);
translator4 = translator6;
TS_ASSERT_EQUALS(translator4.translate("0").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator4.translate("1").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator4.translate("2").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator4.translate("4").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator4.translate("5").discr_val, (std::size_t)5)
TS_ASSERT_EQUALS(
translator4.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"0");
TS_ASSERT_EQUALS(
translator4.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"1");
TS_ASSERT_EQUALS(
translator4.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"2");
TS_ASSERT_EQUALS(
translator4.translateBack(gum::learning::DBTranslatedValue{std::size_t{3}}),
"3");
TS_ASSERT_EQUALS(
translator4.translateBack(gum::learning::DBTranslatedValue{std::size_t{4}}),
"4");
TS_ASSERT_EQUALS(
translator4.translateBack(gum::learning::DBTranslatedValue{std::size_t{5}}),
"5");
translator3 = translator5;
TS_ASSERT_EQUALS(translator3.translate("0").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator3.translate("1").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator3.translate("2").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator3.translate("4").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator3.translate("5").discr_val, (std::size_t)5)
TS_ASSERT_EQUALS(
translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"0");
TS_ASSERT_EQUALS(
translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"1");
TS_ASSERT_EQUALS(
translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"2");
TS_ASSERT_EQUALS(
translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{3}}),
"3");
TS_ASSERT_EQUALS(
translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{4}}),
"4");
TS_ASSERT_EQUALS(
translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{5}}),
"5");
translator5 = std::move(translator3);
TS_ASSERT_EQUALS(translator5.translate("0").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator5.translate("1").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator5.translate("2").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator5.translate("4").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator5.translate("5").discr_val, (std::size_t)5)
TS_ASSERT_EQUALS(
translator5.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"0");
TS_ASSERT_EQUALS(
translator5.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"1");
TS_ASSERT_EQUALS(
translator5.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"2");
TS_ASSERT_EQUALS(
translator5.translateBack(gum::learning::DBTranslatedValue{std::size_t{3}}),
"3");
TS_ASSERT_EQUALS(
translator5.translateBack(gum::learning::DBTranslatedValue{std::size_t{4}}),
"4");
TS_ASSERT_EQUALS(
translator5.translateBack(gum::learning::DBTranslatedValue{std::size_t{5}}),
"5");
}
TS_ASSERT_EQUALS(CountedAlloc::hasMemoryLeak(), false)
}
void xtest_trans5() {
LearningAlloc< double > alloc(10000);
gum::learning::DBTranslator4RangeVariable< LearningAlloc > translator(1000, alloc);
TS_GUM_ASSERT_THROWS_NOTHING(translator.translate("3"));
TS_ASSERT_EQUALS(translator.translate("3").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"3");
TS_GUM_ASSERT_THROWS_NOTHING(translator.translate("5"));
TS_ASSERT_EQUALS(translator.translate("5").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator.translate("4").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"3");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"4");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"5");
TS_GUM_ASSERT_THROWS_NOTHING(translator.translate("1"));
TS_ASSERT_EQUALS(translator.translate("1").discr_val, (std::size_t)3)
TS_ASSERT_EQUALS(translator.translate("2").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{3}}),
"1");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{4}}),
"2");
TS_GUM_ASSERT_THROWS_NOTHING(translator.translate("-1"));
TS_ASSERT_EQUALS(translator.translate("-1").discr_val, (std::size_t)5)
TS_ASSERT_EQUALS(translator.translate("0").discr_val, (std::size_t)6)
TS_ASSERT_EQUALS(translator.translate("1").discr_val, (std::size_t)3)
TS_ASSERT_EQUALS(translator.translate("2").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator.translate("3").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator.translate("4").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator.translate("5").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"3");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"4");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"5");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{3}}),
"1");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{4}}),
"2");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{5}}),
"-1");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{6}}),
"0");
const auto& allocator = translator.getAllocator();
TS_ASSERT_EQUALS(allocator, alloc)
std::vector< std::string > missing{"2", "N/A", "20", "4", "xxx"};
gum::learning::DBTranslator4RangeVariable< LearningAlloc > translator2(missing);
TS_ASSERT_EQUALS(translator2.translate("3").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator2.translate("2").discr_val,
std::numeric_limits< std::size_t >::max());
TS_ASSERT(translator2.translate("N/A").discr_val
== std::numeric_limits< std::size_t >::max());
TS_ASSERT(translator2.translate("xxx").discr_val
== std::numeric_limits< std::size_t >::max());
TS_ASSERT_THROWS(translator2.translate("yyy"), gum::TypeError)
TS_ASSERT_THROWS(translator2.translate("1"), gum::OperationNotAllowed)
TS_ASSERT_EQUALS(translator2.translate("5").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator2.translate("4").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator2.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"3");
TS_ASSERT_EQUALS(translator2.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"4");
TS_ASSERT_EQUALS(translator2.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"5");
gum::Set< std::string > possible_translated_miss{"N/A", "xxx"};
TS_ASSERT(possible_translated_miss.exists(translator2.translateBack(
gum::learning::DBTranslatedValue{std::numeric_limits< std::size_t >::max()})));
TS_ASSERT_EQUALS(translator2.needsReordering(), false)
const auto new_order = translator2.reorder();
TS_ASSERT_EQUALS(new_order[0], (std::size_t)0)
TS_ASSERT_EQUALS(new_order[1], (std::size_t)1)
TS_ASSERT_EQUALS(new_order[2], (std::size_t)2)
gum::RangeVariable var("X2", "", 2, 3);
gum::learning::DBTranslator4RangeVariable< LearningAlloc > translator3(var, missing, true);
TS_ASSERT_EQUALS(translator3.translate("2").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator3.translate("5").discr_val, (std::size_t)3)
TS_ASSERT_EQUALS(translator3.translate("4").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator3.translate("0").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator3.translate("1").discr_val, (std::size_t)5)
TS_ASSERT_EQUALS(translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"2");
TS_ASSERT_EQUALS(translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"3");
TS_ASSERT_EQUALS(translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"4");
TS_ASSERT_EQUALS(translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{3}}),
"5");
TS_ASSERT_EQUALS(translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{4}}),
"0");
TS_ASSERT_EQUALS(translator3.translateBack(gum::learning::DBTranslatedValue{std::size_t{5}}),
"1");
TS_ASSERT(translator3.needsReordering())
const auto new_order3 = translator3.reorder();
TS_ASSERT_EQUALS(new_order3[0], (std::size_t)2)
TS_ASSERT_EQUALS(new_order3[1], (std::size_t)3)
TS_ASSERT_EQUALS(new_order3[2], (std::size_t)4)
TS_ASSERT_EQUALS(new_order3[3], (std::size_t)5)
TS_ASSERT_EQUALS(new_order3[4], (std::size_t)0)
TS_ASSERT_EQUALS(new_order3[5], (std::size_t)1)
std::vector< std::string > missing2;
gum::learning::DBTranslator4RangeVariable< LearningAlloc > translator4(var,
missing2,
true,
3);
TS_ASSERT_EQUALS(translator4.translate("2").discr_val, (std::size_t)0)
TS_ASSERT_THROWS(translator4.translate("5"), gum::SizeError)
TS_ASSERT_EQUALS(translator4.translate("4").discr_val, (std::size_t)2)
TS_ASSERT_THROWS(translator4.translate("0"), gum::SizeError)
TS_ASSERT_THROWS(translator4.translate("1"), gum::SizeError)
TS_ASSERT_EQUALS(translator4.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"2");
TS_ASSERT_EQUALS(translator4.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"3");
TS_ASSERT_EQUALS(translator4.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"4");
TS_ASSERT_THROWS(translator4.translateBack(gum::learning::DBTranslatedValue{std::size_t{3}}),
gum::UnknownLabelInDatabase);
translator4 = translator3;
TS_ASSERT_EQUALS(translator4.translate("2").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator4.translate("5").discr_val, (std::size_t)3)
TS_ASSERT_EQUALS(translator4.translate("4").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator4.translate("0").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator4.translate("1").discr_val, (std::size_t)5)
translator4 = std::move(translator3);
TS_ASSERT_EQUALS(translator4.translate("2").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator4.translate("5").discr_val, (std::size_t)3)
TS_ASSERT_EQUALS(translator4.translate("4").discr_val, (std::size_t)2)
TS_ASSERT_EQUALS(translator4.translate("0").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator4.translate("1").discr_val, (std::size_t)5)
gum::learning::DBTranslator4RangeVariable< LearningAlloc > translator5(translator);
TS_ASSERT_EQUALS(translator5.translate("-1").discr_val, (std::size_t)5)
TS_ASSERT_EQUALS(translator5.translate("0").discr_val, (std::size_t)6)
TS_ASSERT_EQUALS(translator5.translate("1").discr_val, (std::size_t)3)
TS_ASSERT_EQUALS(translator5.translate("2").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator5.translate("3").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator5.translate("4").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator5.translate("5").discr_val, (std::size_t)2)
gum::learning::DBTranslator4RangeVariable< LearningAlloc > translator6(std::move(translator));
TS_ASSERT_EQUALS(translator6.translate("-1").discr_val, (std::size_t)5)
TS_ASSERT_EQUALS(translator6.translate("0").discr_val, (std::size_t)6)
TS_ASSERT_EQUALS(translator6.translate("1").discr_val, (std::size_t)3)
TS_ASSERT_EQUALS(translator6.translate("2").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator6.translate("3").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator6.translate("4").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator6.translate("5").discr_val, (std::size_t)2)
gum::learning::DBTranslator4RangeVariable< LearningAlloc >* translator7 = translator6.clone();
TS_ASSERT_EQUALS(translator7->translate("-1").discr_val, (std::size_t)5)
TS_ASSERT_EQUALS(translator7->translate("0").discr_val, (std::size_t)6)
TS_ASSERT_EQUALS(translator7->translate("1").discr_val, (std::size_t)3)
TS_ASSERT_EQUALS(translator7->translate("2").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator7->translate("3").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator7->translate("4").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator7->translate("5").discr_val, (std::size_t)2)
LearningAlloc< gum::learning::DBTranslator4RangeVariable< LearningAlloc > > allocator2(
translator7->getAllocator());
allocator2.destroy(translator7);
allocator2.deallocate(translator7, 1);
translator5 = translator6;
TS_ASSERT_EQUALS(translator5.translate("-1").discr_val, (std::size_t)5)
TS_ASSERT_EQUALS(translator5.translate("0").discr_val, (std::size_t)6)
TS_ASSERT_EQUALS(translator5.translate("1").discr_val, (std::size_t)3)
TS_ASSERT_EQUALS(translator5.translate("2").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator5.translate("3").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator5.translate("4").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator5.translate("5").discr_val, (std::size_t)2)
translator3 = translator5;
TS_ASSERT_EQUALS(translator3.translate("-1").discr_val, (std::size_t)5)
TS_ASSERT_EQUALS(translator3.translate("0").discr_val, (std::size_t)6)
TS_ASSERT_EQUALS(translator3.translate("1").discr_val, (std::size_t)3)
TS_ASSERT_EQUALS(translator3.translate("2").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator3.translate("3").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator3.translate("4").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator3.translate("5").discr_val, (std::size_t)2)
translator5 = std::move(translator3);
TS_ASSERT_EQUALS(translator5.translate("-1").discr_val, (std::size_t)5)
TS_ASSERT_EQUALS(translator5.translate("0").discr_val, (std::size_t)6)
TS_ASSERT_EQUALS(translator5.translate("1").discr_val, (std::size_t)3)
TS_ASSERT_EQUALS(translator5.translate("2").discr_val, (std::size_t)4)
TS_ASSERT_EQUALS(translator5.translate("3").discr_val, (std::size_t)0)
TS_ASSERT_EQUALS(translator5.translate("4").discr_val, (std::size_t)1)
TS_ASSERT_EQUALS(translator5.translate("5").discr_val, (std::size_t)2)
}
void test_trans6() {
gum::RangeVariable var("X1", "", 2, 4);
std::vector< std::string > missing{"N/A", "3", "toto"};
gum::learning::DBTranslator4RangeVariable<> translator(var, missing, true);
TS_ASSERT_EQUALS(translator.needsReordering(), false)
TS_ASSERT_EQUALS(translator.domainSize(), (gum::Size)3)
TS_ASSERT_EQUALS((translator << "7").discr_val, (std::size_t)5)
TS_ASSERT_EQUALS((translator >> gum::learning::DBTranslatedValue{std::size_t{5}}), "7")
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{0}}),
"2");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{1}}),
"3");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{2}}),
"4");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{3}}),
"5");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{4}}),
"6");
TS_ASSERT_EQUALS(translator.translateBack(gum::learning::DBTranslatedValue{std::size_t{5}}),
"7");
TS_ASSERT((translator.translateBack(
gum::learning::DBTranslatedValue{std::numeric_limits< std::size_t >::max()})
== "N/A")
|| (translator.translateBack(
gum::learning::DBTranslatedValue{std::numeric_limits< std::size_t >::max()})
== "toto"));
gum::Set< std::string > missing_kept{"N/A", "toto"};
TS_ASSERT_EQUALS(translator.missingSymbols(), missing_kept)
}
};
} /* namespace gum_tests */