mug 1.2.3 → 1.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 336091bdd667f90f8f3bc7e18ebdbebd6d2b9e1ff834421c9cad1f5ed12e0c8f
4
- data.tar.gz: dbbcb45a242ac384202cf5924656be9b56d91d245a91c8202dfe0946a0abcf69
3
+ metadata.gz: 986518f2bdb9b2e66fa37baefbf2bb63a191dd6e97626e7626c5475cea9c674d
4
+ data.tar.gz: 0ed805639f4a57ba0a361dcd010d86ba240e31df4d0beef3209d782c8d663986
5
5
  SHA512:
6
- metadata.gz: bfd557d429b67a7f03634ff6075013b63c9f8e9efcce33f6504811c85f3b34b45c76d1ceb096645c42b700e5de9ae68bb29f6fed0e9b01129a5a1b62463e1860
7
- data.tar.gz: 227a68842c9a147deaf47cb958c11929c7739b762fb4888e85551d317eea7f7078603004b1df4ec76840e303936e82c4e57111bfeb00b0788ed70fd7c8564c59
6
+ metadata.gz: d03ef238645b74dff18bc5daa037403c14963406f6c2875b757543ba2acbeb219bdf70ea1fd54f228d10ceff3f21cb4325ece5f9b34dcef78cb261d01aa7b718
7
+ data.tar.gz: 5dee2f65ab4aa79e6b7d425cf5512cefb601d329884c9ae512dd450240a430ed78186c5c64d7ec7f8e59e589beb94fd877f4c2b865091655c072dae8dc4b334a
@@ -78,9 +78,11 @@ class Hash
78
78
  end
79
79
 
80
80
  #
81
- # Replaces the values in +hsh+ by running them each through +block+.
81
+ # Replaces the keys and values in +hsh+ by running them each through +block+.
82
82
  #
83
- # See: #map_values
83
+ # If +block+ returns duplicate keys, they will be overwritten.
84
+ #
85
+ # See: #map_pairs
84
86
  #
85
87
  def map_pairs! &block # :yields: key, value
86
88
  return enum_for(:map_pairs!) unless block_given?
@@ -23,7 +23,7 @@ class Iterator < Enumerator
23
23
  # given method with any +args+ to the iterand.
24
24
  #
25
25
  # Use of this form is discouraged. Use Object#iter_for or
26
- # Object#to_iter instead.
26
+ # Method#to_iter instead.
27
27
  #
28
28
  # @call-seq new(initial, *args) { |obj, *args| ... }
29
29
  # @call-seq new(initial, method=:each, *args)
@@ -5,7 +5,7 @@ module Kernel
5
5
  #
6
6
  def with *args
7
7
  return enum_for(:with, *args) unless block_given?
8
- yield *args
8
+ yield(*args)
9
9
  end
10
10
  private :with
11
11
  end
@@ -0,0 +1,17 @@
1
+ class Test_clamp < Test::Unit::TestCase
2
+
3
+ def test_clamp__endless_range
4
+ rng = (1..)
5
+ assert_raise(RangeError) { 2.clamp(rng) }
6
+ end
7
+
8
+ def test_bound__endless
9
+ rng = (1..)
10
+ assert_raise(RangeError) { rng.bound(2) }
11
+
12
+ rng = (1...)
13
+ assert_raise(RangeError) { rng.bound(2) }
14
+ end
15
+
16
+ end
17
+
@@ -0,0 +1,17 @@
1
+ class Test_clamp < Test::Unit::TestCase
2
+
3
+ def test_clamp__beginless_range
4
+ rng = (..3)
5
+ assert_raise(RangeError) { 2.clamp(rng) }
6
+ end
7
+
8
+ def test_bound__beginless
9
+ rng = (..3)
10
+ assert_raise(RangeError) { rng.bound(2) }
11
+
12
+ rng = (...3)
13
+ assert_raise(RangeError) { rng.bound(2) }
14
+ end
15
+
16
+ end
17
+
@@ -1,54 +1,54 @@
1
1
  require 'test/unit'
2
2
  $VERBOSE = true
3
3
 
4
- class ::DummyClass
5
- def self.dummy_method
6
- :ok
7
- end
8
- def self.clobber_method
9
- :original
10
- end
11
- end
12
-
13
4
  require_relative '../lib/mug/alias'
14
5
  class Test_alias < Test::Unit::TestCase
15
6
 
7
+ class DummyClass
8
+ def self.dummy_method
9
+ :ok
10
+ end
11
+ def self.clobber_method
12
+ :original
13
+ end
14
+ end
15
+
16
16
  def test_alias
17
- assert_equal( :ok, ::DummyClass.dummy_method )
18
- assert_raise(NoMethodError) { ::DummyClass.aliased_method }
17
+ assert_equal( :ok, DummyClass.dummy_method )
18
+ assert_raise(NoMethodError) { DummyClass.aliased_method }
19
19
 
20
- ::DummyClass.instance_eval do
20
+ DummyClass.instance_eval do
21
21
  alias_singleton_method :aliased_method, :dummy_method
22
22
  end
23
23
 
24
- assert_equal( :ok, ::DummyClass.dummy_method )
25
- assert_equal( :ok, ::DummyClass.aliased_method )
24
+ assert_equal( :ok, DummyClass.dummy_method )
25
+ assert_equal( :ok, DummyClass.aliased_method )
26
26
  end
27
27
 
28
28
  def test_alias_safe
29
- assert_equal( :original, ::DummyClass.clobber_method )
29
+ assert_equal( :original, DummyClass.clobber_method )
30
30
 
31
- ::DummyClass.instance_eval do
31
+ DummyClass.instance_eval do
32
32
  alias_singleton_method :unclobbered_method, :clobber_method
33
33
  def self.clobber_method
34
34
  :clobbered
35
35
  end
36
36
  end
37
37
 
38
- assert_equal( :clobbered, ::DummyClass.clobber_method )
39
- assert_equal( :original, ::DummyClass.unclobbered_method )
38
+ assert_equal( :clobbered, DummyClass.clobber_method )
39
+ assert_equal( :original, DummyClass.unclobbered_method )
40
40
  end
41
41
 
42
42
  def test_alias_return
43
43
  result = nil
44
- ::DummyClass.instance_eval do
44
+ DummyClass.instance_eval do
45
45
  result = alias_singleton_method :aliased_method2, :dummy_method
46
46
  end
47
- assert_equal( ::DummyClass, result )
47
+ assert_equal( DummyClass, result )
48
48
  end
49
49
 
50
50
  def test_alias_private
51
- assert_raise(NoMethodError) { ::DummyClass.alias_singleton_method :aliased_method3, :dummy_method }
51
+ assert_raise(NoMethodError) { DummyClass.alias_singleton_method :aliased_method3, :dummy_method }
52
52
  end
53
53
 
54
54
  end
@@ -1,14 +1,15 @@
1
1
  require 'test/unit'
2
2
  $VERBOSE = true
3
3
 
4
- class Foo
5
- def bar a, b
6
- (a||0) + (b||0)
7
- end
8
- end
9
-
10
4
  require_relative '../lib/mug/apply'
11
5
  class Test_apply < Test::Unit::TestCase
6
+
7
+ class Foo
8
+ def bar a, b
9
+ (a||0) + (b||0)
10
+ end
11
+ end
12
+
12
13
  def test_apply_proc
13
14
  prc = proc{|a,b,*c| (a||0) + (b||0) + c.inject(0, &:+) }
14
15
  p1 = prc.apply(1)
@@ -1,29 +1,30 @@
1
1
  require 'test/unit'
2
2
  $VERBOSE = true
3
3
 
4
- $ARRAY = proc { 8.times.to_a }
5
- $TRIES = 40320 # 8 factorial
6
- $MIN = 4
7
- $MAX = 6
4
+ require_relative '../lib/mug/array/samples'
5
+ class Test_array_extend < Test::Unit::TestCase
8
6
 
9
- class MyPRNG
10
- def rand n=1.0
11
- case n
12
- when Integer
13
- n - 1
14
- when Range
15
- n.max
16
- when Float
17
- n.prev_float
7
+ class MyPRNG
8
+ def rand n=1.0
9
+ case n
10
+ when Integer
11
+ n - 1
12
+ when Range
13
+ n.max
14
+ when Float
15
+ n.prev_float
16
+ end
18
17
  end
19
18
  end
20
- end
21
19
 
22
- require_relative '../lib/mug/array/samples'
23
- class Test_array_extend < Test::Unit::TestCase
20
+ ARRAY = proc { 8.times.to_a }
21
+ TRIES = 40320 # 8 factorial
22
+ MIN = 4
23
+ MAX = 6
24
+
24
25
  def test_samples
25
- a = $ARRAY.call
26
- $TRIES.times do
26
+ a = ARRAY.call
27
+ TRIES.times do
27
28
  s = a.samples
28
29
  assert( s.length >= 1 )
29
30
  assert( s.length <= a.length )
@@ -32,11 +33,11 @@ class Test_array_extend < Test::Unit::TestCase
32
33
  end
33
34
  end
34
35
  def test_samples_min
35
- a = $ARRAY.call
36
+ a = ARRAY.call
36
37
  # successes
37
- $TRIES.times do
38
- s = a.samples( :min => $MIN )
39
- assert( s.length >= $MIN )
38
+ TRIES.times do
39
+ s = a.samples( :min => MIN )
40
+ assert( s.length >= MIN )
40
41
  assert( s.length <= a.length )
41
42
  assert( s.uniq == s )
42
43
  assert( s.all? {|n| a.include? n } )
@@ -45,12 +46,12 @@ class Test_array_extend < Test::Unit::TestCase
45
46
  assert_raise( ArgumentError ) { a.samples( :min => -1 ) }
46
47
  end
47
48
  def test_samples_max
48
- a = $ARRAY.call
49
+ a = ARRAY.call
49
50
  # successes
50
- $TRIES.times do
51
- s = a.samples( :max => $MAX )
51
+ TRIES.times do
52
+ s = a.samples( :max => MAX )
52
53
  assert( s.length >= 1 )
53
- assert( s.length <= $MAX )
54
+ assert( s.length <= MAX )
54
55
  assert( s.uniq == s )
55
56
  assert( s.all? {|n| a.include? n } )
56
57
  end
@@ -58,21 +59,21 @@ class Test_array_extend < Test::Unit::TestCase
58
59
  assert_raise( ArgumentError ) { a.samples( :max => -1 ) }
59
60
  end
60
61
  def test_samples_minmax
61
- a = $ARRAY.call
62
+ a = ARRAY.call
62
63
  # successes
63
- $TRIES.times do
64
- s = a.samples( :min => $MIN, :max => $MAX )
65
- assert( s.length >= $MIN )
66
- assert( s.length <= $MAX )
64
+ TRIES.times do
65
+ s = a.samples( :min => MIN, :max => MAX )
66
+ assert( s.length >= MIN )
67
+ assert( s.length <= MAX )
67
68
  assert( s.uniq == s )
68
69
  assert( s.all? {|n| a.include? n } )
69
70
  end
70
71
  # failures
71
- assert_raise( ArgumentError ) { a.samples( :min => $MAX, :max => $MIN ) }
72
+ assert_raise( ArgumentError ) { a.samples( :min => MAX, :max => MIN ) }
72
73
  end
73
74
  def test_samples_random
74
- a = $ARRAY.call
75
- $TRIES.times do
75
+ a = ARRAY.call
76
+ TRIES.times do
76
77
  s = a.samples( :random => Random.new )
77
78
  assert( s.length >= 1 )
78
79
  assert( s.length <= a.length )
@@ -81,8 +82,8 @@ class Test_array_extend < Test::Unit::TestCase
81
82
  end
82
83
  end
83
84
  def test_samples_random2
84
- a = $ARRAY.call
85
- $TRIES.times do
85
+ a = ARRAY.call
86
+ TRIES.times do
86
87
  s = a.samples( :random => MyPRNG.new )
87
88
  assert( s.length >= 1 )
88
89
  assert( s.length <= a.length )
@@ -1,23 +1,23 @@
1
1
  require 'test/unit'
2
2
  $VERBOSE = true
3
3
 
4
- class MyEnum
5
- include Enumerable
6
- def initialize(*a) @a=a; end
7
- def each(&b) @a.each(&b); end
8
- end
9
-
10
- if RUBY_VERSION.to_i >= 2
11
- $truthy = [ 1, 1.0, Float::INFINITY, -Float::INFINITY, (1<<100).coerce(1).first, Rational(1,1), "x", [1], {1=>1}, MyEnum.new(1), [1].each ]
12
- $falsy = [ 0, 0.0, -0.0, Float::NAN, (1<<100).coerce(0).first, Rational(0,1), "", [], {}, MyEnum.new, [].each, RuntimeError.new ]
13
- else
14
- $truthy = [ 1, 1.0, Float::INFINITY, -Float::INFINITY, (1<<100).coerce(1).first, Rational(1,1), "x", [1], {1=>1}, MyEnum.new(1) ]
15
- $falsy = [ 0, 0.0, -0.0, Float::NAN, (1<<100).coerce(0).first, Rational(0,1), "", [], {}, MyEnum.new, RuntimeError.new ]
16
- end
17
-
18
4
  require_relative '../lib/mug/bool'
19
5
  class Test_bool < Test::Unit::TestCase
20
6
 
7
+ class MyEnum
8
+ include Enumerable
9
+ def initialize(*a) @a=a; end
10
+ def each(&b) @a.each(&b); end
11
+ end
12
+
13
+ if RUBY_VERSION.to_i >= 2
14
+ TRUTHY = [ 1, 1.0, Float::INFINITY, -Float::INFINITY, (1<<100).coerce(1).first, Rational(1,1), "x", [1], {1=>1}, MyEnum.new(1), [1].each ]
15
+ FALSY = [ 0, 0.0, -0.0, Float::NAN, (1<<100).coerce(0).first, Rational(0,1), "", [], {}, MyEnum.new, [].each, RuntimeError.new ]
16
+ else
17
+ TRUTHY = [ 1, 1.0, Float::INFINITY, -Float::INFINITY, (1<<100).coerce(1).first, Rational(1,1), "x", [1], {1=>1}, MyEnum.new(1) ]
18
+ FALSY = [ 0, 0.0, -0.0, Float::NAN, (1<<100).coerce(0).first, Rational(0,1), "", [], {}, MyEnum.new, RuntimeError.new ]
19
+ end
20
+
21
21
  alias assert_true assert
22
22
  def assert_false val, msg=UNASSIGNED
23
23
  assert !val, msg
@@ -35,10 +35,10 @@ class Test_bool < Test::Unit::TestCase
35
35
  assert_true( Bool(true), true_msg(true) )
36
36
  assert_false( Bool(false), false_msg(false) )
37
37
  assert_false( Bool(nil), false_msg(false) )
38
- $truthy.each do |o|
38
+ TRUTHY.each do |o|
39
39
  assert_true( Bool(o), true_msg(o) )
40
40
  end
41
- $falsy.each do |o|
41
+ FALSY.each do |o|
42
42
  assert_true( Bool(o), true_msg(o) )
43
43
  end
44
44
  end
@@ -47,10 +47,10 @@ class Test_bool < Test::Unit::TestCase
47
47
  assert_true( true.to_bool, true_msg(true,'to_bool') )
48
48
  assert_false( false.to_bool, false_msg(false,'to_bool') )
49
49
  assert_false( nil.to_bool, false_msg(nil,'to_bool') )
50
- $truthy.each do |o|
50
+ TRUTHY.each do |o|
51
51
  assert_true( o.to_bool, true_msg(o,'to_bool') )
52
52
  end
53
- $falsy.each do |o|
53
+ FALSY.each do |o|
54
54
  assert_true( o.to_bool, true_msg(o,'to_bool') )
55
55
  end
56
56
  end
@@ -59,10 +59,10 @@ class Test_bool < Test::Unit::TestCase
59
59
  assert_true( true.to_b, true_msg(true,'to_b') )
60
60
  assert_false( false.to_b, false_msg(false,'to_b') )
61
61
  assert_false( nil.to_b, false_msg(nil,'to_b') )
62
- $truthy.each do |o|
62
+ TRUTHY.each do |o|
63
63
  assert_true( o.to_b, true_msg(o,'to_b') )
64
64
  end
65
- $falsy.each do |o|
65
+ FALSY.each do |o|
66
66
  assert_false( o.to_b, false_msg(o,'to_b') )
67
67
  end
68
68
  end
@@ -46,6 +46,13 @@ class Test_clamp < Test::Unit::TestCase
46
46
  assert_raise(ArgumentError) { rng.bound(5) }
47
47
  assert_raise(ArgumentError) { rng.bound(6) }
48
48
  end
49
+ end
50
+
51
+ if RUBY_VERSION.to_f >= 2.6
52
+ require_relative '2-6-test-clamp'
53
+ end
49
54
 
55
+ if RUBY_VERSION.to_f >= 2.7
56
+ require_relative '2-7-test-clamp'
50
57
  end
51
58
 
@@ -1,19 +1,20 @@
1
1
  require 'test/unit'
2
2
  $VERBOSE = true
3
3
 
4
- class HashLikeEnum
5
- def each
6
- return enum_for(:each) unless block_given?
7
- yield 'a'
8
- yield 'b'
9
- yield 'c'
10
- yield 'd'
11
- end
12
- include Enumerable
13
- end
14
-
15
4
  require_relative '../lib/mug/enumerable/hash-like'
16
5
  class Test_hashlike < Test::Unit::TestCase
6
+
7
+ class HashLikeEnum
8
+ def each
9
+ return enum_for(:each) unless block_given?
10
+ yield 'a'
11
+ yield 'b'
12
+ yield 'c'
13
+ yield 'd'
14
+ end
15
+ include Enumerable
16
+ end
17
+
17
18
  def test__each_pair__block
18
19
  my_enum = HashLikeEnum.new
19
20
  expect = [[0, 'a'], [1, 'b'], [2, 'c'], [3, 'd']]
@@ -1,28 +1,38 @@
1
1
  require 'test/unit'
2
2
  $VERBOSE = true
3
3
 
4
- module FMCTest
5
- class A
6
- def initialize; @b = B.new; end
7
- attr_accessor :b
8
- end
4
+ require_relative '../lib/mug/fragile-method-chain'
5
+ class Test_fmc < Test::Unit::TestCase
9
6
 
10
- class B
11
- def initialize; @c = C.new; end
12
- attr_accessor :c
13
- end
7
+ module FMCTest
8
+ class A
9
+ def initialize; @b = B.new; end
10
+ attr_accessor :b
11
+ end
12
+
13
+ class B
14
+ def initialize; @c = C.new; end
15
+ attr_accessor :c
16
+ end
14
17
 
15
- class C
16
- def to_i; 1; end
18
+ class C
19
+ def to_i; 1; end
20
+ end
17
21
  end
18
- end
19
22
 
20
- def false.c
21
- 2
22
- end
23
+ def self.startup
24
+ class << false
25
+ def c
26
+ 2
27
+ end
28
+ end
29
+ end
30
+ def self.shutdown
31
+ class << false
32
+ undef c
33
+ end
34
+ end
23
35
 
24
- require_relative '../lib/mug/fragile-method-chain'
25
- class Test_fmc < Test::Unit::TestCase
26
36
  def test_fmc_nil
27
37
  a = FMCTest::A.new
28
38
  assert_equal( 1, a._?.b.c.to_i._! )
@@ -1,28 +1,38 @@
1
1
  require 'test/unit'
2
2
  $VERBOSE = true
3
3
 
4
- module MaybeTest
5
- class A
6
- def initialize; @b = B.new; end
7
- attr_accessor :b
8
- end
4
+ require_relative '../lib/mug/maybe'
5
+ class Test_maybe < Test::Unit::TestCase
9
6
 
10
- class B
11
- def initialize; @c = C.new; end
12
- attr_accessor :c
13
- end
7
+ module MaybeTest
8
+ class A
9
+ def initialize; @b = B.new; end
10
+ attr_accessor :b
11
+ end
12
+
13
+ class B
14
+ def initialize; @c = C.new; end
15
+ attr_accessor :c
16
+ end
14
17
 
15
- class C
16
- def to_i; 1; end
18
+ class C
19
+ def to_i; 1; end
20
+ end
17
21
  end
18
- end
19
22
 
20
- def false.c
21
- 2
22
- end
23
+ def self.startup
24
+ class << false
25
+ def c
26
+ 2
27
+ end
28
+ end
29
+ end
30
+ def self.shutdown
31
+ class << false
32
+ undef c
33
+ end
34
+ end
23
35
 
24
- require_relative '../lib/mug/maybe'
25
- class Test_maybe < Test::Unit::TestCase
26
36
  def test_maybe_block_nil
27
37
  a = MaybeTest::A.new
28
38
  assert_equal( 1, a.maybe{ b.maybe{ c } }.to_i )
@@ -1,15 +1,6 @@
1
1
  require 'test/unit'
2
2
  $VERBOSE = true
3
3
 
4
- class ::DummyClass
5
- def self.dummy_method
6
- :ok
7
- end
8
- def self.clobber_method
9
- :original
10
- end
11
- end
12
-
13
4
  require_relative '../lib/mug/with'
14
5
  class Test_with < Test::Unit::TestCase
15
6
 
@@ -39,7 +30,7 @@ class Test_with < Test::Unit::TestCase
39
30
  end
40
31
 
41
32
  def test_with__private
42
- assert_raise(NoMethodError) { self.with }
33
+ assert_raise(NoMethodError) { Object.new.with }
43
34
  end
44
35
 
45
36
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mug
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.3
4
+ version: 1.2.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Kerwin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-10-15 00:00:00.000000000 Z
11
+ date: 2020-11-11 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |
14
14
  == MUG: Matty's Ultimate Gem
@@ -70,6 +70,8 @@ files:
70
70
  - lib/mug/to_h.rb
71
71
  - lib/mug/top.rb
72
72
  - lib/mug/with.rb
73
+ - test/2-6-test-clamp.rb
74
+ - test/2-7-test-clamp.rb
73
75
  - test/test-affix.rb
74
76
  - test/test-alias.rb
75
77
  - test/test-and-or.rb
@@ -126,7 +128,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
126
128
  - !ruby/object:Gem::Version
127
129
  version: '0'
128
130
  requirements: []
129
- rubygems_version: 3.0.3
131
+ rubygems_version: 3.1.2
130
132
  signing_key:
131
133
  specification_version: 4
132
134
  summary: 'MUG: Matty''s Ultimate Gem'
@@ -145,6 +147,7 @@ test_files:
145
147
  - test/test-not.rb
146
148
  - test/test-array-extend.rb
147
149
  - test/test-iterator-for.rb
150
+ - test/2-6-test-clamp.rb
148
151
  - test/test-top.rb
149
152
  - test/test-and-or.rb
150
153
  - test/test-array-to_proc.rb
@@ -167,4 +170,5 @@ test_files:
167
170
  - test/test-iterator-method.rb
168
171
  - test/test-apply.rb
169
172
  - test/test-array-minus.rb
173
+ - test/2-7-test-clamp.rb
170
174
  - test/test-fragile-method-chain.rb