mug 0.5.4 → 0.5.5

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
2
  SHA1:
3
- metadata.gz: 4c1c6c199bc0b20f762e2ddc28c8e27d1afef202
4
- data.tar.gz: fe61f0da462afe3afda46c1e4a7e1efe0567c55c
3
+ metadata.gz: ed5f24e06ddab5269fc3e36f7ad473aa0767c68e
4
+ data.tar.gz: 1d018601b7dc7f8012d08b21005f49bb6cf2fabc
5
5
  SHA512:
6
- metadata.gz: 153d565d0327384349577c8860bd65b6535a08df5639f1a0f42b61fee9edb5f3d23ef70821921a64d8492ea6d1c697923214b673f6059d16512e1556e0bfbc8b
7
- data.tar.gz: 8753cd45eaf6e9e05e6f60678f9c8dce87055de4c9be7b95b1c6a0f2be28d4cb6e93cba67045b5b7958e091c8e36c7650abf411944043e06f1446f57bbb91886
6
+ metadata.gz: e1f704861c0d8d01dc643d25e0b8d5bc3cbb3db3e9f19baa4e239c8e92b1fdabaaf7ea8f4498f66d89b2a24d2c2d7ca5055567794456ef86acef4955517224fe
7
+ data.tar.gz: 22736ef5315007ae6f140e9ecc50198518208fbf2f4d19eca219e3a4b56846f631044dab7f0b0975322a88c63bde7fb348345108e685e49dee438fa36886e53f
data/lib/mug.rb CHANGED
@@ -6,6 +6,7 @@ require_relative 'mug/array/extend'
6
6
  require_relative 'mug/array/minus'
7
7
  require_relative 'mug/array/samples'
8
8
  require_relative 'mug/bool'
9
+ require_relative 'mug/bittest'
9
10
  require_relative 'mug/clamp'
10
11
  require_relative 'mug/counts'
11
12
  require_relative 'mug/fragile-method-chain'
@@ -25,7 +25,7 @@ class Array
25
25
  raise ArgumentError, "wrong number of arguments (#{rest.length+1} for 1..2)" if rest.length > 1
26
26
 
27
27
  # Same logic as array.c/rb_ary_initialize
28
- if rest.empty? && !size.is_a?(Fixnum)
28
+ if rest.empty? && !size.is_a?(Integer)
29
29
  warn 'warning: given block not used' if block_given?
30
30
  concat size.to_ary
31
31
  return self
@@ -0,0 +1,72 @@
1
+
2
+ class Integer
3
+
4
+ ##
5
+ # Tests common bits in +this+ AND +other+.
6
+ #
7
+ # test:
8
+ # :any => true if any bits are set
9
+ # :all => true if all bits are set
10
+ #
11
+ def and? other, test: :any
12
+ case test.to_sym
13
+ when :any
14
+ and_any? other
15
+ when :all
16
+ and_all? other
17
+ else
18
+ raise ArgumentError, "invalid value for 'test' (given #{test.inspect}, should be :any or :all)"
19
+ end
20
+ end
21
+
22
+ ##
23
+ # True if +this+ AND +other+ is non-zero.
24
+ #
25
+ # i.e. if any set bits in +other+ are set in +this+.
26
+ #
27
+ def and_any? other
28
+ return false if other.zero?
29
+ self & other != 0
30
+ end
31
+
32
+ ##
33
+ # True if +this+ AND +other+ is +other+.
34
+ #
35
+ # i.e. if all set bits in +other+ are set in +this+.
36
+ #
37
+ def and_all? other
38
+ return false if other.zero?
39
+ self & other == other
40
+ end
41
+
42
+ ##
43
+ # True if +this+ OR +other+ is non-zero.
44
+ #
45
+ def or? other
46
+ self | other != 0
47
+ end
48
+
49
+ ##
50
+ # True if +this+ XOR +other+ is non-zero.
51
+ #
52
+ def xor? other
53
+ self ^ other != 0
54
+ end
55
+
56
+ end
57
+
58
+ =begin
59
+ Copyright (c) 2016, Matthew Kerwin <matthew@kerwin.net.au>
60
+
61
+ Permission to use, copy, modify, and/or distribute this software for any
62
+ purpose with or without fee is hereby granted, provided that the above
63
+ copyright notice and this permission notice appear in all copies.
64
+
65
+ THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
66
+ WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
67
+ MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
68
+ ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
69
+ WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
70
+ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
71
+ OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
72
+ =end
@@ -7,12 +7,14 @@ $MIN = 4
7
7
  $MAX = 6
8
8
 
9
9
  class MyPRNG
10
- def rand n
10
+ def rand n=1.0
11
11
  case n
12
12
  when Integer
13
13
  n - 1
14
14
  when Range
15
15
  n.max
16
+ when Float
17
+ n.prev_float
16
18
  end
17
19
  end
18
20
  end
@@ -0,0 +1,121 @@
1
+ require 'test/unit'
2
+ $VERBOSE = true
3
+
4
+ $and_any = [
5
+ [0b00,0b00,false],
6
+ [0b00,0b01,false],
7
+ [0b00,0b10,false],
8
+ [0b00,0b11,false],
9
+ [0b01,0b00,false],
10
+ [0b01,0b01,true],
11
+ [0b01,0b10,false],
12
+ [0b01,0b11,true],
13
+ [0b10,0b00,false],
14
+ [0b10,0b01,false],
15
+ [0b10,0b10,true],
16
+ [0b10,0b11,true],
17
+ [0b11,0b00,false],
18
+ [0b11,0b01,true],
19
+ [0b11,0b10,true],
20
+ [0b11,0b11,true],
21
+ ]
22
+ $and_all = [
23
+ [0b00,0b00,false],
24
+ [0b00,0b01,false],
25
+ [0b00,0b10,false],
26
+ [0b00,0b11,false],
27
+ [0b01,0b00,false],
28
+ [0b01,0b01,true],
29
+ [0b01,0b10,false],
30
+ [0b01,0b11,false],
31
+ [0b10,0b00,false],
32
+ [0b10,0b01,false],
33
+ [0b10,0b10,true],
34
+ [0b10,0b11,false],
35
+ [0b11,0b00,false],
36
+ [0b11,0b01,true],
37
+ [0b11,0b10,true],
38
+ [0b11,0b11,true],
39
+ ]
40
+ $or = [
41
+ [0b00,0b00,false],
42
+ [0b00,0b01,true],
43
+ [0b00,0b10,true],
44
+ [0b00,0b11,true],
45
+ [0b01,0b00,true],
46
+ [0b01,0b01,true],
47
+ [0b01,0b10,true],
48
+ [0b01,0b11,true],
49
+ [0b10,0b00,true],
50
+ [0b10,0b01,true],
51
+ [0b10,0b10,true],
52
+ [0b10,0b11,true],
53
+ [0b11,0b00,true],
54
+ [0b11,0b01,true],
55
+ [0b11,0b10,true],
56
+ [0b11,0b11,true],
57
+ ]
58
+ $xor = [
59
+ [0b00,0b00,false],
60
+ [0b00,0b01,true],
61
+ [0b00,0b10,true],
62
+ [0b00,0b11,true],
63
+ [0b01,0b00,true],
64
+ [0b01,0b01,false],
65
+ [0b01,0b10,true],
66
+ [0b01,0b11,true],
67
+ [0b10,0b00,true],
68
+ [0b10,0b01,true],
69
+ [0b10,0b10,false],
70
+ [0b10,0b11,true],
71
+ [0b11,0b00,true],
72
+ [0b11,0b01,true],
73
+ [0b11,0b10,true],
74
+ [0b11,0b11,false],
75
+ ]
76
+
77
+ require_relative '../lib/mug/bittest'
78
+ class Test_bittest < Test::Unit::TestCase
79
+
80
+ def test_and?
81
+ $and_any.each do |l,r,x|
82
+ assert_equal( x, l.and?(r), "#{l} & #{r} #{x ? '=' : '!'}= 0" )
83
+ end
84
+ assert_raise( ArgumentError ) { 1.and?(0, :test=>:invalid) }
85
+ end
86
+ def test_and_any
87
+ $and_any.each do |l,r,x|
88
+ assert_equal( x, l.and?(r, :test=>:any), "#{l} & #{r} #{x ? '!' : '='}= 0" )
89
+ end
90
+ end
91
+ def test_and_all
92
+ $and_all.each do |l,r,x|
93
+ assert_equal( x, l.and?(r, :test=>:all), "#{l} & #{r} #{x ? '=' : '!'}= #{r}" )
94
+ end
95
+ end
96
+
97
+ def test_and_any?
98
+ $and_any.each do |l,r,x|
99
+ assert_equal( x, l.and_any?(r), "#{l} & #{r} #{x ? '!' : '='}= 0" )
100
+ end
101
+ end
102
+ def test_and_all?
103
+ $and_all.each do |l,r,x|
104
+ assert_equal( x, l.and_all?(r), "#{l} & #{r} #{x ? '=' : '!'}= #{r}" )
105
+ end
106
+ end
107
+
108
+ def test_or?
109
+ $or.each do |l,r,x|
110
+ assert_equal( x, l.or?(r), "#{l} | #{r} #{x ? '=' : '!'}= 0" )
111
+ end
112
+ end
113
+
114
+ def test_xor?
115
+ $xor.each do |l,r,x|
116
+ assert_equal( x, l.xor?(r), "#{l} ^ #{r} #{x ? '!' : '='}= 0" )
117
+ end
118
+ end
119
+
120
+ end
121
+
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: 0.5.4
4
+ version: 0.5.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Kerwin
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-01 00:00:00.000000000 Z
11
+ date: 2016-11-28 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: |
14
14
  == MUG: Matty's Ultimate Gem
@@ -30,6 +30,7 @@ files:
30
30
  - lib/mug/array/extend.rb
31
31
  - lib/mug/array/minus.rb
32
32
  - lib/mug/array/samples.rb
33
+ - lib/mug/bittest.rb
33
34
  - lib/mug/bool.rb
34
35
  - lib/mug/clamp.rb
35
36
  - lib/mug/counts.rb
@@ -63,6 +64,7 @@ files:
63
64
  - test/test-array-extend.rb
64
65
  - test/test-array-minus.rb
65
66
  - test/test-array-samples.rb
67
+ - test/test-bittest.rb
66
68
  - test/test-bool.rb
67
69
  - test/test-clamp.rb
68
70
  - test/test-counts.rb
@@ -112,6 +114,7 @@ test_files:
112
114
  - test/test-rexproc.rb
113
115
  - test/test-tau.rb
114
116
  - test/test-matchdata_each.rb
117
+ - test/test-bittest.rb
115
118
  - test/test-matchdata_hash.rb
116
119
  - test/test-not.rb
117
120
  - test/test-array-extend.rb