diff options
-rw-r--r-- | mahoro.c | 9 | ||||
-rwxr-xr-x | test.rb | 11 |
2 files changed, 18 insertions, 2 deletions
@@ -8,6 +8,9 @@ #ifndef RSTRING_LEN # define RSTRING_LEN(s)->len #endif +#ifndef RSTRING_PTR +# define RSTRING_PTR(s)->ptr +#endif struct MagicCookie { @@ -91,8 +94,10 @@ mahoro_buffer(self, input) const char *msg; magic_t cookie = ((struct MagicCookie *) DATA_PTR(self))->cookie; - if(!(msg = magic_buffer(cookie, StringValuePtr(input), - RSTRING_LEN(StringValue(input))))) { + StringValue(input); + + if(!(msg = magic_buffer(cookie, RSTRING_PTR(input), + RSTRING_LEN(input)))) { rb_raise(eMahoroError, "failed lookup: %s", magic_error(cookie)); } @@ -32,6 +32,17 @@ class MahoroTestCase < Test::Unit::TestCase @m.buffer(File.read('mahoro.c'))) end + def test_buffer_string_convert + tmp = File.read('mahoro.c') + buf = Struct.new(:to_str).new(tmp) + assert_equal('ASCII C program text', @m.buffer(buf)) + end + + def test_buffer_invalid + @m.flags = Mahoro::NONE + assert_raises(TypeError) { @m.buffer @m } + end + def test_mime_buffer @m.flags = Mahoro::MIME assert({ |