thefox-ext 1.4.1 → 1.5.0
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/.editorconfig +14 -0
- data/.gitignore +3 -1
- data/.gitlab-ci.yml +56 -0
- data/.travis.yml +5 -2
- data/Makefile +1 -1
- data/Makefile.common +17 -12
- data/README.md +6 -3
- data/lib/thefox-ext/ext/array.rb +34 -0
- data/lib/thefox-ext/ext/date.rb +1 -0
- data/lib/thefox-ext/ext/false.rb +3 -0
- data/lib/thefox-ext/ext/hash.rb +4 -0
- data/lib/thefox-ext/ext/string.rb +6 -0
- data/lib/thefox-ext/ext/true.rb +3 -0
- data/lib/thefox-ext/version.rb +3 -3
- data/lib/thefox-ext.rb +1 -0
- data/thefox-ext.gemspec +4 -2
- metadata +35 -13
- data/tests/tc_date.rb +0 -70
- data/tests/tc_false.rb +0 -11
- data/tests/tc_hash.rb +0 -135
- data/tests/tc_integer.rb +0 -20
- data/tests/tc_nil.rb +0 -11
- data/tests/tc_string.rb +0 -87
- data/tests/tc_true.rb +0 -11
- data/tests/ts_all.rb +0 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a51b7381080d2423b214e5abdd4d3065b211a9ab
|
4
|
+
data.tar.gz: bb698781dbba108db0348770caaacd9e1a61a1ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e5ebf340108b286b0fecb2038b789e1259b3925196088b0e7dadca3478cb60d0eaf745e3eddd87b24046d3aa139da158fddd428aff18ee3bba50d0dd51d8ba7a
|
7
|
+
data.tar.gz: 44fb1336dd930c64c103928250f52e6a9f79e089b2994d79ad8786848726959fd281ed81c88aed6dc9a955274bdd038f719d4fb3af0a3898db5e081b3b2332e0
|
data/.editorconfig
ADDED
data/.gitignore
CHANGED
data/.gitlab-ci.yml
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
before_script:
|
2
|
+
- gem update --system
|
3
|
+
- gem install bundler -v '~>1.13'
|
4
|
+
- bundler --version
|
5
|
+
- make
|
6
|
+
|
7
|
+
stages:
|
8
|
+
- test
|
9
|
+
- release
|
10
|
+
|
11
|
+
test_21:
|
12
|
+
image: ruby:2.1
|
13
|
+
stage: test
|
14
|
+
environment: test
|
15
|
+
only:
|
16
|
+
- tags
|
17
|
+
script:
|
18
|
+
- make test
|
19
|
+
|
20
|
+
test_22:
|
21
|
+
image: ruby:2.2
|
22
|
+
stage: test
|
23
|
+
environment: test
|
24
|
+
only:
|
25
|
+
- tags
|
26
|
+
script:
|
27
|
+
- make test
|
28
|
+
|
29
|
+
test_23:
|
30
|
+
image: ruby:2.3
|
31
|
+
stage: test
|
32
|
+
environment: test
|
33
|
+
only:
|
34
|
+
- tags
|
35
|
+
script:
|
36
|
+
- make test
|
37
|
+
|
38
|
+
test_24:
|
39
|
+
image: ruby:2.4.0
|
40
|
+
stage: test
|
41
|
+
environment: test
|
42
|
+
only:
|
43
|
+
- tags
|
44
|
+
script:
|
45
|
+
- make test
|
46
|
+
|
47
|
+
release:
|
48
|
+
image: ruby:2.4.0
|
49
|
+
stage: release
|
50
|
+
environment: gem
|
51
|
+
only:
|
52
|
+
- tags
|
53
|
+
script:
|
54
|
+
- mkdir -p ~/.gem
|
55
|
+
- 'printf "%s\n:rubygems_api_key: %s" "---" "${RUBYGEMSORG_API_KEY}" > ~/.gem/credentials; chmod 0600 ~/.gem/credentials'
|
56
|
+
- make release
|
data/.travis.yml
CHANGED
@@ -2,10 +2,13 @@ language: ruby
|
|
2
2
|
rvm:
|
3
3
|
- 2.1
|
4
4
|
- 2.2
|
5
|
+
- 2.3
|
6
|
+
- 2.4.0
|
7
|
+
- ruby-head
|
5
8
|
sudo: required
|
6
9
|
before_install:
|
7
10
|
- gem update --system
|
8
|
-
- gem install bundler -v '~>1.
|
11
|
+
- gem install bundler -v '~>1.13'
|
9
12
|
- bundler --version
|
10
13
|
install:
|
11
14
|
- make
|
@@ -13,4 +16,4 @@ install:
|
|
13
16
|
- gem install thefox-ext-*.gem
|
14
17
|
- gem list -l thefox-ext
|
15
18
|
script:
|
16
|
-
- make test
|
19
|
+
- make test
|
data/Makefile
CHANGED
data/Makefile.common
CHANGED
@@ -1,33 +1,36 @@
|
|
1
1
|
|
2
|
-
# Ruby Common Big
|
3
|
-
# 2015-12-21
|
2
|
+
# Ruby Common Big 2016-11-08
|
4
3
|
|
5
4
|
MV = mv -nv
|
6
|
-
RM = rm -
|
5
|
+
RM = rm -rfd
|
7
6
|
MKDIR = mkdir -p
|
8
|
-
|
7
|
+
CHMOD = chmod
|
8
|
+
BUNDLER = bundler
|
9
9
|
BUNDLER_OPTIONS = --jobs=5 --retry=3
|
10
10
|
GEMSPEC_FILE = $(GEM_NAME).gemspec
|
11
11
|
|
12
|
-
.PHONY: all
|
13
|
-
all: setup
|
12
|
+
.PHONY: all
|
13
|
+
all: setup $(ALL_TARGETS_EXT)
|
14
14
|
|
15
15
|
.PHONY: setup
|
16
16
|
setup: .setup
|
17
17
|
|
18
18
|
.setup:
|
19
|
+
which ruby &> /dev/null
|
20
|
+
which $(BUNDLER) &> /dev/null
|
21
|
+
ruby -v
|
19
22
|
$(BUNDLER) install $(BUNDLER_OPTIONS)
|
20
23
|
touch $@
|
21
24
|
|
22
25
|
.PHONY: install
|
23
26
|
install:
|
24
|
-
gem_file=$$(gem build $(GEMSPEC_FILE) | grep 'File:' | tail -1 | awk '{ print $$2 }'); \
|
25
|
-
|
27
|
+
gem_file=$$(gem build $(GEMSPEC_FILE) 2> /dev/null | grep 'File:' | tail -1 | awk '{ print $$2 }'); \
|
28
|
+
gem install $$gem_file; \
|
26
29
|
$(RM) $$gem_file
|
27
30
|
|
28
31
|
.PHONY: uninstall
|
29
32
|
uninstall:
|
30
|
-
|
33
|
+
gem uninstall $(GEM_NAME)
|
31
34
|
|
32
35
|
.PHONY: update
|
33
36
|
update:
|
@@ -35,9 +38,7 @@ update:
|
|
35
38
|
|
36
39
|
.PHONY: clean
|
37
40
|
clean:
|
38
|
-
$(RM) .bundle
|
39
|
-
$(RM) .setup
|
40
|
-
$(RM) Gemfile.lock
|
41
|
+
$(RM) .bundle .setup Gemfile.lock
|
41
42
|
|
42
43
|
.PHONY: release
|
43
44
|
release: | releases
|
@@ -51,3 +52,7 @@ release: | releases
|
|
51
52
|
|
52
53
|
releases:
|
53
54
|
$(MKDIR) $@
|
55
|
+
|
56
|
+
tmp:
|
57
|
+
$(MKDIR) $@
|
58
|
+
$(CHMOD) u=rwx,go-rwx $@
|
data/README.md
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# Extended Ruby Classes
|
2
2
|
|
3
|
-
|
3
|
+
This gem extents some of the basic Ruby classes by missing functionalities.
|
4
4
|
|
5
5
|
## Install
|
6
6
|
|
@@ -11,7 +11,7 @@ The preferred method of installation is via RubyGems.org:
|
|
11
11
|
|
12
12
|
or via `Gemfile`:
|
13
13
|
|
14
|
-
gem 'thefox-ext', '~>1.
|
14
|
+
gem 'thefox-ext', '~>1.5'
|
15
15
|
|
16
16
|
Use it in your sources:
|
17
17
|
|
@@ -27,6 +27,8 @@ Use it in your sources:
|
|
27
27
|
- Date
|
28
28
|
- `today?`
|
29
29
|
- Get week array for a specific date.
|
30
|
+
- Array
|
31
|
+
- Range String Resolver
|
30
32
|
- Hash
|
31
33
|
- Recursive Merge
|
32
34
|
|
@@ -36,7 +38,8 @@ Use it in your sources:
|
|
36
38
|
- [Travis CI Repository](https://travis-ci.org/TheFox/ext.rb)
|
37
39
|
|
38
40
|
## License
|
39
|
-
|
41
|
+
|
42
|
+
Copyright (C) 2015 Christian Mayer <https://fox21.at>
|
40
43
|
|
41
44
|
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
|
42
45
|
|
@@ -0,0 +1,34 @@
|
|
1
|
+
|
2
|
+
class Array
|
3
|
+
|
4
|
+
# Resolve a range string to an array.
|
5
|
+
# A range string can be like '1, 3..5, 9-11'.
|
6
|
+
# Which will be resolved to [1, 3, 4, 5, 9, 10, 11].
|
7
|
+
def self.resolve_range_str(s)
|
8
|
+
a = Array.new
|
9
|
+
if !s.is_a?(String)
|
10
|
+
return a
|
11
|
+
end
|
12
|
+
|
13
|
+
s.split(',').map{ |i|
|
14
|
+
s = i.strip
|
15
|
+
if /\.\./.match(s) # ( . )( . ) <--- BOOBS
|
16
|
+
b, e = s.split('..', 2).map{ |s| s.to_i }
|
17
|
+
Range.new(b, e)
|
18
|
+
elsif /-/.match(s)
|
19
|
+
b, e = s.split('-', 2).map{ |s| s.to_i }
|
20
|
+
Range.new(b, e)
|
21
|
+
else
|
22
|
+
s.to_i
|
23
|
+
end
|
24
|
+
}.each do |r|
|
25
|
+
if r.is_a?(Range)
|
26
|
+
a.push(*r.to_a)
|
27
|
+
else
|
28
|
+
a << r
|
29
|
+
end
|
30
|
+
end
|
31
|
+
a
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
data/lib/thefox-ext/ext/date.rb
CHANGED
data/lib/thefox-ext/ext/false.rb
CHANGED
data/lib/thefox-ext/ext/hash.rb
CHANGED
@@ -1,15 +1,19 @@
|
|
1
1
|
|
2
2
|
class String
|
3
|
+
|
4
|
+
# Is a String only made of numbers?
|
3
5
|
def is_digit?
|
4
6
|
r = '0'..'9'
|
5
7
|
self.split('').keep_if{ |c| r.include?(c) }.count == self.length
|
6
8
|
end
|
7
9
|
|
10
|
+
# Is a String only made of lower-case charaters.
|
8
11
|
def is_lower?
|
9
12
|
r = 'a'..'z'
|
10
13
|
self.split('').keep_if{ |c| r.include?(c) }.count == self.length
|
11
14
|
end
|
12
15
|
|
16
|
+
# Is a String only made of upper-case charaters.
|
13
17
|
def is_upper?
|
14
18
|
r = 'A'..'Z'
|
15
19
|
self.split('').keep_if{ |c| r.include?(c) }.count == self.length
|
@@ -24,6 +28,7 @@ class String
|
|
24
28
|
return true
|
25
29
|
end
|
26
30
|
|
31
|
+
# Convert 'hello world' to 'Hello World'.
|
27
32
|
def titlecase
|
28
33
|
self
|
29
34
|
.split(/ /)
|
@@ -35,6 +40,7 @@ class String
|
|
35
40
|
self.split('').map{ |c| sprintf '%02x', c.ord }.join
|
36
41
|
end
|
37
42
|
|
43
|
+
# Convert a String to an Integer 32-bit Array.
|
38
44
|
def to_i32a
|
39
45
|
len = self.length
|
40
46
|
len_w = (len >> 2) + (len & 0x3).to_b.to_i
|
data/lib/thefox-ext/ext/true.rb
CHANGED
data/lib/thefox-ext/version.rb
CHANGED
data/lib/thefox-ext.rb
CHANGED
data/thefox-ext.gemspec
CHANGED
@@ -13,8 +13,8 @@ Gem::Specification.new do |spec|
|
|
13
13
|
spec.email = 'christian@fox21.at'
|
14
14
|
|
15
15
|
spec.summary = %q{Extended Ruby Classes}
|
16
|
-
spec.description = %q{
|
17
|
-
spec.homepage =
|
16
|
+
spec.description = %q{This gem extents some of the basic Ruby classes by missing functionalities.}
|
17
|
+
spec.homepage = TheFox::Ext::HOMEPAGE
|
18
18
|
spec.license = 'GPL-3.0'
|
19
19
|
|
20
20
|
spec.files = `git ls-files -z`.split("\x0").reject{ |f| f.match(%r{^(test|spec|features)/}) }
|
@@ -22,4 +22,6 @@ Gem::Specification.new do |spec|
|
|
22
22
|
spec.required_ruby_version = '>=2.1.0'
|
23
23
|
|
24
24
|
spec.add_development_dependency 'minitest', '~>5.8'
|
25
|
+
spec.add_development_dependency 'simplecov', '~>0.13'
|
26
|
+
spec.add_development_dependency 'simplecov-phpunit', '~>1.0'
|
25
27
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: thefox-ext
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Mayer
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2017-03-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: minitest
|
@@ -24,13 +24,43 @@ dependencies:
|
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '5.8'
|
27
|
-
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: simplecov
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.13'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.13'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: simplecov-phpunit
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.0'
|
55
|
+
description: This gem extents some of the basic Ruby classes by missing functionalities.
|
28
56
|
email: christian@fox21.at
|
29
57
|
executables: []
|
30
58
|
extensions: []
|
31
59
|
extra_rdoc_files: []
|
32
60
|
files:
|
61
|
+
- ".editorconfig"
|
33
62
|
- ".gitignore"
|
63
|
+
- ".gitlab-ci.yml"
|
34
64
|
- ".travis.yml"
|
35
65
|
- Gemfile
|
36
66
|
- Makefile
|
@@ -38,6 +68,7 @@ files:
|
|
38
68
|
- README.md
|
39
69
|
- lib/thefox-ext.rb
|
40
70
|
- lib/thefox-ext/console.rb
|
71
|
+
- lib/thefox-ext/ext/array.rb
|
41
72
|
- lib/thefox-ext/ext/date.rb
|
42
73
|
- lib/thefox-ext/ext/false.rb
|
43
74
|
- lib/thefox-ext/ext/hash.rb
|
@@ -46,14 +77,6 @@ files:
|
|
46
77
|
- lib/thefox-ext/ext/string.rb
|
47
78
|
- lib/thefox-ext/ext/true.rb
|
48
79
|
- lib/thefox-ext/version.rb
|
49
|
-
- tests/tc_date.rb
|
50
|
-
- tests/tc_false.rb
|
51
|
-
- tests/tc_hash.rb
|
52
|
-
- tests/tc_integer.rb
|
53
|
-
- tests/tc_nil.rb
|
54
|
-
- tests/tc_string.rb
|
55
|
-
- tests/tc_true.rb
|
56
|
-
- tests/ts_all.rb
|
57
80
|
- thefox-ext.gemspec
|
58
81
|
- thefox-ext.sublime-project
|
59
82
|
homepage: https://github.com/TheFox/ext.rb
|
@@ -76,9 +99,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
76
99
|
version: '0'
|
77
100
|
requirements: []
|
78
101
|
rubyforge_project:
|
79
|
-
rubygems_version: 2.
|
102
|
+
rubygems_version: 2.6.10
|
80
103
|
signing_key:
|
81
104
|
specification_version: 4
|
82
105
|
summary: Extended Ruby Classes
|
83
106
|
test_files: []
|
84
|
-
has_rdoc:
|
data/tests/tc_date.rb
DELETED
@@ -1,70 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'minitest/autorun'
|
4
|
-
require 'thefox-ext'
|
5
|
-
|
6
|
-
|
7
|
-
class TestDate < MiniTest::Test
|
8
|
-
def test_today
|
9
|
-
assert_equal(true, Date.today.today?)
|
10
|
-
|
11
|
-
assert_equal(false, Date.new(2001, 2, 3).today?)
|
12
|
-
assert_equal(false, Date.new(2001, 2, 4).today?)
|
13
|
-
|
14
|
-
# This test may fail on 01.01.2018 ;)
|
15
|
-
assert_equal(false, Date.new(2018, 1, 1).today?)
|
16
|
-
|
17
|
-
assert_equal(true, Time.now.to_date.today?)
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_week_mid
|
21
|
-
e = ['2014-02-17', '2014-02-18', '2014-02-19', '2014-02-20', '2014-02-21', '2014-02-22', '2014-02-23']
|
22
|
-
assert_equal(e, Date.new(2014, 2, 21).week.map{ |d| "#{d}" })
|
23
|
-
|
24
|
-
e = ['2014-03-31', '2014-04-01', '2014-04-02', '2014-04-03', '2014-04-04', '2014-04-05', '2014-04-06']
|
25
|
-
assert_equal(e, Date.new(2014, 4, 1).week.map{ |d| "#{d}" })
|
26
|
-
|
27
|
-
e = ['2015-02-16', '2015-02-17', '2015-02-18', '2015-02-19', '2015-02-20', '2015-02-21', '2015-02-22']
|
28
|
-
assert_equal(e, Date.new(2015, 2, 21).week.map{ |d| "#{d}" })
|
29
|
-
|
30
|
-
e = ['2016-02-15', '2016-02-16', '2016-02-17', '2016-02-18', '2016-02-19', '2016-02-20', '2016-02-21']
|
31
|
-
assert_equal(e, Date.new(2016, 2, 21).week.map{ |d| "#{d}" })
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_week_jan
|
35
|
-
e = ['2013-12-30', '2013-12-31', '2014-01-01', '2014-01-02', '2014-01-03', '2014-01-04', '2014-01-05']
|
36
|
-
assert_equal(e, Date.new(2014, 1, 1).week.map{ |d| "#{d}" })
|
37
|
-
|
38
|
-
e = ['2014-12-29', '2014-12-30', '2014-12-31',
|
39
|
-
'2015-01-01', '2015-01-02', '2015-01-03', '2015-01-04']
|
40
|
-
assert_equal(e, Date.new(2015, 1, 1).week.map{ |d| "#{d}" })
|
41
|
-
|
42
|
-
e = ['2015-12-28', '2015-12-29', '2015-12-30', '2015-12-31',
|
43
|
-
'2016-01-01', '2016-01-02', '2016-01-03']
|
44
|
-
assert_equal(e, Date.new(2016, 1, 1).week.map{ |d| "#{d}" })
|
45
|
-
|
46
|
-
e = ['2016-12-26', '2016-12-27', '2016-12-28', '2016-12-29', '2016-12-30', '2016-12-31',
|
47
|
-
'2017-01-01']
|
48
|
-
assert_equal(e, Date.new(2017, 1, 1).week.map{ |d| "#{d}" })
|
49
|
-
|
50
|
-
e = ['2018-01-01', '2018-01-02', '2018-01-03', '2018-01-04', '2018-01-05', '2018-01-06', '2018-01-07']
|
51
|
-
assert_equal(e, Date.new(2018, 1, 1).week.map{ |d| "#{d}" })
|
52
|
-
end
|
53
|
-
|
54
|
-
def test_week_dec
|
55
|
-
e = ['2014-12-29', '2014-12-30', '2014-12-31',
|
56
|
-
'2015-01-01', '2015-01-02', '2015-01-03', '2015-01-04']
|
57
|
-
assert_equal(e, Date.new(2014, 12, 31).week.map{ |d| "#{d}" })
|
58
|
-
|
59
|
-
e = ['2015-12-28', '2015-12-29', '2015-12-30', '2015-12-31',
|
60
|
-
'2016-01-01', '2016-01-02', '2016-01-03']
|
61
|
-
assert_equal(e, Date.new(2015, 12, 31).week.map{ |d| "#{d}" })
|
62
|
-
|
63
|
-
e = ['2016-12-26', '2016-12-27', '2016-12-28', '2016-12-29', '2016-12-30', '2016-12-31',
|
64
|
-
'2017-01-01']
|
65
|
-
assert_equal(e, Date.new(2016, 12, 31).week.map{ |d| "#{d}" })
|
66
|
-
|
67
|
-
e = ['2017-12-25', '2017-12-26', '2017-12-27', '2017-12-28', '2017-12-29', '2017-12-30', '2017-12-31']
|
68
|
-
assert_equal(e, Date.new(2017, 12, 31).week.map{ |d| "#{d}" })
|
69
|
-
end
|
70
|
-
end
|
data/tests/tc_false.rb
DELETED
data/tests/tc_hash.rb
DELETED
@@ -1,135 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'minitest/autorun'
|
4
|
-
require 'thefox-ext'
|
5
|
-
|
6
|
-
|
7
|
-
class TestHash < MiniTest::Test
|
8
|
-
def test_merge_recursive_clone1
|
9
|
-
h1 = {'k1' => 1, 'k2' => 1}
|
10
|
-
h2 = {'k1' => 2, 'k2' => 2}
|
11
|
-
|
12
|
-
assert_equal({'k1' => 2, 'k2' => 2}, h1.merge_recursive(h2))
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_merge_recursive_clone2
|
16
|
-
h1 = {'k1' => 1, 'k2' => 1}
|
17
|
-
h2 = {'k1' => 2, 'k3' => 2}
|
18
|
-
|
19
|
-
assert_equal({'k1' => 2, 'k2' => 1, 'k3' => 2}, h1.merge_recursive(h2))
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_merge_recursive_clone3
|
23
|
-
h1 = {'k1' => 1, 'k2' => {'sk1' => 1}}
|
24
|
-
h2 = {'k1' => 2, 'k2' => 2}
|
25
|
-
|
26
|
-
assert_equal({'k1' => 2, 'k2' => 2}, h1.merge_recursive(h2))
|
27
|
-
end
|
28
|
-
|
29
|
-
def test_merge_recursive_clone4a
|
30
|
-
h1 = {'k1' => 1, 'k2' => 1}
|
31
|
-
h2 = {'k1' => 2, 'k2' => {'sk2' => 2}}
|
32
|
-
|
33
|
-
assert_equal({'k1' => 2, 'k2' => {'sk2' => 2}}, h1.merge_recursive(h2))
|
34
|
-
end
|
35
|
-
|
36
|
-
def test_merge_recursive_clone4b
|
37
|
-
h1 = {'k1' => 1, 'k2' => {'sk1' => 1}}
|
38
|
-
h2 = {'k1' => 2, 'k2' => 1}
|
39
|
-
|
40
|
-
assert_equal({'k1' => 2, 'k2' => 1}, h1.merge_recursive(h2))
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_merge_recursive_clone5
|
44
|
-
h1 = {'k1' => 1, 'k2' => {'sk1' => 1}}
|
45
|
-
h2 = {'k1' => 2, 'k2' => {'sk2' => 2}}
|
46
|
-
|
47
|
-
assert_equal({'k1' => 2, 'k2' => {'sk1' => 1, 'sk2' => 2}}, h1.merge_recursive(h2))
|
48
|
-
end
|
49
|
-
|
50
|
-
def test_merge_recursive_clone6
|
51
|
-
h1 = {'k1' => 1, 'k2' => 1, 'k4' => {'sk1' => 1}}
|
52
|
-
h2 = {'k1' => 2, 'k3' => 2, 'k4' => {'sk2' => 2}}
|
53
|
-
|
54
|
-
assert_equal({'k1' => 2, 'k2' => 1, 'k3' => 2, 'k4' => {'sk1' => 1, 'sk2' => 2}}, h1.merge_recursive(h2))
|
55
|
-
end
|
56
|
-
|
57
|
-
def test_merge_recursive_clone7
|
58
|
-
h1 = {'k1' => 1, 'k2' => {'sk1' => 1}}
|
59
|
-
h2 = {'k1' => 2}
|
60
|
-
|
61
|
-
assert_equal({'k1' => 2, 'k2' => {'sk1' => 1}}, h1.merge_recursive(h2))
|
62
|
-
end
|
63
|
-
|
64
|
-
def test_merge_recursive_self1
|
65
|
-
h1 = {'k1' => 1, 'k2' => 1}
|
66
|
-
h2 = {'k1' => 2, 'k2' => 2}
|
67
|
-
|
68
|
-
h1.merge_recursive!(h2)
|
69
|
-
|
70
|
-
assert_equal({'k1' => 2, 'k2' => 2}, h1)
|
71
|
-
end
|
72
|
-
|
73
|
-
def test_merge_recursive_self2
|
74
|
-
h1 = {'k1' => 1, 'k2' => 1}
|
75
|
-
h2 = {'k1' => 2, 'k3' => 2}
|
76
|
-
|
77
|
-
h1.merge_recursive!(h2)
|
78
|
-
|
79
|
-
assert_equal({'k1' => 2, 'k2' => 1, 'k3' => 2}, h1)
|
80
|
-
end
|
81
|
-
|
82
|
-
def test_merge_recursive_self3
|
83
|
-
h1 = {'k1' => 1, 'k2' => {'sk1' => 1}}
|
84
|
-
h2 = {'k1' => 2, 'k2' => 2}
|
85
|
-
|
86
|
-
h1.merge_recursive!(h2)
|
87
|
-
|
88
|
-
assert_equal({'k1' => 2, 'k2' => 2}, h1)
|
89
|
-
end
|
90
|
-
|
91
|
-
def test_merge_recursive_self4a
|
92
|
-
h1 = {'k1' => 1, 'k2' => 1}
|
93
|
-
h2 = {'k1' => 2, 'k2' => {'sk2' => 2}}
|
94
|
-
|
95
|
-
h1.merge_recursive!(h2)
|
96
|
-
|
97
|
-
assert_equal({'k1' => 2, 'k2' => {'sk2' => 2}}, h1)
|
98
|
-
end
|
99
|
-
|
100
|
-
def test_merge_recursive_self4b
|
101
|
-
h1 = {'k1' => 1, 'k2' => {'sk2' => 1}}
|
102
|
-
h2 = {'k1' => 2, 'k2' => 1}
|
103
|
-
|
104
|
-
h1.merge_recursive!(h2)
|
105
|
-
|
106
|
-
assert_equal({'k1' => 2, 'k2' => 1}, h1)
|
107
|
-
end
|
108
|
-
|
109
|
-
def test_merge_recursive_self5
|
110
|
-
h1 = {'k1' => 1, 'k2' => {'sk1' => 1}}
|
111
|
-
h2 = {'k1' => 2, 'k2' => {'sk2' => 2}}
|
112
|
-
|
113
|
-
h1.merge_recursive!(h2)
|
114
|
-
|
115
|
-
assert_equal({'k1' => 2, 'k2' => {'sk1' => 1, 'sk2' => 2}}, h1)
|
116
|
-
end
|
117
|
-
|
118
|
-
def test_merge_recursive_self6
|
119
|
-
h1 = {'k1' => 1, 'k2' => 1, 'k4' => {'sk1' => 1}}
|
120
|
-
h2 = {'k1' => 2, 'k3' => 2, 'k4' => {'sk2' => 2}}
|
121
|
-
|
122
|
-
h1.merge_recursive!(h2)
|
123
|
-
|
124
|
-
assert_equal({'k1' => 2, 'k2' => 1, 'k3' => 2, 'k4' => {'sk1' => 1, 'sk2' => 2}}, h1)
|
125
|
-
end
|
126
|
-
|
127
|
-
def test_merge_recursive_self7
|
128
|
-
h1 = {'k1' => 1, 'k2' => {'sk1' => 1}}
|
129
|
-
h2 = {'k1' => 2}
|
130
|
-
|
131
|
-
h1.merge_recursive!(h2)
|
132
|
-
|
133
|
-
assert_equal({'k1' => 2, 'k2' => {'sk1' => 1}}, h1)
|
134
|
-
end
|
135
|
-
end
|
data/tests/tc_integer.rb
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'minitest/autorun'
|
4
|
-
require 'thefox-ext'
|
5
|
-
|
6
|
-
|
7
|
-
class TestInteger < MiniTest::Test
|
8
|
-
def test_to_b
|
9
|
-
assert_equal(true, 3.to_b)
|
10
|
-
assert_equal(true, 2.to_b)
|
11
|
-
assert_equal(true, 1.to_b)
|
12
|
-
|
13
|
-
assert_equal(false, 0.to_b)
|
14
|
-
|
15
|
-
assert_equal(true, -1.to_b)
|
16
|
-
assert_equal(true, -2.to_b)
|
17
|
-
assert_equal(true, -3.to_b)
|
18
|
-
|
19
|
-
end
|
20
|
-
end
|
data/tests/tc_nil.rb
DELETED
data/tests/tc_string.rb
DELETED
@@ -1,87 +0,0 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
3
|
-
require 'minitest/autorun'
|
4
|
-
require 'thefox-ext'
|
5
|
-
|
6
|
-
|
7
|
-
class TestString < MiniTest::Test
|
8
|
-
def test_is_digit
|
9
|
-
assert_equal(true, '0123456789'.is_digit?)
|
10
|
-
assert_equal(true, '1'.is_digit?)
|
11
|
-
assert_equal(true, '2'.is_digit?)
|
12
|
-
|
13
|
-
assert_equal(false, 'ABC'.is_digit?)
|
14
|
-
assert_equal(false, 'A'.is_digit?)
|
15
|
-
assert_equal(false, 'A123'.is_digit?)
|
16
|
-
assert_equal(false, '123B'.is_digit?)
|
17
|
-
|
18
|
-
assert_equal(false, 'abc'.is_digit?)
|
19
|
-
assert_equal(false, 'a'.is_digit?)
|
20
|
-
assert_equal(false, 'a123'.is_digit?)
|
21
|
-
assert_equal(false, '123b'.is_digit?)
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_is_lower
|
25
|
-
assert_equal(false, '0123456789'.is_lower?)
|
26
|
-
assert_equal(false, '1'.is_lower?)
|
27
|
-
assert_equal(false, '2'.is_lower?)
|
28
|
-
|
29
|
-
assert_equal(false, 'ABC'.is_lower?)
|
30
|
-
assert_equal(false, 'A'.is_lower?)
|
31
|
-
assert_equal(false, 'A123'.is_lower?)
|
32
|
-
assert_equal(false, '123B'.is_lower?)
|
33
|
-
|
34
|
-
assert_equal(true, 'abc'.is_lower?)
|
35
|
-
assert_equal(true, 'a'.is_lower?)
|
36
|
-
assert_equal(false, 'a123'.is_lower?)
|
37
|
-
assert_equal(false, '123b'.is_lower?)
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_is_upper
|
41
|
-
assert_equal(false, '0123456789'.is_upper?)
|
42
|
-
assert_equal(false, '1'.is_upper?)
|
43
|
-
assert_equal(false, '2'.is_upper?)
|
44
|
-
|
45
|
-
assert_equal(true, 'ABC'.is_upper?)
|
46
|
-
assert_equal(true, 'A'.is_upper?)
|
47
|
-
assert_equal(false, 'A123'.is_upper?)
|
48
|
-
assert_equal(false, '123B'.is_upper?)
|
49
|
-
|
50
|
-
assert_equal(false, 'abc'.is_upper?)
|
51
|
-
assert_equal(false, 'a'.is_upper?)
|
52
|
-
assert_equal(false, 'a123'.is_upper?)
|
53
|
-
assert_equal(false, '123b'.is_upper?)
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_is_utf8
|
57
|
-
assert_equal(true, 'ABC'.is_utf8?)
|
58
|
-
assert_equal(true, 'üäöß'.is_utf8?)
|
59
|
-
end
|
60
|
-
|
61
|
-
def test_titlecase
|
62
|
-
assert_equal('Abc Abc', 'ABC ABC'.titlecase)
|
63
|
-
assert_equal('Abc Abc', 'ABC abc'.titlecase)
|
64
|
-
assert_equal('Abc Abc', 'abc ABC'.titlecase)
|
65
|
-
assert_equal('Abc Abc', 'Abc Abc'.titlecase)
|
66
|
-
assert_equal('Abc Abc', 'abc abc'.titlecase)
|
67
|
-
assert_equal('Abc Abc', 'aBc abc'.titlecase)
|
68
|
-
assert_equal('Abc Abc', 'aBc abC'.titlecase)
|
69
|
-
|
70
|
-
assert_equal('Abc1 Abc2', 'ABC1 ABC2'.titlecase)
|
71
|
-
|
72
|
-
assert_equal('(abc Abc)', '(ABC ABC)'.titlecase)
|
73
|
-
end
|
74
|
-
|
75
|
-
def test_to_hex
|
76
|
-
assert_equal('41424320414243', 'ABC ABC'.to_hex)
|
77
|
-
end
|
78
|
-
|
79
|
-
def test_to_i32a
|
80
|
-
assert_equal({0 => 1090519040}, 'A'.to_i32a)
|
81
|
-
end
|
82
|
-
|
83
|
-
def test_to_utf8
|
84
|
-
assert_equal('Abc', 'Abc'.to_utf8)
|
85
|
-
assert_equal('AüäößE', 'AüäößE'.to_utf8)
|
86
|
-
end
|
87
|
-
end
|
data/tests/tc_true.rb
DELETED