Added test and fixed constructor
parent
6cd3eeb692
commit
0631193415
|
|
@ -470,7 +470,7 @@ namespace gtsam {
|
||||||
std::function<Y(const X&)> Y_of_X) {
|
std::function<Y(const X&)> Y_of_X) {
|
||||||
// Define functor for identity mapping of node label.
|
// Define functor for identity mapping of node label.
|
||||||
auto L_of_L = [](const L& label) { return label; };
|
auto L_of_L = [](const L& label) { return label; };
|
||||||
root_ = convertFrom<L, X>(Y_of_X, L_of_L);
|
root_ = convertFrom<L, X>(other.root_, L_of_L, Y_of_X);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*********************************************************************************/
|
/*********************************************************************************/
|
||||||
|
|
|
||||||
|
|
@ -230,13 +230,37 @@ TEST(DT, example)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ******************************************************************************** */
|
/* ******************************************************************************** */
|
||||||
// test Conversion
|
// test Conversion of values
|
||||||
|
std::function<bool(const int&)> bool_of_int = [](const int& y) {
|
||||||
|
return y != 0;
|
||||||
|
};
|
||||||
|
typedef DecisionTree<string, bool> StringBoolTree;
|
||||||
|
|
||||||
|
TEST(DT, ConvertValuesOnly)
|
||||||
|
{
|
||||||
|
// Create labels
|
||||||
|
string A("A"), B("B");
|
||||||
|
|
||||||
|
// apply, two nodes, in natural order
|
||||||
|
DT f1 = apply(DT(A, 0, 5), DT(B, 5, 0), &Ring::mul);
|
||||||
|
|
||||||
|
// convert
|
||||||
|
StringBoolTree f2(f1, bool_of_int);
|
||||||
|
|
||||||
|
// Check a value
|
||||||
|
Assignment<string> x00;
|
||||||
|
x00["A"] = 0, x00["B"] = 0;
|
||||||
|
EXPECT(!f2(x00));
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ******************************************************************************** */
|
||||||
|
// test Conversion of both values and labels.
|
||||||
enum Label {
|
enum Label {
|
||||||
U, V, X, Y, Z
|
U, V, X, Y, Z
|
||||||
};
|
};
|
||||||
typedef DecisionTree<Label, bool> BDT;
|
typedef DecisionTree<Label, bool> LabelBoolTree;
|
||||||
|
|
||||||
TEST(DT, conversion)
|
TEST(DT, ConvertBoth)
|
||||||
{
|
{
|
||||||
// Create labels
|
// Create labels
|
||||||
string A("A"), B("B");
|
string A("A"), B("B");
|
||||||
|
|
@ -248,12 +272,9 @@ TEST(DT, conversion)
|
||||||
map<string, Label> ordering;
|
map<string, Label> ordering;
|
||||||
ordering[A] = X;
|
ordering[A] = X;
|
||||||
ordering[B] = Y;
|
ordering[B] = Y;
|
||||||
std::function<bool(const int&)> bool_of_int = [](const int& y) {
|
LabelBoolTree f2(f1, ordering, bool_of_int);
|
||||||
return y != 0;
|
|
||||||
};
|
|
||||||
BDT f2(f1, ordering, bool_of_int);
|
|
||||||
|
|
||||||
// create a value
|
// Check some values
|
||||||
Assignment<Label> x00, x01, x10, x11;
|
Assignment<Label> x00, x01, x10, x11;
|
||||||
x00[X] = 0, x00[Y] = 0;
|
x00[X] = 0, x00[Y] = 0;
|
||||||
x01[X] = 0, x01[Y] = 1;
|
x01[X] = 0, x01[Y] = 1;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue