shenanigans 1.0.13 → 1.0.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (69) hide show
  1. checksums.yaml +4 -4
  2. data/lib/shenanigans/array/caret.rb +3 -2
  3. data/lib/shenanigans/array/random_subarray.rb +7 -5
  4. data/lib/shenanigans/array/reductions.rb +13 -10
  5. data/lib/shenanigans/array/zip_with.rb +9 -12
  6. data/lib/shenanigans/array.rb +3 -3
  7. data/lib/shenanigans/hash/extract.rb +5 -4
  8. data/lib/shenanigans/hash/has_shape_pred.rb +6 -7
  9. data/lib/shenanigans/hash/to_ostruct.rb +8 -9
  10. data/lib/shenanigans/hash.rb +3 -3
  11. data/lib/shenanigans/integer/divisible_by.rb +13 -0
  12. data/lib/shenanigans/integer/string_length.rb +13 -0
  13. data/lib/shenanigans/integer.rb +2 -0
  14. data/lib/shenanigans/kernel/fn.rb +7 -6
  15. data/lib/shenanigans/kernel/prompt.rb +6 -7
  16. data/lib/shenanigans/kernel/require_optional.rb +8 -8
  17. data/lib/shenanigans/kernel/with.rb +4 -3
  18. data/lib/shenanigans/kernel.rb +4 -4
  19. data/lib/shenanigans/module/private_accessor.rb +6 -6
  20. data/lib/shenanigans/module.rb +1 -1
  21. data/lib/shenanigans/object/display.rb +5 -4
  22. data/lib/shenanigans/object.rb +1 -2
  23. data/lib/shenanigans/string/cmpi.rb +4 -3
  24. data/lib/shenanigans/string/in_groups_of.rb +4 -6
  25. data/lib/shenanigans/string.rb +2 -2
  26. data/lib/shenanigans.rb +7 -7
  27. metadata +81 -51
  28. data/Gemfile +0 -8
  29. data/doc/Array.html +0 -519
  30. data/doc/Fixnum.html +0 -215
  31. data/doc/Hash.html +0 -417
  32. data/doc/Kernel.html +0 -460
  33. data/doc/Module.html +0 -237
  34. data/doc/Object.html +0 -286
  35. data/doc/String.html +0 -299
  36. data/doc/_index.html +0 -185
  37. data/doc/class_list.html +0 -51
  38. data/doc/css/common.css +0 -1
  39. data/doc/css/full_list.css +0 -58
  40. data/doc/css/style.css +0 -499
  41. data/doc/file.README.html +0 -160
  42. data/doc/file_list.html +0 -56
  43. data/doc/frames.html +0 -17
  44. data/doc/index.html +0 -160
  45. data/doc/js/app.js +0 -248
  46. data/doc/js/full_list.js +0 -216
  47. data/doc/js/jquery.js +0 -4
  48. data/doc/method_list.html +0 -187
  49. data/doc/top-level-namespace.html +0 -112
  50. data/lib/shenanigans/fixnum/string_length.rb +0 -14
  51. data/lib/shenanigans/fixnum.rb +0 -1
  52. data/lib/shenanigans/object/it.rb +0 -9
  53. data/test/array/test_caret.rb +0 -9
  54. data/test/array/test_random_subarray.rb +0 -10
  55. data/test/array/test_reductions.rb +0 -27
  56. data/test/array/test_zip_with.rb +0 -14
  57. data/test/fixnum/test_string_length.rb +0 -16
  58. data/test/hash/test_extract.rb +0 -11
  59. data/test/hash/test_has_shape_pred.rb +0 -40
  60. data/test/hash/test_to_ostruct.rb +0 -23
  61. data/test/kernel/test_fn.rb +0 -14
  62. data/test/kernel/test_prompt.rb +0 -27
  63. data/test/kernel/test_require_optional.rb +0 -17
  64. data/test/kernel/test_with.rb +0 -12
  65. data/test/module/test_private_accessor.rb +0 -21
  66. data/test/object/test_display.rb +0 -36
  67. data/test/object/test_it.rb +0 -10
  68. data/test/string/test_cmpi.rb +0 -10
  69. data/test/string/test_in_groups_of.rb +0 -11
@@ -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
@@ -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
@@ -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
@@ -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
@@ -1,12 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'shenanigans/kernel/with'
3
-
4
- class With < MiniTest::Unit::TestCase
5
- def test_with
6
- result = with([]) do |a|
7
- a << "a"
8
- a << "b"
9
- end
10
- assert result == %w(a b)
11
- end
12
- end
@@ -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
@@ -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
@@ -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
@@ -1,10 +0,0 @@
1
- require 'minitest/autorun'
2
- require 'shenanigans/string/cmpi'
3
-
4
- class Cmpi < MiniTest::Unit::TestCase
5
- def cmpi
6
- str = "aabbcc"
7
- assert str.cmpi("AAbbcc")
8
- assert_equal cmpi("foo"), false
9
- end
10
- end
@@ -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