Add size to Map class (#8068)

pull/6451/head^2
miyucy 3 years ago committed by GitHub
parent dd3a6486cc
commit 3881f49ce9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 1
      ruby/ext/google/protobuf_c/map.c
  2. 2
      ruby/src/main/java/com/google/protobuf/jruby/RubyMap.java
  3. 16
      ruby/tests/basic.rb

@ -680,6 +680,7 @@ void Map_register(VALUE module) {
rb_define_method(klass, "delete", Map_delete, 1);
rb_define_method(klass, "clear", Map_clear, 0);
rb_define_method(klass, "length", Map_length, 0);
rb_define_method(klass, "size", Map_length, 0);
rb_define_method(klass, "dup", Map_dup, 0);
rb_define_method(klass, "==", Map_eq, 1);
rb_define_method(klass, "freeze", Map_freeze, 0);

@ -332,7 +332,7 @@ public class RubyMap extends RubyObject {
*
* Returns the number of entries (key-value pairs) in the map.
*/
@JRubyMethod
@JRubyMethod(name = {"length", "size"})
public IRubyObject length(ThreadContext context) {
return context.runtime.newFixnum(this.table.size());
}

@ -620,5 +620,21 @@ module BasicTest
assert_raise(FrozenErrorType) { m.map_string_int32.delete('a') }
assert_raise(FrozenErrorType) { m.map_string_int32.clear }
end
def test_map_length
m = proto_module::MapMessage.new
assert_equal 0, m.map_string_int32.length
assert_equal 0, m.map_string_msg.length
assert_equal 0, m.map_string_int32.size
assert_equal 0, m.map_string_msg.size
m.map_string_int32['a'] = 1
m.map_string_int32['b'] = 2
m.map_string_msg['a'] = proto_module::TestMessage2.new
assert_equal 2, m.map_string_int32.length
assert_equal 1, m.map_string_msg.length
assert_equal 2, m.map_string_int32.size
assert_equal 1, m.map_string_msg.size
end
end
end

Loading…
Cancel
Save