Skip to content

Commit dae5730

Browse files
committed
JRuby fixes
1 parent 454a0a7 commit dae5730

File tree

6 files changed

+44
-32
lines changed

6 files changed

+44
-32
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,4 @@ pkg
99
*#
1010
Gemfile.lock
1111
*.gem
12+
.ruby-version

Rakefile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,4 +11,8 @@ Rake::ExtensionTask.new('containers/splaytree_map') { |ext| ext.name = "CSplayTr
1111

1212
RSpec::Core::RakeTask.new
1313

14-
task :default => [:compile, :spec]
14+
if defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
15+
task :default => [:spec]
16+
else
17+
task :default => [:compile, :spec]
18+
end

algorithms.gemspec

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,10 @@ Gem::Specification.new do |s|
1010
s.date = "2012-04-25"
1111
s.summary = "Useful algorithms and data structures for Ruby. Optional C extensions."
1212
s.description = "Heap, Priority Queue, Deque, Stack, Queue, Red-Black Trees, Splay Trees, sorting algorithms, and more"
13-
s.extensions = ["ext/algorithms/string/extconf.rb", "ext/containers/bst/extconf.rb", "ext/containers/deque/extconf.rb", "ext/containers/rbtree_map/extconf.rb", "ext/containers/splaytree_map/extconf.rb"]
14-
s.files = ["CHANGELOG.markdown", "Manifest", "README.markdown", "Rakefile", "algorithms.gemspec", "benchmarks/deque.rb", "benchmarks/sorts.rb", "benchmarks/treemaps.rb", "ext/algorithms/string/extconf.rb", "ext/algorithms/string/string.c", "ext/containers/bst/bst.c", "ext/containers/bst/extconf.rb", "ext/containers/deque/deque.c", "ext/containers/deque/extconf.rb", "ext/containers/rbtree_map/extconf.rb", "ext/containers/rbtree_map/rbtree.c", "ext/containers/splaytree_map/extconf.rb", "ext/containers/splaytree_map/splaytree.c", "lib/algorithms.rb", "lib/algorithms/search.rb", "lib/algorithms/sort.rb", "lib/algorithms/string.rb", "lib/containers/deque.rb", "lib/containers/heap.rb", "lib/containers/kd_tree.rb", "lib/containers/priority_queue.rb", "lib/containers/queue.rb", "lib/containers/rb_tree_map.rb", "lib/containers/splay_tree_map.rb", "lib/containers/stack.rb", "lib/containers/suffix_array.rb", "lib/containers/trie.rb", "spec/bst_gc_mark_spec.rb", "spec/bst_spec.rb", "spec/deque_gc_mark_spec.rb", "spec/deque_spec.rb", "spec/heap_spec.rb", "spec/kd_expected_out.txt", "spec/kd_test_in.txt", "spec/kd_tree_spec.rb", "spec/map_gc_mark_spec.rb", "spec/priority_queue_spec.rb", "spec/queue_spec.rb", "spec/rb_tree_map_spec.rb", "spec/search_spec.rb", "spec/sort_spec.rb", "spec/splay_tree_map_spec.rb", "spec/stack_spec.rb", "spec/string_spec.rb", "spec/suffix_array_spec.rb", "spec/trie_spec.rb"]
13+
unless defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'
14+
s.extensions = ["ext/algorithms/string/extconf.rb", "ext/containers/bst/extconf.rb", "ext/containers/deque/extconf.rb", "ext/containers/rbtree_map/extconf.rb", "ext/containers/splaytree_map/extconf.rb"]
15+
end
16+
s.files = ["Gemfile", "CHANGELOG.markdown", "Manifest", "README.markdown", "Rakefile", "algorithms.gemspec", "benchmarks/deque.rb", "benchmarks/sorts.rb", "benchmarks/treemaps.rb", "ext/algorithms/string/extconf.rb", "ext/algorithms/string/string.c", "ext/containers/bst/bst.c", "ext/containers/bst/extconf.rb", "ext/containers/deque/deque.c", "ext/containers/deque/extconf.rb", "ext/containers/rbtree_map/extconf.rb", "ext/containers/rbtree_map/rbtree.c", "ext/containers/splaytree_map/extconf.rb", "ext/containers/splaytree_map/splaytree.c", "lib/algorithms.rb", "lib/algorithms/search.rb", "lib/algorithms/sort.rb", "lib/algorithms/string.rb", "lib/containers/deque.rb", "lib/containers/heap.rb", "lib/containers/kd_tree.rb", "lib/containers/priority_queue.rb", "lib/containers/queue.rb", "lib/containers/rb_tree_map.rb", "lib/containers/splay_tree_map.rb", "lib/containers/stack.rb", "lib/containers/suffix_array.rb", "lib/containers/trie.rb", "spec/bst_gc_mark_spec.rb", "spec/bst_spec.rb", "spec/deque_gc_mark_spec.rb", "spec/deque_spec.rb", "spec/heap_spec.rb", "spec/kd_expected_out.txt", "spec/kd_test_in.txt", "spec/kd_tree_spec.rb", "spec/map_gc_mark_spec.rb", "spec/priority_queue_spec.rb", "spec/queue_spec.rb", "spec/rb_tree_map_spec.rb", "spec/search_spec.rb", "spec/sort_spec.rb", "spec/splay_tree_map_spec.rb", "spec/stack_spec.rb", "spec/string_spec.rb", "spec/suffix_array_spec.rb", "spec/trie_spec.rb"]
1517
s.homepage = "https://github.com/kanwei/algorithms"
1618
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Algorithms", "--main", "README.markdown"]
1719
s.require_paths = ["lib", "ext"]

lib/algorithms/string.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@
55

66
begin
77
require 'CString'
8+
rescue LoadError
89
end

spec/map_gc_mark_spec.rb

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,29 @@
11
$: << File.join(File.expand_path(File.dirname(__FILE__)), '..', 'lib')
22
require 'algorithms'
33

4-
describe "map gc mark test" do
5-
it "should mark ruby object references" do
6-
anon_key_class = Class.new do
7-
attr :value
8-
def initialize(x); @value = x; end
9-
def <=>(other); value <=> other.value; end
4+
if !(defined? RUBY_ENGINE && RUBY_ENGINE == 'jruby')
5+
describe "map gc mark test" do
6+
it "should mark ruby object references" do
7+
anon_key_class = Class.new do
8+
attr :value
9+
def initialize(x); @value = x; end
10+
def <=>(other); value <=> other.value; end
11+
end
12+
anon_val_class = Class.new
13+
@rbtree = Containers::RBTreeMap.new
14+
@splaytree = Containers::SplayTreeMap.new
15+
100.times { |x|
16+
@rbtree[anon_key_class.new(x)] = anon_val_class.new
17+
@splaytree[anon_key_class.new(x)] = anon_val_class.new
18+
}
19+
# Mark and sweep
20+
ObjectSpace.garbage_collect
21+
# Check if any instances were swept
22+
count = 0
23+
ObjectSpace.each_object(anon_key_class) { |x| count += 1 }
24+
count.should eql(200)
25+
ObjectSpace.each_object(anon_val_class) { |x| count += 1 }
26+
count.should eql(400)
1027
end
11-
anon_val_class = Class.new
12-
@rbtree = Containers::CRBTreeMap.new
13-
@splaytree = Containers::CSplayTreeMap.new
14-
100.times { |x|
15-
@rbtree[anon_key_class.new(x)] = anon_val_class.new
16-
@splaytree[anon_key_class.new(x)] = anon_val_class.new
17-
}
18-
# Mark and sweep
19-
ObjectSpace.garbage_collect
20-
# Check if any instances were swept
21-
count = 0
22-
ObjectSpace.each_object(anon_key_class) { |x| count += 1 }
23-
count.should eql(200)
24-
ObjectSpace.each_object(anon_val_class) { |x| count += 1 }
25-
count.should eql(400)
2628
end
2729
end

spec/string_spec.rb

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,15 @@
11
$: << File.join(File.expand_path(File.dirname(__FILE__)), '..', 'lib')
22
require 'algorithms'
33

4-
describe "string algorithms" do
5-
it "should do levenshtein distance" do
6-
Algorithms::String.levenshtein_dist("Hello", "Hel").should eql(2)
7-
Algorithms::String.levenshtein_dist("Hello", "").should eql(5)
8-
Algorithms::String.levenshtein_dist("", "Hello").should eql(5)
9-
Algorithms::String.levenshtein_dist("Hello", "Hello").should eql(0)
10-
Algorithms::String.levenshtein_dist("Hello", "ello").should eql(1)
11-
Algorithms::String.levenshtein_dist("Hello", "Mello").should eql(1)
4+
if defined? Algorithms::String
5+
describe "string algorithms" do
6+
it "should do levenshtein distance" do
7+
Algorithms::String.levenshtein_dist("Hello", "Hel").should eql(2)
8+
Algorithms::String.levenshtein_dist("Hello", "").should eql(5)
9+
Algorithms::String.levenshtein_dist("", "Hello").should eql(5)
10+
Algorithms::String.levenshtein_dist("Hello", "Hello").should eql(0)
11+
Algorithms::String.levenshtein_dist("Hello", "ello").should eql(1)
12+
Algorithms::String.levenshtein_dist("Hello", "Mello").should eql(1)
13+
end
1214
end
1315
end

0 commit comments

Comments
 (0)