avl_tree 1.1.2 → 1.1.3

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.
@@ -57,6 +57,8 @@ class AVLTree
57
57
  @value = value
58
58
  when 1
59
59
  @right = @right.insert(key, value)
60
+ else
61
+ raise TypeError, "cannot compare #{key} and #{@key} with <=>"
60
62
  end
61
63
  rotate
62
64
  end
@@ -70,6 +72,8 @@ class AVLTree
70
72
  @value
71
73
  when 1
72
74
  @right.retrieve(key)
75
+ else
76
+ nil
73
77
  end
74
78
  end
75
79
 
@@ -84,6 +88,8 @@ class AVLTree
84
88
  when 1
85
89
  deleted, @right = @right.delete(key)
86
90
  [deleted, self.rotate]
91
+ else
92
+ raise TypeError, "cannot compare #{key} and #{@key} with <=>"
87
93
  end
88
94
  end
89
95
 
@@ -77,6 +77,8 @@ class RedBlackTree
77
77
  if black? and @left.black? and @right.red? and !@right.children_both_black?
78
78
  ret = rebalance_for_right_insert
79
79
  end
80
+ else
81
+ raise TypeError, "cannot compare #{key} and #{@key} with <=>"
80
82
  end
81
83
  ret.pullup_red
82
84
  end
@@ -90,6 +92,8 @@ class RedBlackTree
90
92
  @value
91
93
  when 1
92
94
  @right.retrieve(key)
95
+ else
96
+ nil
93
97
  end
94
98
  end
95
99
 
@@ -110,6 +114,8 @@ class RedBlackTree
110
114
  if rebalance
111
115
  ret, rebalance = rebalance_for_right_delete
112
116
  end
117
+ else
118
+ raise TypeError, "cannot compare #{key} and #{@key} with <=>"
113
119
  end
114
120
  [deleted, ret, rebalance]
115
121
  end
@@ -155,6 +155,15 @@ class TestAVLTree < Test::Unit::TestCase
155
155
  assert_equal 6, h.size
156
156
  end
157
157
 
158
+ def test_different_type
159
+ h = AVLTree.new
160
+ h['a'] = 1
161
+ assert_raise(TypeError) do
162
+ h[3.3] = 2
163
+ end
164
+ assert_nil h[3.3]
165
+ end
166
+
158
167
  def test_delete_leaf
159
168
  h = AVLTree.new
160
169
  h['b'] = 1
@@ -307,6 +316,17 @@ class TestAVLTree < Test::Unit::TestCase
307
316
  assert_equal 5, h.dump_tree.split($/).size
308
317
  end
309
318
 
319
+ def test_delete_different_type
320
+ h = AVLTree.new
321
+ h['a'] = 1
322
+ h['abc'] = 2
323
+ h['bb'] = 3
324
+
325
+ assert_raise(TypeError) do
326
+ h.delete(3.3)
327
+ end
328
+ end
329
+
310
330
  def test_each
311
331
  h = AVLTree.new
312
332
  s = { 'aa' => 1, 'ab' => 2, 'bb' => 3, 'bc' => 4, 'a' => 5, 'abc' => 6 }
@@ -169,6 +169,15 @@ class TestRedBlackTree < Test::Unit::TestCase
169
169
  assert_equal 6, h.size
170
170
  end
171
171
 
172
+ def test_different_type
173
+ h = RedBlackTree.new
174
+ h['a'] = 1
175
+ assert_raise(TypeError) do
176
+ h[3.3] = 2
177
+ end
178
+ assert_nil h[3.3]
179
+ end
180
+
172
181
  def test_delete_leaf
173
182
  h = RedBlackTree.new
174
183
  h['b'] = 1
@@ -457,6 +466,17 @@ class TestRedBlackTree < Test::Unit::TestCase
457
466
  assert_equal '(f (c (b a) (d - e)) (i (g - h) (k j)))', h.dump_sexp
458
467
  end
459
468
 
469
+ def test_delete_different_type
470
+ h = RedBlackTree.new
471
+ h['a'] = 1
472
+ h['abc'] = 2
473
+ h['bb'] = 3
474
+
475
+ assert_raise(TypeError) do
476
+ h.delete(3.3)
477
+ end
478
+ end
479
+
460
480
  def test_each
461
481
  h = RedBlackTree.new
462
482
  s = { 'aa' => 1, 'ab' => 2, 'bb' => 3, 'bc' => 4, 'a' => 5, 'abc' => 6 }
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avl_tree
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.2
4
+ version: 1.1.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-27 00:00:00.000000000 Z
12
+ date: 2012-05-09 00:00:00.000000000 Z
13
13
  dependencies: []
14
14
  description:
15
15
  email: nahi@ruby-lang.org
@@ -38,15 +38,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
38
38
  - - ! '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ segments:
42
+ - 0
43
+ hash: -4094052252433988634
41
44
  required_rubygems_version: !ruby/object:Gem::Requirement
42
45
  none: false
43
46
  requirements:
44
47
  - - ! '>='
45
48
  - !ruby/object:Gem::Version
46
49
  version: '0'
50
+ segments:
51
+ - 0
52
+ hash: -4094052252433988634
47
53
  requirements: []
48
54
  rubyforge_project:
49
- rubygems_version: 1.8.11
55
+ rubygems_version: 1.8.23
50
56
  signing_key:
51
57
  specification_version: 3
52
58
  summary: AVL tree and Red-black tree in Ruby