shenanigans 1.0.13 → 1.0.16
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 +4 -4
- data/lib/shenanigans/array/caret.rb +3 -2
- data/lib/shenanigans/array/random_subarray.rb +7 -5
- data/lib/shenanigans/array/reductions.rb +13 -10
- data/lib/shenanigans/array/zip_with.rb +9 -12
- data/lib/shenanigans/array.rb +3 -3
- data/lib/shenanigans/hash/extract.rb +5 -4
- data/lib/shenanigans/hash/has_shape_pred.rb +6 -7
- data/lib/shenanigans/hash/to_ostruct.rb +8 -9
- data/lib/shenanigans/hash.rb +3 -3
- data/lib/shenanigans/integer/divisible_by.rb +13 -0
- data/lib/shenanigans/integer/string_length.rb +13 -0
- data/lib/shenanigans/integer.rb +2 -0
- data/lib/shenanigans/kernel/fn.rb +7 -6
- data/lib/shenanigans/kernel/prompt.rb +6 -7
- data/lib/shenanigans/kernel/require_optional.rb +8 -8
- data/lib/shenanigans/kernel/with.rb +4 -3
- data/lib/shenanigans/kernel.rb +4 -4
- data/lib/shenanigans/module/private_accessor.rb +6 -6
- data/lib/shenanigans/module.rb +1 -1
- data/lib/shenanigans/object/display.rb +5 -4
- data/lib/shenanigans/object.rb +1 -2
- data/lib/shenanigans/string/cmpi.rb +4 -3
- data/lib/shenanigans/string/in_groups_of.rb +4 -6
- data/lib/shenanigans/string.rb +2 -2
- data/lib/shenanigans.rb +7 -7
- metadata +81 -51
- data/Gemfile +0 -8
- data/doc/Array.html +0 -519
- data/doc/Fixnum.html +0 -215
- data/doc/Hash.html +0 -417
- data/doc/Kernel.html +0 -460
- data/doc/Module.html +0 -237
- data/doc/Object.html +0 -286
- data/doc/String.html +0 -299
- data/doc/_index.html +0 -185
- data/doc/class_list.html +0 -51
- data/doc/css/common.css +0 -1
- data/doc/css/full_list.css +0 -58
- data/doc/css/style.css +0 -499
- data/doc/file.README.html +0 -160
- data/doc/file_list.html +0 -56
- data/doc/frames.html +0 -17
- data/doc/index.html +0 -160
- data/doc/js/app.js +0 -248
- data/doc/js/full_list.js +0 -216
- data/doc/js/jquery.js +0 -4
- data/doc/method_list.html +0 -187
- data/doc/top-level-namespace.html +0 -112
- data/lib/shenanigans/fixnum/string_length.rb +0 -14
- data/lib/shenanigans/fixnum.rb +0 -1
- data/lib/shenanigans/object/it.rb +0 -9
- data/test/array/test_caret.rb +0 -9
- data/test/array/test_random_subarray.rb +0 -10
- data/test/array/test_reductions.rb +0 -27
- data/test/array/test_zip_with.rb +0 -14
- data/test/fixnum/test_string_length.rb +0 -16
- data/test/hash/test_extract.rb +0 -11
- data/test/hash/test_has_shape_pred.rb +0 -40
- data/test/hash/test_to_ostruct.rb +0 -23
- data/test/kernel/test_fn.rb +0 -14
- data/test/kernel/test_prompt.rb +0 -27
- data/test/kernel/test_require_optional.rb +0 -17
- data/test/kernel/test_with.rb +0 -12
- data/test/module/test_private_accessor.rb +0 -21
- data/test/object/test_display.rb +0 -36
- data/test/object/test_it.rb +0 -10
- data/test/string/test_cmpi.rb +0 -10
- data/test/string/test_in_groups_of.rb +0 -11
data/test/array/test_zip_with.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require 'shenanigans/array/zip_with'
|
3
|
-
|
4
|
-
class ZipWith < MiniTest::Unit::TestCase
|
5
|
-
def test_zip_with_with_symbol
|
6
|
-
result = [*1..3].zip_with([*1..3], :+)
|
7
|
-
assert result == [2, 4, 6]
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_zip_with_with_block
|
11
|
-
result = [*?a..?c].zip_with([*?a..?c]) { |a, b| a * 2 + b.upcase }
|
12
|
-
assert result == %w(aaA bbB ccC)
|
13
|
-
end
|
14
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require 'shenanigans/fixnum/string_length'
|
3
|
-
|
4
|
-
class StringLength < MiniTest::Unit::TestCase
|
5
|
-
def test_zero
|
6
|
-
assert 0.string_length == 1
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_positive
|
10
|
-
assert 123.string_length == 3
|
11
|
-
end
|
12
|
-
|
13
|
-
def test_negative
|
14
|
-
assert -1.string_length == 2
|
15
|
-
end
|
16
|
-
end
|
data/test/hash/test_extract.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require 'shenanigans/hash/extract'
|
3
|
-
|
4
|
-
class Extract < MiniTest::Unit::TestCase
|
5
|
-
def test_extract
|
6
|
-
hash = { a: 1, b: 2, c: 3 }
|
7
|
-
assert_equal hash.extract(:b, :a), { a: 1, b: 2 }
|
8
|
-
assert_equal hash.extract(:a, :d), { a: 1}
|
9
|
-
assert_equal Hash.new.extract(:a, :c), Hash.new
|
10
|
-
end
|
11
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require 'shenanigans/hash/has_shape_pred'
|
3
|
-
|
4
|
-
class HasShape < MiniTest::Unit::TestCase
|
5
|
-
def setup
|
6
|
-
@hash = {
|
7
|
-
k1: 1.0,
|
8
|
-
k2: 1,
|
9
|
-
k3: {
|
10
|
-
k4: "1",
|
11
|
-
k5: {
|
12
|
-
k6: Array
|
13
|
-
}
|
14
|
-
}
|
15
|
-
}
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_has_shape
|
19
|
-
shape_pass = {
|
20
|
-
k1: Float,
|
21
|
-
k2: Integer,
|
22
|
-
k3: {
|
23
|
-
k4: String,
|
24
|
-
k5: {
|
25
|
-
k6: Class
|
26
|
-
}
|
27
|
-
}
|
28
|
-
}
|
29
|
-
|
30
|
-
assert @hash.has_shape?(shape_pass)
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_has_shape_fail
|
34
|
-
shape_fail = {
|
35
|
-
k1: Float
|
36
|
-
}
|
37
|
-
|
38
|
-
assert !@hash.has_shape?(shape_fail)
|
39
|
-
end
|
40
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require 'shenanigans/hash/to_ostruct'
|
3
|
-
|
4
|
-
class ToOstruct < MiniTest::Unit::TestCase
|
5
|
-
def test_simple_hash
|
6
|
-
struct = {a: 1, b: 2}.to_ostruct
|
7
|
-
assert struct.a == 1
|
8
|
-
assert struct.b == 2
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_nested_hash
|
12
|
-
struct = {a: 1, b: {c: 3}}.to_ostruct
|
13
|
-
assert struct.a == 1
|
14
|
-
assert struct.b.c == 3
|
15
|
-
end
|
16
|
-
|
17
|
-
def test_nested_array
|
18
|
-
struct = {a: 1, b: [{c: 2}, 5]}.to_ostruct
|
19
|
-
assert struct.a == 1
|
20
|
-
assert struct.b.first.c == 2
|
21
|
-
assert struct.b.last == 5
|
22
|
-
end
|
23
|
-
end
|
data/test/kernel/test_fn.rb
DELETED
@@ -1,14 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require 'shenanigans/kernel/fn'
|
3
|
-
|
4
|
-
class Fn < MiniTest::Unit::TestCase
|
5
|
-
def test_with_symbols
|
6
|
-
result = ["foo bar", "baz qux"].map &fn(:split, :last)
|
7
|
-
assert result == ["bar", "qux"]
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_with_symbols_and_lambdas
|
11
|
-
result = (1..3).map &fn(:next, -> x { x * x }, -> x { x.to_f / 2 } )
|
12
|
-
assert result == [2.0, 4.5, 8.0]
|
13
|
-
end
|
14
|
-
end
|
data/test/kernel/test_prompt.rb
DELETED
@@ -1,27 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require 'shenanigans/kernel/prompt'
|
3
|
-
require 'stringio'
|
4
|
-
|
5
|
-
class Prompt < MiniTest::Unit::TestCase
|
6
|
-
def setup
|
7
|
-
@orig_stdin = $stderr
|
8
|
-
@orig_stdout = $stdout
|
9
|
-
$stdin = StringIO.new("42\n")
|
10
|
-
$stdout = StringIO.new
|
11
|
-
end
|
12
|
-
|
13
|
-
def teardown
|
14
|
-
$stdin = @orig_stdin
|
15
|
-
$stdout = @orig_stdout
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_prompt
|
19
|
-
result = prompt("Foo> ")
|
20
|
-
assert result == "42"
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_prompt_with_conversion
|
24
|
-
result = prompt("Foo> ", :to_f)
|
25
|
-
assert result == 42.0
|
26
|
-
end
|
27
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require 'shenanigans/kernel/require_optional'
|
3
|
-
require 'stringio'
|
4
|
-
|
5
|
-
class RequireOptional < MiniTest::Unit::TestCase
|
6
|
-
def test_require_optional
|
7
|
-
assert_equal require_optional('non_existent'), nil
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_require_optional_with_block
|
11
|
-
res = require_optional 'non_existent' do
|
12
|
-
42
|
13
|
-
end
|
14
|
-
|
15
|
-
assert_equal res, 42
|
16
|
-
end
|
17
|
-
end
|
data/test/kernel/test_with.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require 'shenanigans/module/private_accessor'
|
3
|
-
|
4
|
-
class PrivateAccessor < MiniTest::Unit::TestCase
|
5
|
-
class Foo
|
6
|
-
private_accessor :bar, :baz
|
7
|
-
|
8
|
-
def initialize(v1, v2)
|
9
|
-
self.bar = v1
|
10
|
-
self.baz = v2
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_private_accessor
|
15
|
-
f = Foo.new(1, 2)
|
16
|
-
assert f.instance_variables == [:@bar, :@baz]
|
17
|
-
assert (f.private_methods & [:bar, :baz, :bar=, :baz=]).size == 4
|
18
|
-
assert f.instance_variable_get("@bar") == 1
|
19
|
-
assert f.instance_variable_get("@baz") == 2
|
20
|
-
end
|
21
|
-
end
|
data/test/object/test_display.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require 'shenanigans/object/display'
|
3
|
-
require 'stringio'
|
4
|
-
|
5
|
-
class Display < MiniTest::Unit::TestCase
|
6
|
-
def setup
|
7
|
-
@orig_stdout = $stdout
|
8
|
-
$stdout = StringIO.new("", "r+")
|
9
|
-
end
|
10
|
-
|
11
|
-
def teardown
|
12
|
-
$stdout = @orig_stdout
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_display
|
16
|
-
str = "foo"
|
17
|
-
assert str.display == str
|
18
|
-
$stdout.rewind
|
19
|
-
assert $stdout.gets.chomp == str
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_display_alias
|
23
|
-
str = "foo"
|
24
|
-
assert str.d == str
|
25
|
-
$stdout.rewind
|
26
|
-
assert $stdout.gets.chomp == str
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_display_no_new_line
|
30
|
-
str = "foo"
|
31
|
-
assert str.display(false) == str
|
32
|
-
$stdout.rewind
|
33
|
-
assert $stdout.gets == str
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
data/test/object/test_it.rb
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require 'shenanigans/object/it'
|
3
|
-
|
4
|
-
class Identity < MiniTest::Unit::TestCase
|
5
|
-
def test_identity
|
6
|
-
arr = [1, "2", :tree]
|
7
|
-
assert arr.map(&:it) == arr
|
8
|
-
assert [1,1,2,3].group_by(&:it) == {1 => [1, 1], 2 => [2], 3 => [3]}
|
9
|
-
end
|
10
|
-
end
|
data/test/string/test_cmpi.rb
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
require 'minitest/autorun'
|
2
|
-
require 'shenanigans/string/in_groups_of'
|
3
|
-
|
4
|
-
class InGroupsOf < MiniTest::Unit::TestCase
|
5
|
-
def test_in_groups_of
|
6
|
-
str = "aabbcc"
|
7
|
-
assert str.in_groups_of(2) == ['aa', 'bb', 'cc']
|
8
|
-
assert "".in_groups_of(2) == []
|
9
|
-
assert_raises(ArgumentError) { "".in_groups_of(0) }
|
10
|
-
end
|
11
|
-
end
|