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.
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