array_2d 0.1.1 → 0.2.0

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,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 318cf98676f86f1868df4c05d0abdbf3564d1228
4
+ data.tar.gz: 95acf1e096a5c75e6c0153d00d5fef4f031ed901
5
+ SHA512:
6
+ metadata.gz: 0882c7dd437e6ef4e37c7a1740450ff308d987a777c58444c8966b13a927bf1f9e38b0ef15261855d747715383c39cc2f3eeadf397e73f101f3c11867e24eeb1
7
+ data.tar.gz: e01c3f5e3d18f7a2a7e58a172b66231b1353ce4c930593f6dcef712e64d2fd17946dca779ab7e5d66728e81cdd1f7233cb1b6faf47f8352437b8da5de82b9294
data/Gemfile CHANGED
@@ -1,7 +1,8 @@
1
1
  source 'http://rubygems.org'
2
+ ruby '2.2.2'
2
3
 
3
4
  group :development do
4
5
  gem 'rdoc'
5
- gem 'bundler'
6
6
  gem 'jeweler'
7
+ gem 'minitest'
7
8
  end
@@ -1,21 +1,59 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- git (1.2.5)
5
- jeweler (1.8.4)
6
- bundler (~> 1.0)
4
+ addressable (2.4.0)
5
+ builder (3.2.2)
6
+ descendants_tracker (0.0.4)
7
+ thread_safe (~> 0.3, >= 0.3.1)
8
+ faraday (0.9.2)
9
+ multipart-post (>= 1.2, < 3)
10
+ git (1.2.9.1)
11
+ github_api (0.13.1)
12
+ addressable (~> 2.4.0)
13
+ descendants_tracker (~> 0.0.4)
14
+ faraday (~> 0.8, < 0.10)
15
+ hashie (>= 3.4)
16
+ multi_json (>= 1.7.5, < 2.0)
17
+ oauth2
18
+ hashie (3.4.3)
19
+ highline (1.7.8)
20
+ jeweler (2.0.1)
21
+ builder
22
+ bundler (>= 1.0)
7
23
  git (>= 1.2.5)
24
+ github_api
25
+ highline (>= 1.6.15)
26
+ nokogiri (>= 1.5.10)
8
27
  rake
9
28
  rdoc
10
- json (1.7.5)
11
- rake (0.9.2.2)
12
- rdoc (3.12)
29
+ json (1.8.3)
30
+ jwt (1.5.2)
31
+ mini_portile2 (2.0.0)
32
+ minitest (5.8.3)
33
+ multi_json (1.11.2)
34
+ multi_xml (0.5.5)
35
+ multipart-post (2.0.0)
36
+ nokogiri (1.6.7.1)
37
+ mini_portile2 (~> 2.0.0.rc2)
38
+ oauth2 (1.0.0)
39
+ faraday (>= 0.8, < 0.10)
40
+ jwt (~> 1.0)
41
+ multi_json (~> 1.3)
42
+ multi_xml (~> 0.5)
43
+ rack (~> 1.2)
44
+ rack (1.6.4)
45
+ rake (10.5.0)
46
+ rdoc (4.2.1)
13
47
  json (~> 1.4)
48
+ thread_safe (0.3.5)
14
49
 
15
50
  PLATFORMS
16
51
  ruby
17
52
 
18
53
  DEPENDENCIES
19
- bundler
20
54
  jeweler
55
+ minitest
21
56
  rdoc
57
+
58
+ BUNDLED WITH
59
+ 1.11.2
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.1
1
+ 0.2.0
@@ -2,14 +2,16 @@
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
3
  # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
+ # stub: array_2d 0.2.0 ruby lib
5
6
 
6
7
  Gem::Specification.new do |s|
7
8
  s.name = "array_2d"
8
- s.version = "0.1.1"
9
+ s.version = "0.2.0"
9
10
 
10
11
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
12
+ s.require_paths = ["lib"]
11
13
  s.authors = ["Luke Grecki"]
12
- s.date = "2012-10-08"
14
+ s.date = "2016-01-15"
13
15
  s.description = "Create mutable 2D arrays that allow you to change subarrays."
14
16
  s.email = "lukegrecki@gmail.com"
15
17
  s.extra_rdoc_files = [
@@ -31,26 +33,25 @@ Gem::Specification.new do |s|
31
33
  ]
32
34
  s.homepage = "http://github.com/lukegrecki/array_2d"
33
35
  s.licenses = ["MIT"]
34
- s.require_paths = ["lib"]
35
- s.rubygems_version = "1.8.10"
36
+ s.rubygems_version = "2.4.5"
36
37
  s.summary = "A lightweight mutable 2D array class"
37
38
 
38
39
  if s.respond_to? :specification_version then
39
- s.specification_version = 3
40
+ s.specification_version = 4
40
41
 
41
42
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
42
43
  s.add_development_dependency(%q<rdoc>, [">= 0"])
43
- s.add_development_dependency(%q<bundler>, [">= 0"])
44
44
  s.add_development_dependency(%q<jeweler>, [">= 0"])
45
+ s.add_development_dependency(%q<minitest>, [">= 0"])
45
46
  else
46
47
  s.add_dependency(%q<rdoc>, [">= 0"])
47
- s.add_dependency(%q<bundler>, [">= 0"])
48
48
  s.add_dependency(%q<jeweler>, [">= 0"])
49
+ s.add_dependency(%q<minitest>, [">= 0"])
49
50
  end
50
51
  else
51
52
  s.add_dependency(%q<rdoc>, [">= 0"])
52
- s.add_dependency(%q<bundler>, [">= 0"])
53
53
  s.add_dependency(%q<jeweler>, [">= 0"])
54
+ s.add_dependency(%q<minitest>, [">= 0"])
54
55
  end
55
56
  end
56
57
 
@@ -49,24 +49,36 @@ class Array2D
49
49
  when Integer
50
50
  @state[x][y]
51
51
  when Range
52
- subarray = Array.new(y.to_a.size)
53
- y.each {|yi| subarray[yi - y.first] = @state[x][yi]}
54
- subarray
52
+ if y.size <= column_size
53
+ subarray = Array.new(y.to_a.size)
54
+ y.each {|yi| subarray[yi - y.first] = @state[x][yi]}
55
+ subarray
56
+ else
57
+ raise IndexError, "Indices are out of range"
58
+ end
55
59
  end
56
60
  when Range
57
61
  case y
58
62
  when Integer
59
- subarray = Array.new(x.to_a.size)
60
- x.each {|xi| subarray[xi - x.first] = @state[xi][y]}
61
- subarray
63
+ if x.size <= row_size
64
+ subarray = Array.new(x.to_a.size)
65
+ x.each {|xi| subarray[xi - x.first] = @state[xi][y]}
66
+ subarray
67
+ else
68
+ raise IndexError, "Indices are out of range"
69
+ end
62
70
  when Range
63
- subarray = Array2D.new(x.to_a.size, y.to_a.size)
64
- x.each do |xi|
65
- y.each do |yi|
66
- subarray.state[xi - x.first][yi - y.first] = @state[xi][yi]
71
+ if x.size <= row_size && y.size <= column_size
72
+ subarray = Array2D.new(x.to_a.size, y.to_a.size)
73
+ x.each do |xi|
74
+ y.each do |yi|
75
+ subarray.state[xi - x.first][yi - y.first] = @state[xi][yi]
76
+ end
67
77
  end
78
+ subarray
79
+ else
80
+ raise IndexError, "Indices are out of range"
68
81
  end
69
- subarray
70
82
  end
71
83
  end
72
84
  end
@@ -78,8 +90,10 @@ class Array2D
78
90
  when Integer
79
91
  @state[x][y] = value
80
92
  when Range
81
- if value.is_a?(Array) && y.to_a.size == value.size
93
+ if value.is_a?(Array) && y.size == value.size
82
94
  y.each {|yi| @state[x][yi] = value[yi - y.first]}
95
+ elsif value.is_a?(Array) && y.size != value.size
96
+ raise AssignmentError, "Value array is not the same size as subarray"
83
97
  else
84
98
  y.each {|yi| @state[x][yi] = value}
85
99
  end
@@ -87,16 +101,20 @@ class Array2D
87
101
  when Range
88
102
  case y
89
103
  when Integer
90
- if value.is_a?(Array) && x.to_a.size == value.size
104
+ if value.is_a?(Array) && x.size == value.size
91
105
  x.each {|xi| @state[xi][y] = value[xi - x.first]}
106
+ elsif value.is_a?(Array) && x.size != value.size
107
+ raise AssignmentError, "Value array is not the same size as subarray"
92
108
  else
93
109
  x.each {|xi| @state[xi][y] = value}
94
110
  end
95
111
  when Range
96
112
  x.each do |xi|
97
113
  y.each do |yi|
98
- if value.is_a?(Array2D) && [x.to_a.size, y.to_a.size] == value.size
114
+ if value.is_a?(Array2D) && [x.size, y.size] == value.size
99
115
  @state[xi][yi] = value[xi - x.first, yi - y.first]
116
+ elsif value.is_a?(Array2D) && [x.size, y.size] != value.size
117
+ raise AssignmentError, "Value 2d array is not the same size as subarray"
100
118
  else
101
119
  @state[xi][yi] = value
102
120
  end
@@ -106,4 +124,7 @@ class Array2D
106
124
  end
107
125
  end
108
126
 
109
- end
127
+ end
128
+
129
+ class IndexError < StandardError; end
130
+ class AssignmentError < StandardError; end
@@ -6,7 +6,7 @@ rescue Bundler::BundlerError => e
6
6
  $stderr.puts "Run `bundle install` to install missing gems"
7
7
  exit e.status_code
8
8
  end
9
- require 'test/unit'
9
+ require 'minitest/autorun'
10
10
 
11
11
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
12
12
  $LOAD_PATH.unshift(File.dirname(__FILE__))
@@ -1,6 +1,6 @@
1
1
  require 'helper'
2
2
 
3
- class Array2DTest < Test::Unit::TestCase
3
+ class Array2DTest < Minitest::Test
4
4
  def setup
5
5
  @array2d = Array2D.new(3, 5, 0)
6
6
  end
@@ -10,21 +10,35 @@ class Array2DTest < Test::Unit::TestCase
10
10
  assert_instance_of Array2D, Array2D.new(3, 5, 0)
11
11
  end
12
12
 
13
+ def test_initial_value
14
+ assert_equal 0, @array2d[2, 2]
15
+ end
16
+
13
17
  def test_each
14
- @array2d.each {|e| assert_equal(0, e)}
18
+ array2d = Array2D.new(2, 2)
19
+ array2d.state = [[1, 2], [3, 4]]
20
+ each_array = []
21
+ array2d.each { |e| each_array << e }
22
+ assert_equal [1, 2, 3, 4], each_array
15
23
  end
16
24
 
17
25
  def test_each_with_index
18
- @array2d.each_with_index do |e, index|
19
- assert_equal 0, e
20
- assert_instance_of Array, index
21
- assert_equal 2, index.size
26
+ array2d = Array2D.new(2, 2)
27
+ array2d.state = [[1, 2], [3, 4]]
28
+ each_array = []
29
+ index_array = []
30
+ array2d.each_with_index do |e, index|
31
+ each_array << e
32
+ index_array << index
22
33
  end
34
+ assert_equal [1, 2, 3, 4], each_array
35
+ assert_equal [[0, 0], [0, 1], [1, 0], [1, 1]], index_array
23
36
  end
24
37
 
25
38
  def test_to_s
26
- array2d = Array2D.new(2, 2, 0)
27
- assert_equal '[[0, 0], [0, 0]]', array2d.to_s
39
+ array2d = Array2D.new(2, 2)
40
+ array2d.state = [[1, 2], [3, 4]]
41
+ assert_equal '[[1, 2], [3, 4]]', array2d.to_s
28
42
  end
29
43
 
30
44
  def test_equality
@@ -76,4 +90,32 @@ class Array2DTest < Test::Unit::TestCase
76
90
  @array2d[0, 0...5] = 7
77
91
  assert_equal [7, 7, 7, 7, 7], @array2d[0, 0...5]
78
92
  end
93
+
94
+ def test_get_bracket_errors
95
+ assert_raises(IndexError) do
96
+ @array2d[0..(@array2d.row_size + 1), 0]
97
+ end
98
+
99
+ assert_raises(IndexError) do
100
+ @array2d[0, 0..(@array2d.column_size + 1)]
101
+ end
102
+
103
+ assert_raises(IndexError) do
104
+ @array2d[0..(@array2d.row_size + 1), 0..(@array2d.column_size + 1)]
105
+ end
106
+ end
107
+
108
+ def test_set_bracket_errors
109
+ assert_raises(AssignmentError) do
110
+ @array2d[0..(@array2d.row_size), 0] = Array.new(@array2d.row_size, 0)
111
+ end
112
+
113
+ assert_raises(AssignmentError) do
114
+ @array2d[0, 0..(@array2d.column_size)] = Array.new(@array2d.column_size + 2, 0)
115
+ end
116
+
117
+ assert_raises(AssignmentError) do
118
+ @array2d[0..(@array2d.row_size), 0..(@array2d.column_size)] = Array2D.new(@array2d.row_size + 2, @array2d.column_size + 2)
119
+ end
120
+ end
79
121
  end
metadata CHANGED
@@ -1,49 +1,57 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: array_2d
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
5
- prerelease:
4
+ version: 0.2.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Luke Grecki
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2012-10-08 00:00:00.000000000Z
11
+ date: 2016-01-15 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: rdoc
16
- requirement: &87113610 !ruby/object:Gem::Requirement
17
- none: false
15
+ requirement: !ruby/object:Gem::Requirement
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :development
23
21
  prerelease: false
24
- version_requirements: *87113610
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
25
27
  - !ruby/object:Gem::Dependency
26
- name: bundler
27
- requirement: &87113040 !ruby/object:Gem::Requirement
28
- none: false
28
+ name: jeweler
29
+ requirement: !ruby/object:Gem::Requirement
29
30
  requirements:
30
- - - ! '>='
31
+ - - ">="
31
32
  - !ruby/object:Gem::Version
32
33
  version: '0'
33
34
  type: :development
34
35
  prerelease: false
35
- version_requirements: *87113040
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
36
41
  - !ruby/object:Gem::Dependency
37
- name: jeweler
38
- requirement: &87112770 !ruby/object:Gem::Requirement
39
- none: false
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
40
44
  requirements:
41
- - - ! '>='
45
+ - - ">="
42
46
  - !ruby/object:Gem::Version
43
47
  version: '0'
44
48
  type: :development
45
49
  prerelease: false
46
- version_requirements: *87112770
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
47
55
  description: Create mutable 2D arrays that allow you to change subarrays.
48
56
  email: lukegrecki@gmail.com
49
57
  executables: []
@@ -52,7 +60,7 @@ extra_rdoc_files:
52
60
  - LICENSE.txt
53
61
  - README.rdoc
54
62
  files:
55
- - .document
63
+ - ".document"
56
64
  - Gemfile
57
65
  - Gemfile.lock
58
66
  - LICENSE.txt
@@ -66,29 +74,25 @@ files:
66
74
  homepage: http://github.com/lukegrecki/array_2d
67
75
  licenses:
68
76
  - MIT
77
+ metadata: {}
69
78
  post_install_message:
70
79
  rdoc_options: []
71
80
  require_paths:
72
81
  - lib
73
82
  required_ruby_version: !ruby/object:Gem::Requirement
74
- none: false
75
83
  requirements:
76
- - - ! '>='
84
+ - - ">="
77
85
  - !ruby/object:Gem::Version
78
86
  version: '0'
79
- segments:
80
- - 0
81
- hash: 348675471
82
87
  required_rubygems_version: !ruby/object:Gem::Requirement
83
- none: false
84
88
  requirements:
85
- - - ! '>='
89
+ - - ">="
86
90
  - !ruby/object:Gem::Version
87
91
  version: '0'
88
92
  requirements: []
89
93
  rubyforge_project:
90
- rubygems_version: 1.8.10
94
+ rubygems_version: 2.4.5
91
95
  signing_key:
92
- specification_version: 3
96
+ specification_version: 4
93
97
  summary: A lightweight mutable 2D array class
94
98
  test_files: []