ffi-kdtree 0.0.2

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.
@@ -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
+