Browse Source

* Improve type checking of arguments

tags/v0.99.beta14
Pascal Terjan pterjan 17 years ago
parent
commit
f3ce2dfd1a
2 changed files with 20 additions and 6 deletions
  1. +14
    -6
      ruby/cucul-canvas.c
  2. +6
    -0
      ruby/t/tc_canvas.rb

+ 14
- 6
ruby/cucul-canvas.c View File

@@ -202,13 +202,19 @@ static VALUE blit(int argc, VALUE* argv, VALUE self) {

Check_Type(x, T_FIXNUM);
Check_Type(y, T_FIXNUM);
//FIXME rather check that class is cCanvas
Check_Type(src, TYPE(self));

if(CLASS_OF(src) != cCanvas)
{
rb_raise(rb_eArgError, "src is not a Cucul::Canvas");
}
Data_Get_Struct(src, cucul_canvas_t, csrc);

if(!NIL_P(mask))
{
//FIXME rather check that class is cCanvas
Check_Type(mask, TYPE(self));
if(CLASS_OF(mask) != cCanvas)
{
rb_raise(rb_eArgError, "mask is not a Cucul::Canvas");
}
Data_Get_Struct(mask, cucul_canvas_t, cmask);
}
else
@@ -493,8 +499,10 @@ static VALUE render_canvas(VALUE self, VALUE font, VALUE width, VALUE height, VA
cucul_font_t *f;
VALUE b;

//FIXME rather check that class is cFont
Check_Type(font, TYPE(self));
if(CLASS_OF(font) != cFont)
{
rb_raise(rb_eArgError, "First argument is not a Cucul::Font");
}

buf = malloc(width*height*4);
if(buf == NULL)


+ 6
- 0
ruby/t/tc_canvas.rb View File

@@ -50,4 +50,10 @@ class TC_Canvas < Test::Unit::TestCase
f = Cucul::Font.new(Cucul::Font.list[0])
assert_not_nil(c.render(f, c.width*f.width, c.height*f.height, c.width*f.width*4))
end
def test_fail_render
c = Cucul::Canvas.new(4,4)
assert_raise(ArgumentError) {
c.render(nil, c.width, c.height, c.width*4)
}
end
end

Loading…
Cancel
Save