shenanigans 1.0.13 → 1.0.16
Sign up to get free protection for your applications and to get access to all the features.
- 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
|