#define BOOST_TEST_MODULE traffic intelligence

#include "Motion.hpp"
#include "testutils.hpp"

#include "opencv2/core/core.hpp"

#include <boost/test/unit_test.hpp>
#include <boost/test/floating_point_comparison.hpp>

using namespace std;
using namespace cv;

BOOST_AUTO_TEST_SUITE(test_feature)

BOOST_AUTO_TEST_CASE(feature_similarity) {
  FeatureTrajectoryPtr ft1 = createFeatureTrajectory(1, 10, 20, Point2f(1,1), Point2f(0, 1));
  FeatureTrajectoryPtr ft2 = createFeatureTrajectory(2, 10, 20, Point2f(2,1), Point2f(0, 1));

  BOOST_CHECK(!ft1->minMaxSimilarity(*ft2, 10, 20, 0.5, 0.1));
  BOOST_CHECK(ft1->minMaxSimilarity(*ft2, 10, 20, 1, 0.1));

  ft2 = createFeatureTrajectory(2, 10, 19, Point2f(1,1), Point2f(0, 1));
  Mat homography;
  ft2->addPoint(20, Point2f(1,11.5), homography);
  
  BOOST_CHECK(!ft1->minMaxSimilarity(*ft2, 10, 20, 0, 0.4));
  BOOST_CHECK(ft1->minMaxSimilarity(*ft2, 10, 20, 0, 0.5));
}

BOOST_AUTO_TEST_SUITE_END()
