compat_geom2d 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,72 @@
1
+ # -*- frozen_string_literal: true -*-
2
+
3
+ require 'test_helper'
4
+ require 'geom2d/utils/sorted_linked_list'
5
+
6
+ describe Geom2D::Utils::SortedLinkedList do
7
+ before do
8
+ @list = Geom2D::Utils::SortedLinkedList.new {|a, b| a < b }
9
+ end
10
+
11
+ describe "insert" do
12
+ it "inserts a value and returns its associated node" do
13
+ node = @list.insert(1)
14
+ assert_equal(1, node.value)
15
+ assert(node.prev_node.anchor?)
16
+ assert(node.next_node.anchor?)
17
+ end
18
+
19
+ it "uses the comparator for choosing the place to insert the value" do
20
+ @list.insert(10)
21
+ @list.insert(5)
22
+ @list.insert(8)
23
+ assert_equal([5, 8, 10], @list.to_a)
24
+ end
25
+ end
26
+
27
+ it "returns whether it is empty" do
28
+ assert(@list.empty?)
29
+ @list.insert(5)
30
+ refute(@list.empty?)
31
+ @list.delete(5)
32
+ assert(@list.empty?)
33
+ end
34
+
35
+ it "returns the last value in the list" do
36
+ @list.insert(5)
37
+ assert_equal(5, @list.last)
38
+ @list.insert(10)
39
+ assert_equal(10, @list.last)
40
+ @list.insert(6)
41
+ assert_equal(10, @list.last)
42
+ end
43
+
44
+ it "returns the first node found for a given value" do
45
+ @list.push(5).push(8)
46
+ node = @list.find_node(8)
47
+ assert_equal(8, node.value)
48
+ assert_equal(5, node.prev_node.value)
49
+ assert(node.next_node.anchor?)
50
+ end
51
+
52
+ it "pops the top value of the list" do
53
+ @list.push(8).push(5)
54
+ assert_equal(8, @list.pop)
55
+ end
56
+
57
+ it "clears the whole list" do
58
+ @list.push(8).push(5)
59
+ @list.clear
60
+ assert(@list.empty?)
61
+ end
62
+
63
+ it "deletes a value from the list" do
64
+ @list.push(8).push(5)
65
+ assert_equal(8, @list.delete(8))
66
+ end
67
+
68
+ it "can be inspected" do
69
+ @list.push(8).push(5)
70
+ assert_match(/[5, 8]/, @list.inspect)
71
+ end
72
+ end
@@ -0,0 +1,15 @@
1
+ # -*- frozen_string_literal: true -*-
2
+
3
+ begin
4
+ require 'simplecov'
5
+ SimpleCov.start { add_filter '/test/' }
6
+ rescue LoadError
7
+ warn "Gem 'simplecov' not installed, not generating coverage report"
8
+ end
9
+
10
+ require 'minitest/autorun'
11
+
12
+ module TestHelper
13
+ end
14
+
15
+ Minitest::Spec.send(:include, TestHelper)
metadata ADDED
@@ -0,0 +1,88 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: compat_geom2d
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Thomas Leitner
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2018-11-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rubocop
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.58'
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.58.2
23
+ type: :development
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - "~>"
28
+ - !ruby/object:Gem::Version
29
+ version: '0.58'
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: 0.58.2
33
+ description:
34
+ email: t_leitner@gmx.at
35
+ executables: []
36
+ extensions: []
37
+ extra_rdoc_files: []
38
+ files:
39
+ - CONTRIBUTERS
40
+ - LICENSE
41
+ - README.md
42
+ - Rakefile
43
+ - VERSION
44
+ - lib/geom2d.rb
45
+ - lib/geom2d/algorithms.rb
46
+ - lib/geom2d/algorithms/polygon_operation.rb
47
+ - lib/geom2d/bounding_box.rb
48
+ - lib/geom2d/point.rb
49
+ - lib/geom2d/polygon.rb
50
+ - lib/geom2d/polygon_set.rb
51
+ - lib/geom2d/segment.rb
52
+ - lib/geom2d/utils.rb
53
+ - lib/geom2d/utils/sorted_linked_list.rb
54
+ - lib/geom2d/version.rb
55
+ - test/geom2d/algorithms/test_polygon_operation.rb
56
+ - test/geom2d/test_algorithms.rb
57
+ - test/geom2d/test_bounding_box.rb
58
+ - test/geom2d/test_point.rb
59
+ - test/geom2d/test_polygon.rb
60
+ - test/geom2d/test_polygon_set.rb
61
+ - test/geom2d/test_segment.rb
62
+ - test/geom2d/utils/test_sorted_linked_list.rb
63
+ - test/test_helper.rb
64
+ homepage: https://geom2d.gettalong.org
65
+ licenses:
66
+ - MIT
67
+ metadata: {}
68
+ post_install_message:
69
+ rdoc_options: []
70
+ require_paths:
71
+ - lib
72
+ required_ruby_version: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: 2.2.9
77
+ required_rubygems_version: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ requirements: []
83
+ rubyforge_project:
84
+ rubygems_version: 2.4.5.4
85
+ signing_key:
86
+ specification_version: 4
87
+ summary: Objects and Algorithms for 2D Geometry
88
+ test_files: []