#!/usr/bin/env ruby
# -*- mode: ruby; coding: utf-8 -*-
require 'test/unit'
require 'opencv'
require File.expand_path(File.dirname(__FILE__)) + '/helper'

include OpenCV

# Tests for OpenCV::CvContourTree
class TestCvContourTree < OpenCVTestCase
  def setup
    @tree = CvContourTree.new(CvPoint)
  end

  def test_initialize
    tree = CvContourTree.new(CvPoint)
    assert_equal(CvContourTree, tree.class)
    assert(tree.is_a? CvSeq)
  end

  def test_p1
    assert_equal(CvPoint, @tree.p1.class)
  end

  def test_p2
    assert_equal(CvPoint, @tree.p2.class)
  end

  def test_contour
    mat0 = create_cvmat(128, 128, :cv8u, 1) { |j, i|
      (j - 64) ** 2 + (i - 64) ** 2 <= (32 ** 2) ? CvColor::White : CvColor::Black
    }
    contour = mat0.find_contours
    tree = contour.create_tree
    contour = tree.contour(CvTermCriteria.new(100, 0.01))
    assert_equal(CvContour, contour.class)

    assert_raise(CvStsBadArg) {
      tree.contour(CvTermCriteria.new(0, 0))
    }
  end
end

