1
0
Fork 0
mirror of https://github.com/ruby-opencv/ruby-opencv synced 2023-03-27 23:22:12 -04:00

tested Trackbar

This commit is contained in:
ser1zw 2011-05-05 00:45:42 +09:00
parent e3bf41ffd2
commit 4813ec29bc
3 changed files with 65 additions and 23 deletions

View file

@ -48,18 +48,13 @@ void define_ruby_class(){
VALUE rb_allocate(VALUE klass) {
Trackbar *ptr;
return Data_Make_Struct(klass, Trackbar, mark, free, ptr);
return Data_Make_Struct(klass, Trackbar, trackbar_mark, 0, ptr);
}
void mark(void *ptr){
void trackbar_mark(void *ptr) {
rb_gc_mark(((Trackbar*)ptr)->block);
}
void free(void *ptr){
//::free(((Trackbar*)ptr)->name);
::free(ptr);
}
/*
* call-seq:
* new(<i>name,maxval[,val],&block</i>)
@ -73,7 +68,8 @@ void free(void *ptr){
VALUE rb_initialize(int argc, VALUE *argv, VALUE self) {
VALUE name, maxval, val, block;
rb_scan_args(argc, argv, "21&", &name, &maxval, &val, &block);
if(NIL_P(block)){rb_raise(rb_eArgError, "block not given.");}
if (NIL_P(block))
rb_raise(rb_eArgError, "block not given.");
Check_Type(name, T_STRING);
Trackbar *trackbar = TRACKBAR(self);
trackbar->name = strcpy(ALLOC_N(char, RSTRING_LEN(name)), StringValueCStr(name));

View file

@ -38,8 +38,7 @@ VALUE rb_class();
void define_ruby_class();
VALUE rb_allocate(VALUE klass);
void mark(void *ptr);
void free(void *ptr);
void trackbar_mark(void *ptr);
VALUE rb_initialize(int argc, VALUE *argv, VALUE self);
VALUE rb_name(VALUE self);

47
test/test_trackbar.rb Executable file
View file

@ -0,0 +1,47 @@
#!/usr/bin/env ruby
# -*- mode: ruby; coding: utf-8-unix -*-
require 'test/unit'
require 'opencv'
require File.expand_path(File.dirname(__FILE__)) + '/helper'
include OpenCV
include GUI
# Tests for OpenCV::Trackbar
class TestTrackbar < OpenCVTestCase
def setup
@trackbar1 = Trackbar.new('trackbar1', 100) {}
@trackbar2 = Trackbar.new('trackbar1', 100, 1) {}
end
def test_initialize
assert_not_nil(Trackbar.new('trackbar', 100, 1) {})
assert_not_nil(Trackbar.new('trackbar', 100) {})
block = proc {}
assert_not_nil(Trackbar.new('trackbar', 100, 1, &block))
assert_not_nil(Trackbar.new('trackbar', 100, &block))
assert_raise(TypeError) {
Trackbar.new(123, 100, 1) {}
}
assert_raise(ArgumentError) {
Trackbar.new('trackbar', 100, 1)
}
end
def test_name
assert_equal('trackbar1', @trackbar1.name)
end
def test_max
assert_equal(100, @trackbar1.max)
end
def test_value
assert_equal(0, @trackbar1.value)
assert_equal(1, @trackbar2.value)
@trackbar1.value = 50
assert_equal(50, @trackbar1.value)
end
end