mirror of
https://github.com/ruby-opencv/ruby-opencv
synced 2023-03-27 23:22:12 -04:00
295 lines
7.8 KiB
Ruby
Executable file
295 lines
7.8 KiB
Ruby
Executable file
#!/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::CvSeq
|
|
class TestCvSeq < OpenCVTestCase
|
|
def test_initialize
|
|
# assert_not_nil(CvSeq.new(CvIndex))
|
|
assert_not_nil(CvSeq.new(Fixnum))
|
|
assert_not_nil(CvSeq.new(CvPoint))
|
|
assert_not_nil(CvSeq.new(CvPoint2D32f))
|
|
assert_not_nil(CvSeq.new(CvPoint3D32f))
|
|
|
|
assert(CvSeq.new(CvPoint).is_a? Enumerable)
|
|
end
|
|
|
|
def test_total
|
|
seq1 = CvSeq.new(CvPoint)
|
|
assert_equal(0, seq1.total)
|
|
|
|
seq1.push(CvPoint.new(1, 2))
|
|
assert_equal(1, seq1.total)
|
|
|
|
seq1.push(CvPoint.new(3, 4))
|
|
assert_equal(2, seq1.total)
|
|
# Alias
|
|
assert_equal(2, seq1.length)
|
|
assert_equal(2, seq1.size)
|
|
end
|
|
|
|
def test_empty
|
|
assert(CvSeq.new(CvPoint).empty?)
|
|
assert(CvSeq.new(CvPoint2D32f).empty?)
|
|
assert(CvSeq.new(CvPoint3D32f).empty?)
|
|
end
|
|
|
|
def test_aref
|
|
seq1 = CvSeq.new(CvPoint).push(CvPoint.new(10, 20), CvPoint.new(30, 40), CvPoint.new(50, 60))
|
|
|
|
assert_equal(CvPoint, seq1[0].class)
|
|
assert_equal(10, seq1[0].x)
|
|
assert_equal(20, seq1[0].y)
|
|
assert_equal(30, seq1[1].x)
|
|
assert_equal(40, seq1[1].y)
|
|
assert_equal(50, seq1[2].x)
|
|
assert_equal(60, seq1[2].y)
|
|
|
|
seq2 = CvSeq.new(Fixnum).push(10, 20, 30)
|
|
|
|
assert_equal(Fixnum, seq2[0].class)
|
|
assert_equal(10, seq2[0])
|
|
assert_equal(20, seq2[1])
|
|
assert_equal(30, seq2[2])
|
|
end
|
|
|
|
def test_push
|
|
seq1 = CvSeq.new(CvPoint).push(CvPoint.new(10, 20), CvPoint.new(30, 40))
|
|
|
|
assert_equal(2, seq1.total)
|
|
assert_equal(CvPoint, seq1[0].class)
|
|
assert_equal(10, seq1[0].x)
|
|
assert_equal(20, seq1[0].y)
|
|
assert_equal(CvPoint, seq1[1].class)
|
|
assert_equal(30, seq1[1].x)
|
|
assert_equal(40, seq1[1].y)
|
|
|
|
seq2 = CvSeq.new(CvPoint).push(CvPoint.new(50, 60))
|
|
seq2.push(seq1)
|
|
assert_equal(3, seq2.total)
|
|
assert_equal(CvPoint, seq2[0].class)
|
|
assert_equal(50, seq2[0].x)
|
|
assert_equal(60, seq2[0].y)
|
|
assert_equal(CvPoint, seq2[1].class)
|
|
assert_equal(10, seq2[1].x)
|
|
assert_equal(20, seq2[1].y)
|
|
assert_equal(CvPoint, seq2[2].class)
|
|
assert_equal(30, seq2[2].x)
|
|
assert_equal(40, seq2[2].y)
|
|
|
|
seq3 = CvSeq.new(Fixnum).push(10)
|
|
seq4 = CvSeq.new(Fixnum).push(20, 30)
|
|
seq3.push(seq4)
|
|
assert_equal(3, seq3.total)
|
|
assert_equal(Fixnum, seq3[0].class)
|
|
assert_equal(10, seq3[0])
|
|
assert_equal(20, seq3[1])
|
|
assert_equal(30, seq3[2])
|
|
|
|
assert_raise(TypeError) {
|
|
seq1.push(CvPoint2D32f.new(55.5, 66.6))
|
|
}
|
|
|
|
assert_raise(TypeError) {
|
|
seq3 = CvSeq.new(CvPoint2D32f).push(CvPoint2D32f.new(55.5, 66.6))
|
|
seq1.push(seq3)
|
|
}
|
|
end
|
|
|
|
def test_pop
|
|
seq1 = CvSeq.new(CvPoint).push(CvPoint.new(10, 20), CvPoint.new(30, 40))
|
|
point1 = seq1.pop
|
|
assert_equal(CvPoint, point1.class)
|
|
assert_equal(30, point1.x)
|
|
assert_equal(40, point1.y)
|
|
|
|
assert_equal(1, seq1.total)
|
|
assert_equal(CvPoint, seq1[0].class)
|
|
assert_equal(10, seq1[0].x)
|
|
assert_equal(20, seq1[0].y)
|
|
|
|
assert_nil(CvSeq.new(CvPoint).pop)
|
|
|
|
seq2 = CvSeq.new(Fixnum).push(10, 20, 30)
|
|
assert_equal(30, seq2.pop)
|
|
assert_equal(20, seq2.pop)
|
|
assert_equal(10, seq2.pop)
|
|
end
|
|
|
|
def test_clear
|
|
seq1 = CvSeq.new(CvPoint).push(CvPoint.new(10, 20), CvPoint.new(30, 40))
|
|
seq1.clear
|
|
assert_not_nil(seq1)
|
|
assert_equal(0, seq1.total)
|
|
end
|
|
|
|
def test_unshift
|
|
seq1 = CvSeq.new(CvPoint).unshift(CvPoint.new(10, 20), CvPoint.new(30, 40))
|
|
|
|
assert_equal(2, seq1.total)
|
|
assert_equal(CvPoint, seq1[0].class)
|
|
assert_equal(30, seq1[0].x)
|
|
assert_equal(40, seq1[0].y)
|
|
assert_equal(CvPoint, seq1[1].class)
|
|
assert_equal(10, seq1[1].x)
|
|
assert_equal(20, seq1[1].y)
|
|
|
|
seq2 = CvSeq.new(CvPoint).unshift(CvPoint.new(50, 60))
|
|
seq2.unshift(seq1)
|
|
assert_equal(3, seq2.total)
|
|
assert_equal(CvPoint, seq1[0].class)
|
|
assert_equal(30, seq1[0].x)
|
|
assert_equal(40, seq1[0].y)
|
|
assert_equal(CvPoint, seq1[1].class)
|
|
assert_equal(10, seq1[1].x)
|
|
assert_equal(20, seq1[1].y)
|
|
assert_equal(CvPoint, seq2[2].class)
|
|
assert_equal(50, seq2[2].x)
|
|
assert_equal(60, seq2[2].y)
|
|
|
|
seq3 = CvSeq.new(Fixnum).unshift(10, 20, 30)
|
|
assert_equal(3, seq3.total)
|
|
assert_equal(30, seq3[0])
|
|
assert_equal(20, seq3[1])
|
|
assert_equal(10, seq3[2])
|
|
|
|
assert_raise(TypeError) {
|
|
seq1.unshift(CvPoint2D32f.new(55.5, 66.6))
|
|
}
|
|
|
|
assert_raise(TypeError) {
|
|
seq3 = CvSeq.new(CvPoint2D32f).push(CvPoint2D32f.new(55.5, 66.6))
|
|
seq1.unshift(seq3)
|
|
}
|
|
end
|
|
|
|
def test_shift
|
|
seq1 = CvSeq.new(CvPoint).push(CvPoint.new(10, 20), CvPoint.new(30, 40))
|
|
point1 = seq1.shift
|
|
assert_equal(CvPoint, point1.class)
|
|
assert_equal(10, point1.x)
|
|
assert_equal(20, point1.y)
|
|
|
|
assert_equal(1, seq1.total)
|
|
assert_equal(CvPoint, seq1[0].class)
|
|
assert_equal(30, seq1[0].x)
|
|
assert_equal(40, seq1[0].y)
|
|
|
|
seq2 = CvSeq.new(Fixnum).push(10, 20, 30)
|
|
assert_equal(10, seq2.shift)
|
|
assert_equal(20, seq2.shift)
|
|
assert_equal(30, seq2.shift)
|
|
|
|
assert_nil(CvSeq.new(CvPoint).shift)
|
|
end
|
|
|
|
def test_first
|
|
seq1 = CvSeq.new(CvPoint).push(CvPoint.new(10, 20), CvPoint.new(30, 40), CvPoint.new(50, 60))
|
|
point1 = seq1.first
|
|
assert_equal(CvPoint, point1.class)
|
|
assert_equal(10, point1.x)
|
|
assert_equal(20, point1.y)
|
|
|
|
seq2 = CvSeq.new(Fixnum).push(10, 20, 30)
|
|
assert_equal(10, seq2.first)
|
|
end
|
|
|
|
def test_last
|
|
seq1 = CvSeq.new(CvPoint).push(CvPoint.new(10, 20), CvPoint.new(30, 40), CvPoint.new(50, 60))
|
|
point1 = seq1.last
|
|
assert_equal(CvPoint, point1.class)
|
|
assert_equal(50, point1.x)
|
|
assert_equal(60, point1.y)
|
|
|
|
seq2 = CvSeq.new(Fixnum).push(10, 20, 30)
|
|
assert_equal(30, seq2.last)
|
|
end
|
|
|
|
def test_each
|
|
seq1 = CvSeq.new(CvPoint).push(CvPoint.new(10, 20), CvPoint.new(30, 40), CvPoint.new(50, 60))
|
|
i = 0
|
|
seq1.each { |s|
|
|
assert_equal(CvPoint, s.class)
|
|
assert_equal(seq1[i].x, s.x)
|
|
assert_equal(seq1[i].y, s.y)
|
|
i += 1
|
|
}
|
|
assert_equal(3, i)
|
|
|
|
seq2 = CvSeq.new(Fixnum).push(10, 20, 30)
|
|
i = 0
|
|
seq2.each { |s|
|
|
assert_equal(seq2[i], s)
|
|
i += 1
|
|
}
|
|
assert_equal(3, i)
|
|
end
|
|
|
|
def test_each_index
|
|
seq1 = CvSeq.new(CvPoint).push(CvPoint.new(10, 20), CvPoint.new(30, 40), CvPoint.new(50, 60))
|
|
n = 0
|
|
seq1.each_index { |i|
|
|
assert_equal(n, i)
|
|
n += 1
|
|
}
|
|
assert_equal(3, n)
|
|
end
|
|
|
|
def test_insert
|
|
seq1 = CvSeq.new(CvPoint).push(CvPoint.new(10, 20), CvPoint.new(30, 40))
|
|
seq1.insert(1, CvPoint.new(50, 60))
|
|
assert_equal(3, seq1.total)
|
|
assert_equal(CvPoint, seq1[0].class)
|
|
assert_equal(10, seq1[0].x)
|
|
assert_equal(20, seq1[0].y)
|
|
assert_equal(CvPoint, seq1[1].class)
|
|
assert_equal(50, seq1[1].x)
|
|
assert_equal(60, seq1[1].y)
|
|
assert_equal(CvPoint, seq1[2].class)
|
|
assert_equal(30, seq1[2].x)
|
|
assert_equal(40, seq1[2].y)
|
|
|
|
seq2 = CvSeq.new(Fixnum).push(10, 20)
|
|
seq2.insert(1, 15)
|
|
assert_equal(3, seq2.total)
|
|
assert_equal(10, seq2[0])
|
|
assert_equal(15, seq2[1])
|
|
assert_equal(20, seq2[2])
|
|
end
|
|
|
|
def test_remove
|
|
seq1 = CvSeq.new(CvPoint).push(CvPoint.new(10, 20), CvPoint.new(30, 40), CvPoint.new(50, 60))
|
|
|
|
seq1.remove(1)
|
|
assert_equal(2, seq1.total)
|
|
assert_equal(CvPoint, seq1[0].class)
|
|
assert_equal(10, seq1[0].x)
|
|
assert_equal(20, seq1[0].y)
|
|
assert_equal(CvPoint, seq1[1].class)
|
|
assert_equal(50, seq1[1].x)
|
|
assert_equal(60, seq1[1].y)
|
|
end
|
|
|
|
# These methods are tested in TestCvMat_imageprocessing#test_find_contours
|
|
# (test_cvmat_imageprocessing.rb)
|
|
# def test_h_prev
|
|
# flunk('FIXME: CvSeq#h_prev is not tested yet.')
|
|
# end
|
|
|
|
# def test_h_next
|
|
# flunk('FIXME: CvSeq#h_next is not tested yet.')
|
|
# end
|
|
|
|
# def test_v_prev
|
|
# flunk('FIXME: CvSeq#v_prev is not tested yet.')
|
|
# end
|
|
|
|
# def test_v_next
|
|
# flunk('FIXME: CvSeq#v_next is not tested yet.')
|
|
# end
|
|
end
|
|
|