void testGeneratedData20()
    {
      DataFrame df;
      generatedData20(df);

      GreedyStepwiseSearch uut;
      shared_ptr<ConsistencySubsetEvaluator> evaluator(new ConsistencySubsetEvaluator());
      uut.setEvaluator(evaluator);

      // this has been validated against weka
      vector<string> result = uut.findSubset(df);
      CPPUNIT_ASSERT_EQUAL((int)result.size(), 3);
      // order isn't important here, but easy
      CPPUNIT_ASSERT_EQUAL(result[0], string("age"));
      CPPUNIT_ASSERT_EQUAL(result[1], string("elevel"));
      CPPUNIT_ASSERT_EQUAL(result[2], string("car"));

      generatedData1000(df);
      // these results have been validated against weka
      result = uut.findSubset(df);
      CPPUNIT_ASSERT_EQUAL((int)result.size(), 5);
      // order isn't important here, but easy
      CPPUNIT_ASSERT_EQUAL(result[0], string("salary"));
      CPPUNIT_ASSERT_EQUAL(result[1], string("commission"));
      CPPUNIT_ASSERT_EQUAL(result[2], string("elevel"));
      CPPUNIT_ASSERT_EQUAL(result[3], string("car"));
      CPPUNIT_ASSERT_EQUAL(result[4], string("zipcode"));
    }
    void testGeneratedData1000()
    {
      DataFrame df;
      generatedData1000(df);

      GreedyStepwiseSearch uut;
      shared_ptr<CfsSubsetEvaluator> evaluator(new CfsSubsetEvaluator());
      uut.setEvaluator(evaluator);

      // this has been validated against weka
      vector<string> result = uut.findSubset(df);
//       for (unsigned int i = 0; i < result.size(); i++)
//       {
//         cout << result[i] << endl;
//       }
      CPPUNIT_ASSERT_EQUAL((int)result.size(), 1);
      // order isn't important here, but easy
      CPPUNIT_ASSERT_EQUAL(result[0], string("salary"));
    }