ffi-kdtree 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,40 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
2
+
3
+ describe KdTree::Tree do
4
+ include TestHelpers
5
+
6
+ it "should find neighbors in a 2D tree" do
7
+ tree = KdTree::Tree.new(2, :string)
8
+ tree.add([-1, -1 ], "top-left" )
9
+ tree.add([-0.5, -0.5], "mid-upper-left" )
10
+ tree.add([ 1, -1 ], "top-right" )
11
+ tree.add([ 0.5, -0.5], "mid-upper-right" )
12
+ tree.add([ 0, 0 ], "center" )
13
+ tree.add([-0.5, 0.5], "mid-lower-left" )
14
+ tree.add([-1, 1 ], "bottom-left" )
15
+ tree.add([ 0.5, 0.5], "mid-lower-right" )
16
+ tree.add([ 1, 1 ], "bottom-right" )
17
+
18
+ where, data = tree.find_nearest([0, 0])
19
+ where.should == [0, 0]
20
+ data.should == "center"
21
+
22
+ where, data = tree.find_nearest([0.3, 0.3])
23
+ where.should == [0.5, 0.5]
24
+ data.should == "mid-lower-right"
25
+
26
+ where, data = tree.find_nearest([-0.3, -0.3])
27
+ where.should == [-0.5, -0.5]
28
+ data.should == "mid-upper-left"
29
+
30
+ where, data = tree.find_nearest([0.1,0.1])
31
+ where.should == [0, 0]
32
+ data.should == "center"
33
+
34
+ locations = tree.find_nearest_range([0, 0], 2)
35
+ locations.size.should == 9 # all of them
36
+
37
+ locations = tree.find_nearest_range([0, 0], 1)
38
+ locations.size.should == 5 # center + mids
39
+ end
40
+ end
@@ -0,0 +1,15 @@
1
+ require 'rubygems'
2
+ require 'spec'
3
+ require File.join(File.dirname(__FILE__), '..', 'lib', 'ffi-kdtree')
4
+
5
+ module TestHelpers
6
+ def generate_tree(dim_size, num_entries, type = :object, &block)
7
+ block ||= proc.new { |i| i }
8
+ tree = KdTree::Tree.new(dim_size, type)
9
+ 1.upto(num_entries).each do |i|
10
+ tree.add(1.upto(dim_size).collect { rand }, block.call(i))
11
+ end
12
+ end
13
+ end
14
+
15
+
@@ -0,0 +1,12 @@
1
+ require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
2
+
3
+ describe KdTree::Tree do
4
+ include TestHelpers
5
+
6
+ it "should create a 2D tree with 1000 random entries" do
7
+ tree = generate_tree(2, 1000, :integer) do
8
+ rand
9
+ end
10
+ tree.should_not be_nil
11
+ end
12
+ end
metadata ADDED
@@ -0,0 +1,130 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ffi-kdtree
3
+ version: !ruby/object:Gem::Version
4
+ hash: 27
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 2
10
+ version: 0.0.2
11
+ platform: ruby
12
+ authors:
13
+ - Scott Deming
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2012-03-01 00:00:00 -06:00
19
+ default_executable:
20
+ dependencies:
21
+ - !ruby/object:Gem::Dependency
22
+ name: ffi
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
32
+ version: "0"
33
+ type: :runtime
34
+ version_requirements: *id001
35
+ - !ruby/object:Gem::Dependency
36
+ name: rspec
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ~>
42
+ - !ruby/object:Gem::Version
43
+ hash: 15
44
+ segments:
45
+ - 2
46
+ - 6
47
+ version: "2.6"
48
+ type: :development
49
+ version_requirements: *id002
50
+ - !ruby/object:Gem::Dependency
51
+ name: rake
52
+ prerelease: false
53
+ requirement: &id003 !ruby/object:Gem::Requirement
54
+ none: false
55
+ requirements:
56
+ - - ">="
57
+ - !ruby/object:Gem::Version
58
+ hash: 3
59
+ segments:
60
+ - 0
61
+ version: "0"
62
+ type: :development
63
+ version_requirements: *id003
64
+ description: |-
65
+ This is a simple FFI wrapped version of libkdtree for Ruby.
66
+ It's a pure ruby wrapper so this gem can be loaded and run by any ruby runtime
67
+ that supports FFI. That's all of them: MRI 1.9.x, Rubinius and JRuby.
68
+ email:
69
+ - sdeming@makefile.com
70
+ executables: []
71
+
72
+ extensions:
73
+ - ext/ffi-kdtree/extconf.rb
74
+ extra_rdoc_files: []
75
+
76
+ files:
77
+ - .gitignore
78
+ - README.md
79
+ - examples/test.rb
80
+ - ext/ffi-kdtree/extconf.rb
81
+ - ext/ffi-kdtree/kdtree.c
82
+ - ext/ffi-kdtree/kdtree.h
83
+ - ffi-kdtree.gemspec
84
+ - lib/ffi-kdtree.rb
85
+ - lib/ffi-kdtree/data_conversion.rb
86
+ - lib/ffi-kdtree/dimensions.rb
87
+ - lib/ffi-kdtree/ffi/libkdtree.rb
88
+ - lib/ffi-kdtree/finders.rb
89
+ - lib/ffi-kdtree/helpers.rb
90
+ - lib/ffi-kdtree/tree.rb
91
+ - spec/data/zips.txt
92
+ - spec/find_nearest_spec.rb
93
+ - spec/spec_helper.rb
94
+ - spec/tree_spec.rb
95
+ has_rdoc: true
96
+ homepage: https://github.com/blakesmith/ffi-kdtree
97
+ licenses: []
98
+
99
+ post_install_message:
100
+ rdoc_options: []
101
+
102
+ require_paths:
103
+ - lib
104
+ required_ruby_version: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ hash: 3
110
+ segments:
111
+ - 0
112
+ version: "0"
113
+ required_rubygems_version: !ruby/object:Gem::Requirement
114
+ none: false
115
+ requirements:
116
+ - - ">="
117
+ - !ruby/object:Gem::Version
118
+ hash: 3
119
+ segments:
120
+ - 0
121
+ version: "0"
122
+ requirements: []
123
+
124
+ rubyforge_project:
125
+ rubygems_version: 1.3.7
126
+ signing_key:
127
+ specification_version: 3
128
+ summary: This is a simple FFI wrapped version of libkdtree for Ruby
129
+ test_files: []
130
+