rekey 4.0.0 → 4.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 9fd354b9d3c1d9586254cada81be1e6bb9727a4a
4
- data.tar.gz: 35a6a2235d235543d2ce42cd483f98ba8ea3da38
2
+ SHA256:
3
+ metadata.gz: fa46e960e7f7282b323629b69f26868f9eb59f09752128afc01858fcd33e74b2
4
+ data.tar.gz: 6bdf503d29bdfce9e99a43a0ad6b418c1d3905b5c512a318e0b7bcab2f60b48d
5
5
  SHA512:
6
- metadata.gz: f3dba9ce015ac3bd8cb5c6b0e9c1f887c2127453649e2d0357e52d710ddc67970a8ae2747d3b1686198ed29533b66c3445df3ef227d69b39c6666c075b51301c
7
- data.tar.gz: b9b139e019b4587f06dd0c1a1fed7e7fb9e7bd78c72af91cdb2202a8015612c1f268e10b121cfcb23e12ac8160e2b10f83368b55cf6d6e400cb8048bbc81e62e
6
+ metadata.gz: dac8e9d6262d58ab957ca9175cbc081314612519776737cacce78f89580c65e0aa72393e6d79a0f43a230fa0dbde16b470a5292efabc98e55dd8156362d4f5b8
7
+ data.tar.gz: 01ed776768fed346f854f3ece0a4af3cf1a2cede9c13d390f5528a2af51f8e89b2125005b15fff65ccda8f5a5dc926b5a2c17c75908b87918f77cdd5fd293201
data/CHANGELOG.md ADDED
@@ -0,0 +1,10 @@
1
+ ### 4.1.0 (2026-04-10)
2
+ - ruby version / gem updates
3
+
4
+ ### 4.0.0 (2018-10-08)
5
+ - 7a49250 better monkey patching tests
6
+ - 9d94818 extend self
7
+ - 574461c clean up arity handling, expand tests
8
+ - 4b85ea6 require a key handle or block...for a nil key operation, use PluckIt
9
+ - d6cba35 fix unit test requires
10
+
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "https://rubygems.org"
2
+
3
+ gemspec
4
+
data/LICENSE.txt ADDED
@@ -0,0 +1,22 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2016 Daniel Pepper
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
22
+
data/README.md ADDED
@@ -0,0 +1,52 @@
1
+ Rekey
2
+ ======
3
+ ![Gem](https://img.shields.io/gem/dt/rekey?style=plastic)
4
+ [![codecov](https://codecov.io/gh/dpep/rekey_rb/branch/main/graph/badge.svg?token=Z6W48XUEQD)](https://codecov.io/gh/dpep/rekey_rb)
5
+
6
+ Reformat Enumerables into Hashes, using derived keys / values
7
+
8
+ #### Install
9
+ ```gem install rekey```
10
+
11
+
12
+ #### Usage
13
+ ```ruby
14
+ require "rekey"
15
+
16
+ # key a list of records by id
17
+ [
18
+ { id: 1, name: "alice", age: 30},
19
+ { id: 2, name: "bob", age: 24},
20
+ { id: 3, name: "charlie", age: 88},
21
+ ].rekey :id
22
+ => {
23
+ 1 => { id: 1, name: "alice", age: 30},
24
+ 2 => { id: 2, name: "bob", age: 24},
25
+ 3 => { id: 3, name: "charlie", age: 88},
26
+ }
27
+
28
+
29
+ # create an id => value map from a list of records
30
+ [
31
+ { id: 1, name: "alice", age: 30},
32
+ { id: 2, name: "bob", age: 24},
33
+ { id: 3, name: "charlie", age: 88},
34
+ ].rekey :id, :name
35
+ => {
36
+ 1 => "alice",
37
+ 2 => "bob",
38
+ 3 => "charlie"
39
+ }
40
+
41
+
42
+ # or use blocks
43
+ [ 2, 4, 6 ].rekey {|v| v / 2}
44
+ => {
45
+ 1 => 2,
46
+ 2 => 4,
47
+ 3 => 6
48
+ }
49
+ ```
50
+
51
+
52
+ ----
data/lib/rekey/rekey.rb CHANGED
@@ -1,11 +1,18 @@
1
- require 'pluckit/pluck'
1
+ require "pluckit/pluck"
2
+ require "rekey/version"
2
3
 
3
4
 
4
5
  module Rekey
5
6
  extend self
6
7
 
8
+ refine Enumerable do
9
+ def rekey(key_handle = nil, value_handle = nil, &block)
10
+ Rekey.rekey(self, key_handle, value_handle, &block)
11
+ end
12
+ end
13
+
7
14
  def rekey(enumerable, key_handle = nil, value_handle = nil, &block)
8
- validate_input key_handle, value_handle, &block
15
+ validate_input!(key_handle, value_handle, &block)
9
16
 
10
17
  key_value_fn = if enumerable.respond_to?(:keys)
11
18
  proc {|k, v| [k, v]}
@@ -15,7 +22,7 @@ module Rekey
15
22
 
16
23
  # rekey input
17
24
  enumerable.each_with_object({}) do |*args, res|
18
- key, value = key_value_fn.call *args
25
+ key, value = key_value_fn.call(*args)
19
26
  new_key = key
20
27
  new_value = value
21
28
 
@@ -23,21 +30,21 @@ module Rekey
23
30
  if block.arity < 2
24
31
  # block only wants value
25
32
  # arity -1 is a function pointer, eg. &:to_i
26
- new_key = block.call value
33
+ new_key = block.call(value)
27
34
  else
28
35
  # block wants both key and value
29
36
 
30
37
  if key_value_fn.arity != 2
31
38
  raise ArgumentError.new(
32
- 'rekey block requests key/value pair but only value available'
39
+ "rekey block requests key/value pair but only value available"
33
40
  )
34
41
  end
35
42
 
36
- new_key = block.call key, value
43
+ new_key = block.call(key, value)
37
44
  end
38
45
  else
39
- new_key = PluckIt.pluckit value, key_handle
40
- new_value = PluckIt.pluckit value, value_handle if value_handle
46
+ new_key = PluckIt.pluckit(value, key_handle)
47
+ new_value = PluckIt.pluckit(value, value_handle) if value_handle
41
48
  end
42
49
 
43
50
  # collect results
@@ -48,15 +55,13 @@ module Rekey
48
55
 
49
56
  private
50
57
 
51
- def validate_input key_handle, value_handle, &block
58
+ def validate_input!(key_handle, value_handle, &block)
52
59
  if block
53
- if (key_handle or value_handle)
54
- raise ArgumentError.new 'expected key / value handles, *or* block'
60
+ if (key_handle || value_handle)
61
+ raise ArgumentError, "expected key / value handles, *or* block"
55
62
  end
56
63
  elsif key_handle.nil?
57
- raise ArgumentError.new 'key handle or block required'
64
+ raise ArgumentError, "key handle or block required"
58
65
  end
59
66
  end
60
-
61
-
62
67
  end
@@ -0,0 +1,3 @@
1
+ module Rekey
2
+ VERSION = "4.1.0"
3
+ end
data/lib/rekey.rb CHANGED
@@ -1,13 +1,7 @@
1
- require_relative 'rekey/rekey'
2
-
3
-
4
- module Rekey
5
- VERSION = '4.0.0'
6
- end
7
-
1
+ require_relative "rekey/rekey"
8
2
 
9
3
  module Enumerable
10
4
  def rekey(key_handle = nil, value_handle = nil, &block)
11
- Rekey.rekey self, key_handle, value_handle, &block
5
+ Rekey.rekey(self, key_handle, value_handle, &block)
12
6
  end
13
7
  end
data/rekey.gemspec ADDED
@@ -0,0 +1,23 @@
1
+ package_name = File.basename(__FILE__).split(".")[0]
2
+ require "./lib/#{package_name}/version"
3
+
4
+ package = Rekey
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = package_name
8
+ s.version = package.const_get "VERSION"
9
+ s.authors = ["Daniel Pepper"]
10
+ s.summary = package.to_s
11
+ s.description = "Reformat Enumerables into Hashes, using derived keys / values"
12
+ s.homepage = "https://github.com/dpep/#{package_name}_rb"
13
+ s.license = "MIT"
14
+ s.files = `git ls-files * ":!:spec"`.split("\n")
15
+
16
+ s.required_ruby_version = ">= 3"
17
+
18
+ s.add_runtime_dependency "pluckit"
19
+
20
+ s.add_development_dependency "debug"
21
+ s.add_development_dependency "rspec"
22
+ s.add_development_dependency "simplecov"
23
+ end
metadata CHANGED
@@ -1,79 +1,87 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rekey
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.0.0
4
+ version: 4.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Pepper
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2018-10-09 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: pluckit
15
14
  requirement: !ruby/object:Gem::Requirement
16
15
  requirements:
17
- - - "~>"
16
+ - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '1.1'
18
+ version: '0'
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
- - - "~>"
23
+ - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: '1.1'
25
+ version: '0'
27
26
  - !ruby/object:Gem::Dependency
28
- name: minitest
27
+ name: debug
29
28
  requirement: !ruby/object:Gem::Requirement
30
29
  requirements:
31
- - - "~>"
30
+ - - ">="
32
31
  - !ruby/object:Gem::Version
33
- version: '5'
32
+ version: '0'
34
33
  type: :development
35
34
  prerelease: false
36
35
  version_requirements: !ruby/object:Gem::Requirement
37
36
  requirements:
38
- - - "~>"
37
+ - - ">="
39
38
  - !ruby/object:Gem::Version
40
- version: '5'
39
+ version: '0'
41
40
  - !ruby/object:Gem::Dependency
42
- name: rake
41
+ name: rspec
43
42
  requirement: !ruby/object:Gem::Requirement
44
43
  requirements:
45
- - - "~>"
44
+ - - ">="
46
45
  - !ruby/object:Gem::Version
47
- version: '10'
46
+ version: '0'
48
47
  type: :development
49
48
  prerelease: false
50
49
  version_requirements: !ruby/object:Gem::Requirement
51
50
  requirements:
52
- - - "~>"
51
+ - - ">="
53
52
  - !ruby/object:Gem::Version
54
- version: '10'
53
+ version: '0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: simplecov
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ type: :development
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
55
68
  description: Reformat Enumerables into Hashes, using derived keys / values
56
- email:
57
69
  executables: []
58
70
  extensions: []
59
71
  extra_rdoc_files: []
60
72
  files:
73
+ - CHANGELOG.md
74
+ - Gemfile
75
+ - LICENSE.txt
76
+ - README.md
61
77
  - lib/rekey.rb
62
78
  - lib/rekey/rekey.rb
63
- - test/test_array_block.rb
64
- - test/test_array_handlers.rb
65
- - test/test_empty_input.rb
66
- - test/test_hash_block.rb
67
- - test/test_hash_handlers.rb
68
- - test/test_invalid_input.rb
69
- - test/test_monkey_patching.rb
70
- - test/test_range.rb
71
- - test/test_regexp.rb
72
- homepage: https://github.com/dpep/rb_rekey
79
+ - lib/rekey/version.rb
80
+ - rekey.gemspec
81
+ homepage: https://github.com/dpep/rekey_rb
73
82
  licenses:
74
83
  - MIT
75
84
  metadata: {}
76
- post_install_message:
77
85
  rdoc_options: []
78
86
  require_paths:
79
87
  - lib
@@ -81,25 +89,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
81
89
  requirements:
82
90
  - - ">="
83
91
  - !ruby/object:Gem::Version
84
- version: '0'
92
+ version: '3'
85
93
  required_rubygems_version: !ruby/object:Gem::Requirement
86
94
  requirements:
87
95
  - - ">="
88
96
  - !ruby/object:Gem::Version
89
97
  version: '0'
90
98
  requirements: []
91
- rubyforge_project:
92
- rubygems_version: 2.6.11
93
- signing_key:
99
+ rubygems_version: 3.6.9
94
100
  specification_version: 4
95
101
  summary: Rekey
96
- test_files:
97
- - test/test_array_block.rb
98
- - test/test_array_handlers.rb
99
- - test/test_empty_input.rb
100
- - test/test_hash_block.rb
101
- - test/test_hash_handlers.rb
102
- - test/test_invalid_input.rb
103
- - test/test_monkey_patching.rb
104
- - test/test_range.rb
105
- - test/test_regexp.rb
102
+ test_files: []
@@ -1,55 +0,0 @@
1
- require 'minitest/autorun'
2
- require_relative '../lib/rekey'
3
-
4
-
5
- class RekeyArrayBlockTest < Minitest::Test
6
-
7
- def setup
8
- @input = [*1..3]
9
- end
10
-
11
- def test_all
12
- assert_equal({
13
- 1 => 1,
14
- 2 => 2,
15
- 3 => 3,
16
- },
17
- @input.rekey {|v| v }
18
- )
19
-
20
- assert_equal({
21
- 1 => 1,
22
- 2 => 2,
23
- 3 => 3,
24
- },
25
- @input.rekey(&:itself)
26
- )
27
-
28
- assert_equal({
29
- 2 => 1,
30
- 4 => 2,
31
- 6 => 3,
32
- },
33
- @input.rekey {|v| v * 2 }
34
- )
35
-
36
- assert_equal({
37
- '1' => 1,
38
- '2' => 2,
39
- '3' => 3,
40
- },
41
- @input.rekey {|v| v.to_s }
42
- )
43
-
44
- assert_equal(
45
- { nil => 3 },
46
- @input.rekey {|v| nil }
47
- )
48
-
49
- assert_equal(
50
- { 123 => 3 },
51
- @input.rekey { 123 }
52
- )
53
- end
54
-
55
- end
@@ -1,129 +0,0 @@
1
- require 'minitest/autorun'
2
- require_relative '../lib/rekey'
3
-
4
-
5
- class RekeyArrayHandlersTest < Minitest::Test
6
-
7
- def setup
8
- @input = [*1..3]
9
- end
10
-
11
-
12
- def test_keys
13
- assert_equal({
14
- '1' => 1,
15
- '2' => 2,
16
- '3' => 3,
17
- },
18
- @input.rekey(:to_s)
19
- )
20
-
21
- assert_equal({
22
- '1' => 1,
23
- '2' => 2,
24
- '3' => 3,
25
- },
26
- @input.rekey('to_s')
27
- )
28
-
29
- assert_equal({
30
- 1.0 => 1,
31
- 2.0 => 2,
32
- 3.0 => 3,
33
- },
34
- @input.rekey(:to_f)
35
- )
36
-
37
- assert_equal({
38
- 1.0 => 1,
39
- 2.0 => 2,
40
- 3.0 => 3,
41
- },
42
- @input.rekey(&:to_f)
43
- )
44
- end
45
-
46
-
47
- def test_both
48
- assert_equal({
49
- 1 => 1,
50
- 2 => 2,
51
- 3 => 3,
52
- },
53
- @input.rekey(:to_i, :to_i)
54
- )
55
-
56
- assert_equal({
57
- '1' => 1.0,
58
- '2' => 2.0,
59
- '3' => 3.0,
60
- },
61
- @input.rekey(:to_s, :to_f)
62
- )
63
-
64
- assert_equal({
65
- '1' => 1.0,
66
- '2' => 2.0,
67
- '3' => 3.0,
68
- },
69
- @input.rekey('to_s', 'to_f')
70
- )
71
- end
72
-
73
-
74
- def test_array_indices
75
- array_data = [
76
- [ 1, 2, 3 ],
77
- [ 4, 5, 6 ],
78
- [ 7, 8, 9 ],
79
- ]
80
-
81
- assert_equal({
82
- 1 => 3,
83
- 4 => 6,
84
- 7 => 9,
85
- },
86
- array_data.rekey(0, 2)
87
- )
88
-
89
- array_data = [
90
- [ 1 ],
91
- [ 2, 1 ],
92
- [ 3, 2, 1 ],
93
- ]
94
- assert_equal({
95
- 1 => 1,
96
- 2 => 2,
97
- 3 => 3,
98
- },
99
- array_data.rekey(0, :count)
100
- )
101
- end
102
-
103
-
104
- def test_hash_indices
105
- data = [
106
- { i: 1, v: 'a' },
107
- { i: 2, v: 'b' },
108
- { i: 3, v: 'c' },
109
- ]
110
-
111
- assert_equal({
112
- 1 => data[0],
113
- 2 => data[1],
114
- 3 => data[2],
115
- },
116
- data.rekey(:i)
117
- )
118
-
119
- assert_equal({
120
- 1 => 'a',
121
- 2 => 'b',
122
- 3 => 'c',
123
- },
124
- data.rekey(:i, :v)
125
- )
126
- end
127
-
128
-
129
- end
@@ -1,25 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'set'
3
- require_relative '../lib/rekey'
4
-
5
-
6
- class RekeyEmptyInputTest < Minitest::Test
7
-
8
- def test_all
9
- assert_equal(
10
- {},
11
- [].rekey(:k, :v)
12
- )
13
-
14
- assert_equal(
15
- {},
16
- {}.rekey(:k, :v)
17
- )
18
-
19
- assert_equal(
20
- {},
21
- Set.new.rekey(:k, :v)
22
- )
23
- end
24
-
25
- end
@@ -1,74 +0,0 @@
1
- require 'minitest/autorun'
2
- require_relative '../lib/rekey'
3
-
4
-
5
- class RekeyHashBlockTest < Minitest::Test
6
- def setup
7
- @input = {
8
- a: 1,
9
- b: 2,
10
- c: 3,
11
- }
12
- end
13
-
14
- def test_arity1_keys
15
- assert_equal({
16
- 1 => 1,
17
- 2 => 2,
18
- 3 => 3,
19
- },
20
- @input.rekey {|v| v }
21
- )
22
-
23
- assert_equal({
24
- '1' => 1,
25
- '2' => 2,
26
- '3' => 3,
27
- },
28
- @input.rekey {|v| v.to_s }
29
- )
30
-
31
- # it can use Arrays as Hash keys...if you really want to
32
- assert_equal({
33
- [1] => 1,
34
- [2] => 2,
35
- [3] => 3,
36
- },
37
- @input.rekey {|v| [v] }
38
- )
39
- end
40
-
41
- def test_arity2_keys
42
- assert_equal({
43
- 1 => 1,
44
- 2 => 2,
45
- 3 => 3,
46
- },
47
- @input.rekey {|k, v| v }
48
- )
49
-
50
- assert_equal({
51
- a: 1,
52
- b: 2,
53
- c: 3,
54
- },
55
- @input.rekey {|k, v| k }
56
- )
57
-
58
- assert_equal({
59
- 'aa' => 1,
60
- 'bb' => 2,
61
- 'cc' => 3,
62
- },
63
- @input.rekey {|k, v| k.to_s * 2 }
64
- )
65
- end
66
-
67
- def test_nil_key
68
- assert_equal(
69
- { nil => 3 },
70
- @input.rekey {|k, v| nil }
71
- )
72
- end
73
-
74
- end
@@ -1,112 +0,0 @@
1
- require 'minitest/autorun'
2
- require_relative '../lib/rekey'
3
-
4
-
5
- class RekeyHashHandlersTest < Minitest::Test
6
-
7
- def setup
8
- @input = {
9
- a: 1,
10
- b: 2,
11
- c: 3,
12
- }
13
- end
14
-
15
-
16
- def test_keys
17
- assert_equal({
18
- '1' => 1,
19
- '2' => 2,
20
- '3' => 3,
21
- },
22
- @input.rekey(:to_s)
23
- )
24
-
25
- assert_equal({
26
- 1.0 => 1,
27
- 2.0 => 2,
28
- 3.0 => 3,
29
- },
30
- @input.rekey(:to_f)
31
- )
32
- end
33
-
34
-
35
- def test_both
36
- assert_equal({
37
- 1 => 1,
38
- 2 => 2,
39
- 3 => 3,
40
- },
41
- @input.rekey(:to_i, :to_i)
42
- )
43
-
44
- assert_equal({
45
- '1' => 1.0,
46
- '2' => 2.0,
47
- '3' => 3.0,
48
- },
49
- @input.rekey(:to_s, :to_i)
50
- )
51
-
52
- assert_equal({
53
- '1' => 1.0,
54
- '2' => 2.0,
55
- '3' => 3.0,
56
- },
57
- @input.rekey('to_s', 'to_i')
58
- )
59
- end
60
-
61
-
62
- def test_hash_array
63
- data = {
64
- a: [ 1, 2, 3 ],
65
- b: [ 4, 5, 6 ],
66
- c: [ 7, 8, 9 ],
67
- }
68
-
69
- assert_equal({
70
- 1 => 2,
71
- 4 => 5,
72
- 7 => 8,
73
- },
74
- data.rekey(0, 1)
75
- )
76
-
77
- assert_equal({
78
- 1 => 3,
79
- 4 => 6,
80
- 7 => 9,
81
- },
82
- data.rekey(:min, :max)
83
- )
84
- end
85
-
86
-
87
- def test_hash_hash
88
- data = {
89
- a: { i: 1, v: 2 },
90
- b: { i: 2, v: 4 },
91
- c: { i: 3, v: 6 },
92
- }
93
-
94
- assert_equal({
95
- 1 => { i: 1, v: 2 },
96
- 2 => { i: 2, v: 4 },
97
- 3 => { i: 3, v: 6 },
98
- },
99
- data.rekey(:i)
100
- )
101
-
102
- assert_equal({
103
- 1 => 2,
104
- 2 => 4,
105
- 3 => 6,
106
- },
107
- data.rekey(:i, :v)
108
- )
109
-
110
- end
111
-
112
- end
@@ -1,50 +0,0 @@
1
- require 'minitest/autorun'
2
- require_relative '../lib/rekey'
3
-
4
-
5
- class RekeyInvalidInputTest < Minitest::Test
6
- def setup
7
- @input = [*1..3]
8
- end
9
-
10
-
11
- def test_nil
12
- assert_raises ArgumentError do
13
- @input.rekey
14
- end
15
-
16
- assert_raises ArgumentError do
17
- @input.rekey nil
18
- end
19
-
20
- assert_raises ArgumentError do
21
- @input.rekey nil, :v
22
- end
23
-
24
- # unfortunately, these still pass
25
- @input.rekey(nil) {|v| v}
26
- @input.rekey(nil, nil) {|v| v}
27
- end
28
-
29
-
30
- def test_handles_and_block
31
- assert_raises ArgumentError do
32
- @input.rekey(:k) {|k| 1}
33
- end
34
-
35
- assert_raises ArgumentError do
36
- @input.rekey(:k, :v) {|k| 1}
37
- end
38
- end
39
-
40
-
41
- def test_block_underflow
42
- # block requesting key and value, but @input
43
- # doesn't have keys
44
- assert_raises ArgumentError do
45
- @input.rekey {|k, v| 1}
46
- end
47
- end
48
-
49
-
50
- end
@@ -1,44 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'set'
3
- require_relative '../lib/rekey/rekey'
4
-
5
-
6
- class MonkeyPatchingTest < Minitest::Test
7
-
8
- def test_not_installed
9
- if defined? Rekey::VERSION
10
- # entire library was loaded, so these tests are invalid.
11
- # this happens when run through `rake`
12
- skip
13
- end
14
-
15
- # `require 'rekey/rekey'` should load Rekey
16
- assert Rekey
17
-
18
- # but no monkey patching
19
- assert_raises NoMethodError do
20
- [ 1, 2, 3 ].rekey 0
21
- end
22
-
23
- assert_raises NoMethodError do
24
- { a: 1 }.rekey 0
25
- end
26
-
27
- assert_raises NoMethodError do
28
- Set.new([ 1, 2, 3 ]).rekey 0
29
- end
30
-
31
- puts 'yay, no monkey patching'
32
- end
33
-
34
-
35
- def test_pluckit
36
- assert PluckIt
37
-
38
- assert_raises NoMethodError do
39
- [ 1, 2, 3 ].pluck 0
40
- end
41
- end
42
-
43
-
44
- end
data/test/test_range.rb DELETED
@@ -1,30 +0,0 @@
1
- require 'minitest/autorun'
2
- require_relative '../lib/rekey'
3
-
4
-
5
- class RekeyRangeTest < Minitest::Test
6
-
7
- def setup
8
- @input = [
9
- [ 1, 2, 3 ],
10
- [ 4, 5, 6 ],
11
- ]
12
- end
13
-
14
- def test_stuff
15
- assert_equal({
16
- [ 1, 2 ] => [ 1, 2, 3 ],
17
- [ 4, 5 ] => [ 4, 5, 6 ],
18
- },
19
- @input.rekey(0..1)
20
- )
21
-
22
- assert_equal({
23
- 3 => [ 1, 2 ],
24
- 6 => [ 4, 5 ],
25
- },
26
- @input.rekey(2, 0..1)
27
- )
28
- end
29
-
30
- end
data/test/test_regexp.rb DELETED
@@ -1,30 +0,0 @@
1
- require 'minitest/autorun'
2
- require_relative '../lib/rekey'
3
-
4
-
5
- class RekeyRegexpTest < Minitest::Test
6
-
7
- def setup
8
- @input = [
9
- [ 'a', 'aa', 'b', 'ba', 'dd' ],
10
- [ 'b', 'c', 'bc', 'de' ],
11
- ]
12
- end
13
-
14
- def test_stuff
15
- assert_equal({
16
- 'a' => ['a', 'aa', 'ba'],
17
- 'b' => [],
18
- },
19
- @input.rekey(0, /a/)
20
- )
21
-
22
- assert_equal({
23
- ['dd'] => ['b', 'ba'],
24
- ['de'] => ['b', 'bc'],
25
- },
26
- @input.rekey(/d/, /b/)
27
- )
28
- end
29
-
30
- end