methodfinalizer 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3,3 +3,9 @@
3
3
  * first release
4
4
 
5
5
  * Birthday!
6
+
7
+ === 0.6.0 / 2009-03-24
8
+
9
+ * added 2 methods
10
+
11
+ * added 'final_singleton_method_exists?' and 'final_instance_method_exists?'
@@ -139,6 +139,11 @@ module OOP
139
139
  end
140
140
  alias_method :get_final_class_methods, :get_final_singleton_methods
141
141
 
142
+ def final_singleton_method_exists?(method)
143
+ final_method_exists?(@@final_singleton_methods, method)
144
+ end
145
+ alias_method :final_class_method_exists?, :final_singleton_method_exists?
146
+
142
147
  # :stopdoc:
143
148
  def singleton_method_added(method_name)
144
149
  __method_added__(@@final_singleton_methods, method_name, 'class')
@@ -225,6 +230,10 @@ module OOP
225
230
  get_final_methods(@@final_instance_methods, sorted)
226
231
  end
227
232
 
233
+ def final_instance_method_exists?(method)
234
+ final_method_exists?(@@final_instance_methods, method)
235
+ end
236
+
228
237
  private
229
238
  def final_methods(final_methods, method_names, method_type = 'class')
230
239
  validations = validate_methods(final_methods, method_names, self)
@@ -309,7 +318,7 @@ module OOP
309
318
 
310
319
  def get_final_methods(final_methods, sorted=false)
311
320
  fm = []
312
- get_subclass_range(final_methods).each do |_class|
321
+ get_subclass_range.each do |_class|
313
322
  if final_methods[_class]
314
323
  final_methods[_class].each do |method|
315
324
  fm.concat method.keys
@@ -320,7 +329,7 @@ module OOP
320
329
  fm
321
330
  end
322
331
 
323
- def get_subclass_range(final_methods)
332
+ def get_subclass_range
324
333
  _ancestors = self.ancestors
325
334
  _ancestors.each do |a|
326
335
  if self.eql?(a)
@@ -331,10 +340,27 @@ module OOP
331
340
  end
332
341
  _ancestors
333
342
  end
343
+
344
+ def final_method_exists?(final_methods, method)
345
+ raise_error_when_argument_not_symbol(method)
346
+ ret, subclass_range = false, get_subclass_range
347
+ final_methods.each do |key,value|
348
+ if subclass_range.include?(key)
349
+ value.each do |m|
350
+ return true if m.has_key?(method)
351
+ end
352
+ end
353
+ end
354
+ ret
355
+ end
334
356
 
335
357
  def raise_error_when_method_names_empty_or_nil(method_names)
336
358
  raise ArgumentError.new("methods arguments missing.") if (method_names.empty? || method_names.nil?)
337
359
  end
360
+
361
+ def raise_error_when_argument_not_symbol(method)
362
+ raise ArgumentError.new("incorrect method argument type. It must be symbol") unless method.is_a?(Symbol)
363
+ end
338
364
  end
339
365
  end
340
366
  end
@@ -1,7 +1,7 @@
1
1
  module OOP
2
2
  module Concepts
3
3
  module FinalMethodVersion
4
- MAJOR, MINOR, TINY = 0, 5, 0
4
+ MAJOR, MINOR, TINY = 0, 6, 0
5
5
 
6
6
  FINAL_METHOD_VERSION = [MAJOR, MINOR, TINY].join('.')
7
7
  end
@@ -2,18 +2,6 @@ require 'test/unit'
2
2
  require 'test_classes_files/method_finalizer_usage'
3
3
 
4
4
  class TestMethodFinalizerUsage < Test::Unit::TestCase
5
- def test_get_final_singleton_methods
6
- assert Bb.respond_to?(:get_final_singleton_methods)
7
- assert_equal [:m_five, :m_one, :m_six, :m_two], Bb.get_final_singleton_methods(true)
8
- assert_equal [:m_one, :m_two], Aa.get_final_singleton_methods(true)
9
- end
10
-
11
- def test_get_final_instance_methods
12
- assert Bb.respond_to?(:get_final_instance_methods)
13
- assert_equal [:m_eight, :m_four, :m_seven, :m_three], Bb.get_final_instance_methods(true)
14
- assert_equal [:m_four, :m_three], Aa.get_final_instance_methods(true)
15
- end
16
-
17
5
  def test_final_class_methods
18
6
  assert_equal "'m_one' in Aa", Aa.m_one
19
7
  assert_equal "'m_two' in Aa", Aa.m_two
@@ -31,4 +19,42 @@ class TestMethodFinalizerUsage < Test::Unit::TestCase
31
19
  assert_equal "'m_seven' in Bb", Bb.new.m_seven
32
20
  assert_equal "'m_eight' in Bb", Bb.new.m_eight
33
21
  end
22
+
23
+ def test_get_final_singleton_methods
24
+ assert Bb.respond_to?(:get_final_singleton_methods)
25
+ assert_equal [:m_five, :m_one, :m_six, :m_two], Bb.get_final_singleton_methods(true)
26
+ assert_equal [:m_one, :m_two], Aa.get_final_singleton_methods(true)
27
+ end
28
+
29
+ def test_get_final_instance_methods
30
+ assert Bb.respond_to?(:get_final_instance_methods)
31
+ assert_equal [:m_eight, :m_four, :m_seven, :m_three], Bb.get_final_instance_methods(true)
32
+ assert_equal [:m_four, :m_three], Aa.get_final_instance_methods(true)
33
+ end
34
+
35
+ def test_singleton_method_exist
36
+ assert Bb.respond_to?(:final_singleton_method_exists?)
37
+ assert Bb.respond_to?(:final_class_method_exists?)
38
+ assert_raises ArgumentError do
39
+ Bb.final_singleton_method_exists?("m_five")
40
+ end
41
+ assert_raises ArgumentError do
42
+ Bb.final_singleton_method_exists?
43
+ end
44
+ assert Bb.final_singleton_method_exists?(:m_five)
45
+ assert !Aa.final_singleton_method_exists?(:m_five)
46
+ end
47
+
48
+ def test_instance_method_exist
49
+ assert Bb.respond_to?(:final_instance_method_exists?)
50
+ assert_raises ArgumentError do
51
+ Bb.final_instance_method_exists?("m_three")
52
+ end
53
+ assert_raises ArgumentError do
54
+ Bb.final_instance_method_exists?
55
+ end
56
+ assert Bb.final_instance_method_exists?(:m_three)
57
+ assert !Aa.final_instance_method_exists?(:m_seven)
58
+ assert !Bb.final_instance_method_exists?(:m_ten)
59
+ end
34
60
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: methodfinalizer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Wilfrido T. Nuqui Jr.
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-03-23 00:00:00 +08:00
12
+ date: 2009-03-24 00:00:00 +08:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency