Skip to content

Commit 96320ce

Browse files
authored
Merge pull request #32 from Watson1978/support-implicit-conversion
Support implicit conversion
2 parents dd1e7ff + 864c054 commit 96320ce

File tree

2 files changed

+33
-2
lines changed

2 files changed

+33
-2
lines changed

ext/zstdruby/zstdruby.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ static VALUE compress(int argc, VALUE *argv, VALUE self)
1313
VALUE compression_level_value;
1414
rb_scan_args(argc, argv, "11", &input_value, &compression_level_value);
1515

16-
Check_Type(input_value, RUBY_T_STRING);
16+
StringValue(input_value);
1717
const char* input_data = RSTRING_PTR(input_value);
1818
size_t input_size = RSTRING_LEN(input_value);
1919

@@ -81,7 +81,7 @@ static VALUE decompress_buffered(const char* input_data, size_t input_size)
8181

8282
static VALUE decompress(VALUE self, VALUE input)
8383
{
84-
Check_Type(input, T_STRING);
84+
StringValue(input);
8585
const char* input_data = RSTRING_PTR(input);
8686
size_t input_size = RSTRING_LEN(input);
8787

spec/zstd-ruby_spec.rb

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,23 @@
2424
expect(compressed).to be_a(String)
2525
expect(compressed).to_not eq('abc')
2626
end
27+
28+
it 'should raise exception with unsupported object' do
29+
expect { Zstd.compress(Object.new) }.to raise_error(TypeError)
30+
end
31+
32+
class DummyForCompress
33+
def to_str
34+
'abc'
35+
end
36+
end
37+
38+
it 'should convert object implicitly' do
39+
compressed = Zstd.compress(DummyForCompress.new)
40+
expect(compressed).to be_a(String)
41+
decompressed = Zstd.decompress(compressed)
42+
expect(decompressed).to eq('abc')
43+
end
2744
end
2845

2946
describe 'decompress' do
@@ -39,6 +56,20 @@
3956
decompressed = Zstd.decompress(compressed)
4057
expect(decompressed).to eq('')
4158
end
59+
60+
it 'should raise exception with unsupported object' do
61+
expect { Zstd.decompress(Object.new) }.to raise_error(TypeError)
62+
end
63+
64+
class DummyForDecompress
65+
def to_str
66+
Zstd.compress('abc')
67+
end
68+
end
69+
70+
it 'should convert object implicitly' do
71+
expect(Zstd.decompress(DummyForDecompress.new)).to eq('abc')
72+
end
4273
end
4374
end
4475

0 commit comments

Comments
 (0)