inquisitive 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.md +24 -0
- data/README.md +261 -0
- data/Rakefile +8 -0
- data/inquisitive.gemspec +23 -0
- data/lib/inquisitive.rb +48 -0
- data/lib/inquisitive/array.rb +24 -0
- data/lib/inquisitive/environment.rb +89 -0
- data/lib/inquisitive/hash.rb +39 -0
- data/lib/inquisitive/hash_with_indifferent_access.rb +185 -0
- data/lib/inquisitive/string.rb +24 -0
- data/test/inquisitive/array_test.rb +11 -0
- data/test/inquisitive/combinatorial_environment_test.rb +72 -0
- data/test/inquisitive/environment_test.rb +44 -0
- data/test/inquisitive/hash_test.rb +20 -0
- data/test/inquisitive/hash_with_indifferent_access_test.rb +482 -0
- data/test/inquisitive/string_test.rb +11 -0
- data/test/inquisitive_test.rb +151 -0
- data/test/shared/array_tests.rb +32 -0
- data/test/shared/combinatorial_environment_tests.rb +33 -0
- data/test/shared/hash_tests.rb +26 -0
- data/test/shared/string_tests.rb +32 -0
- data/test/test_helper.rb +67 -0
- metadata +136 -0
@@ -0,0 +1,151 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class InquisitiveTest < Test
|
4
|
+
Helpers = Module.new.extend Inquisitive
|
5
|
+
HashWithIndifferentAccess ||= Inquisitive::HashWithIndifferentAccess
|
6
|
+
|
7
|
+
def setup
|
8
|
+
super
|
9
|
+
@symbol = :a
|
10
|
+
@numeric = 1
|
11
|
+
@class = if Object.const_defined?(:Misc)
|
12
|
+
Misc
|
13
|
+
else
|
14
|
+
Object.const_set(:Misc, Class.new)
|
15
|
+
end
|
16
|
+
@object = @class.new
|
17
|
+
end
|
18
|
+
|
19
|
+
####
|
20
|
+
# CONVERSION
|
21
|
+
##
|
22
|
+
def test_converted_nil_equality
|
23
|
+
assert_equal Inquisitive[nil], nil
|
24
|
+
end
|
25
|
+
def test_converted_false_equality
|
26
|
+
assert_equal Inquisitive[false], false
|
27
|
+
end
|
28
|
+
def test_converted_true_equality
|
29
|
+
assert_equal Inquisitive[true], true
|
30
|
+
end
|
31
|
+
def test_converted_numeric_equality
|
32
|
+
assert_equal Inquisitive[@numeric], @numeric
|
33
|
+
end
|
34
|
+
def test_converted_symbol_equality
|
35
|
+
assert_equal Inquisitive[@symbol], @symbol
|
36
|
+
end
|
37
|
+
def test_converted_class_equality
|
38
|
+
assert_equal Inquisitive[@class], @class
|
39
|
+
end
|
40
|
+
def test_converted_object_equality
|
41
|
+
assert_equal Inquisitive[@object], @object
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_converted_string_instanciation
|
45
|
+
assert_instance_of Inquisitive::String, Inquisitive[@raw_string]
|
46
|
+
end
|
47
|
+
def test_converted_string_equality
|
48
|
+
assert_equal Inquisitive[@raw_string], @raw_string
|
49
|
+
end
|
50
|
+
|
51
|
+
def test_converted_array_instanciation
|
52
|
+
assert_instance_of Inquisitive::Array, Inquisitive[@raw_array]
|
53
|
+
end
|
54
|
+
def test_converted_array_equality
|
55
|
+
assert_equal Inquisitive[@raw_array], @raw_array
|
56
|
+
end
|
57
|
+
|
58
|
+
def test_converted_hash_instanciation
|
59
|
+
assert_instance_of Inquisitive::Hash, Inquisitive[@raw_hash]
|
60
|
+
end
|
61
|
+
def test_converted_hash_equality
|
62
|
+
assert_equal Inquisitive[@raw_hash], HashWithIndifferentAccess.new(@raw_hash)
|
63
|
+
end
|
64
|
+
|
65
|
+
####
|
66
|
+
# PRESENCE
|
67
|
+
##
|
68
|
+
def test_presence_of_nil
|
69
|
+
refute Inquisitive.present? nil
|
70
|
+
end
|
71
|
+
def test_presence_of_false
|
72
|
+
refute Inquisitive.present? false
|
73
|
+
end
|
74
|
+
def test_presence_of_true
|
75
|
+
assert Inquisitive.present? true
|
76
|
+
end
|
77
|
+
def test_presence_of_numeric
|
78
|
+
assert Inquisitive.present? @numeric
|
79
|
+
end
|
80
|
+
def test_presence_of_symbol
|
81
|
+
assert Inquisitive.present? @symbol
|
82
|
+
end
|
83
|
+
def test_presence_of_class
|
84
|
+
assert Inquisitive.present? @class
|
85
|
+
end
|
86
|
+
def test_presence_of_object
|
87
|
+
assert Inquisitive.present? @object
|
88
|
+
end
|
89
|
+
|
90
|
+
def test_presence_of_non_blank_strings
|
91
|
+
assert Inquisitive.present? @raw_string
|
92
|
+
end
|
93
|
+
def test_presence_of_blank_strings
|
94
|
+
refute Inquisitive.present? ""
|
95
|
+
end
|
96
|
+
|
97
|
+
def test_presence_of_non_empty_arrays
|
98
|
+
assert Inquisitive.present? @raw_array
|
99
|
+
end
|
100
|
+
def test_presence_of_partially_empty_string_array_elements
|
101
|
+
assert Inquisitive.present? [nil, @raw_string]
|
102
|
+
end
|
103
|
+
def test_presence_of_partially_empty_hash_array_elements
|
104
|
+
assert Inquisitive.present? [nil, @raw_string]
|
105
|
+
end
|
106
|
+
def test_presence_of_empty_array_elements
|
107
|
+
refute Inquisitive.present? [nil, "", [], {a: nil}]
|
108
|
+
end
|
109
|
+
def test_presence_of_empty_arrays
|
110
|
+
refute Inquisitive.present? []
|
111
|
+
end
|
112
|
+
|
113
|
+
def test_presence_of_non_empty_hashes
|
114
|
+
assert Inquisitive.present? @raw_hash
|
115
|
+
end
|
116
|
+
def test_presence_of_partially_empty_string_hash_elements
|
117
|
+
assert Inquisitive.present?({a: nil, b: @raw_string})
|
118
|
+
end
|
119
|
+
def test_presence_of_partially_empty_array_hash_elements
|
120
|
+
assert Inquisitive.present?({a: nil, b: @raw_array})
|
121
|
+
end
|
122
|
+
def test_presence_of_empty_hash_elements
|
123
|
+
refute Inquisitive.present?({a: nil, b: "", c: [], d: {a: nil}})
|
124
|
+
end
|
125
|
+
def test_presence_of_empty_hashes
|
126
|
+
refute Inquisitive.present?({})
|
127
|
+
end
|
128
|
+
|
129
|
+
####
|
130
|
+
# HELPERS
|
131
|
+
##
|
132
|
+
def test_found_symbol_predicate_method_helper
|
133
|
+
assert Helpers.send :predicate_method?, :foo?
|
134
|
+
end
|
135
|
+
def test_found_string_predicate_method_helper
|
136
|
+
assert Helpers.send :predicate_method?, "foo?"
|
137
|
+
end
|
138
|
+
def test_missing_symbol_predicate_method_helper
|
139
|
+
refute Helpers.send :predicate_method?, :foo
|
140
|
+
end
|
141
|
+
def test_missing_string_predicate_method_helper
|
142
|
+
refute Helpers.send :predicate_method?, "foo"
|
143
|
+
end
|
144
|
+
|
145
|
+
def test_symbol_predication_helper
|
146
|
+
assert_equal Helpers.send(:predication, :foo?), 'foo'
|
147
|
+
end
|
148
|
+
def test_string_predication_helper
|
149
|
+
assert_equal Helpers.send(:predication, "foo?"), 'foo'
|
150
|
+
end
|
151
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module ArrayTests
|
2
|
+
def test_array_value_type
|
3
|
+
assert_instance_of Inquisitive::Array, array
|
4
|
+
end
|
5
|
+
def test_array_match
|
6
|
+
assert array.postgres?
|
7
|
+
end
|
8
|
+
def test_array_miss
|
9
|
+
refute array.sql_server?
|
10
|
+
end
|
11
|
+
def test_array_negative_match
|
12
|
+
assert array.exclude.sql_server?
|
13
|
+
end
|
14
|
+
def test_array_negative_miss
|
15
|
+
refute array.exclude.postgres?
|
16
|
+
end
|
17
|
+
def test_array_double_negative_match
|
18
|
+
assert array.exclude.exclude.postgres?
|
19
|
+
end
|
20
|
+
def test_array_double_negative_miss
|
21
|
+
refute array.exclude.exclude.sql_server?
|
22
|
+
end
|
23
|
+
def test_array_missing_question_mark
|
24
|
+
assert_raises(NoMethodError) { array.postgres }
|
25
|
+
end
|
26
|
+
def test_array_respond_to
|
27
|
+
assert_respond_to array, :postgres?
|
28
|
+
end
|
29
|
+
def test_array_method_missing
|
30
|
+
assert_raises(NoMethodError) { array.undefined }
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module CombinatorialEnvironmentTests
|
2
|
+
|
3
|
+
def test_type_is_parsed_correctly
|
4
|
+
assert_kind_of(
|
5
|
+
Object.const_get(:"#{@type.capitalize}"),
|
6
|
+
App.send(@type)
|
7
|
+
)
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_type_is_converted_correctly
|
11
|
+
assert_kind_of(
|
12
|
+
Inquisitive.const_get(:"#{@type.capitalize}"),
|
13
|
+
App.send(@type)
|
14
|
+
)
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_changing_variable_after_definition
|
18
|
+
App.inquires_about @type.upcase, mode: @mode, with: :precache
|
19
|
+
test = @mode.static? ? :assert_equal : :refute_equal
|
20
|
+
precache = App.precache
|
21
|
+
send :"change_#{@type}_variable"
|
22
|
+
send test, App.send(@type), precache
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_changing_variable_after_invocation
|
26
|
+
test = @mode.dynamic? ? :assert_change : :refute_change
|
27
|
+
monitor = -> { App.send(@type) }
|
28
|
+
send test, monitor do
|
29
|
+
send :"change_#{@type}_variable"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module HashTests
|
2
|
+
def test_hash_match
|
3
|
+
assert hash.authentication?
|
4
|
+
end
|
5
|
+
def test_hash_miss
|
6
|
+
refute hash.registration?
|
7
|
+
end
|
8
|
+
def test_hash_negative_match
|
9
|
+
assert hash.no.registration?
|
10
|
+
end
|
11
|
+
def test_hash_negative_miss
|
12
|
+
refute hash.no.authentication?
|
13
|
+
end
|
14
|
+
def test_hash_double_negative_match
|
15
|
+
assert hash.no.no.authentication?
|
16
|
+
end
|
17
|
+
def test_hash_double_negative_miss
|
18
|
+
refute hash.no.no.registration?
|
19
|
+
end
|
20
|
+
def test_hash_respond_to
|
21
|
+
assert_respond_to hash, :authentication?
|
22
|
+
end
|
23
|
+
def test_hash_method_missing
|
24
|
+
assert_raises(NoMethodError) { hash.undefined }
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module StringTests
|
2
|
+
def test_string_value_type
|
3
|
+
assert_instance_of Inquisitive::String, string
|
4
|
+
end
|
5
|
+
def test_string_match
|
6
|
+
assert string.production?
|
7
|
+
end
|
8
|
+
def test_string_miss
|
9
|
+
refute string.development?
|
10
|
+
end
|
11
|
+
def test_string_negative_match
|
12
|
+
assert string.not.development?
|
13
|
+
end
|
14
|
+
def test_string_negative_miss
|
15
|
+
refute string.not.production?
|
16
|
+
end
|
17
|
+
def test_string_double_negative_match
|
18
|
+
assert string.not.not.production?
|
19
|
+
end
|
20
|
+
def test_string_double_negative_miss
|
21
|
+
refute string.not.not.development?
|
22
|
+
end
|
23
|
+
def test_string_missing_question_mark
|
24
|
+
assert_raises(NoMethodError) { string.production }
|
25
|
+
end
|
26
|
+
def test_string_respond_to
|
27
|
+
assert_respond_to string, :development?
|
28
|
+
end
|
29
|
+
def test_string_method_missing
|
30
|
+
assert_raises(NoMethodError) { string.undefined }
|
31
|
+
end
|
32
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,67 @@
|
|
1
|
+
require "rubygems"
|
2
|
+
require "simplecov"
|
3
|
+
require "minitest/autorun"
|
4
|
+
|
5
|
+
SimpleCov.start do
|
6
|
+
add_filter "/test"
|
7
|
+
end
|
8
|
+
|
9
|
+
class Test < MiniTest::Test
|
10
|
+
|
11
|
+
def assert_change(lambda_getter)
|
12
|
+
old = lambda_getter.call
|
13
|
+
yield
|
14
|
+
refute_equal old, lambda_getter.call
|
15
|
+
end
|
16
|
+
|
17
|
+
def refute_change(lambda_getter)
|
18
|
+
old = lambda_getter.call
|
19
|
+
yield
|
20
|
+
assert_equal old, lambda_getter.call
|
21
|
+
end
|
22
|
+
|
23
|
+
def refute_raise
|
24
|
+
nothing_raised = true
|
25
|
+
message = 'Nothing raised.'
|
26
|
+
begin
|
27
|
+
yield
|
28
|
+
rescue => e
|
29
|
+
nothing_raised = false
|
30
|
+
message = "Expected nothing to be raised, caught: #{e.exception}:\n" \
|
31
|
+
"#{e.backtrace.join("\n")}"
|
32
|
+
end
|
33
|
+
assert nothing_raised, message
|
34
|
+
end
|
35
|
+
|
36
|
+
def setup
|
37
|
+
@raw_string = 'production'
|
38
|
+
@raw_array = %w[mysql postgres sqlite]
|
39
|
+
@raw_hash = {
|
40
|
+
authentication: true,
|
41
|
+
in: @raw_string,
|
42
|
+
databases: @raw_array
|
43
|
+
}
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
class EnvironmentTest < Test
|
49
|
+
|
50
|
+
def setup
|
51
|
+
super
|
52
|
+
Object.const_set :App, Module.new
|
53
|
+
App.extend Inquisitive::Environment
|
54
|
+
end
|
55
|
+
def teardown
|
56
|
+
super
|
57
|
+
Object.send :remove_const, :App
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
require "shared/string_tests"
|
63
|
+
require "shared/array_tests"
|
64
|
+
require "shared/hash_tests"
|
65
|
+
require "shared/combinatorial_environment_tests"
|
66
|
+
|
67
|
+
require "inquisitive"
|
metadata
ADDED
@@ -0,0 +1,136 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: inquisitive
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Chris Keele
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2013-11-09 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - '>='
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.3'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '>='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '5.0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '5.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: simplecov
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0.7'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0.7'
|
69
|
+
description: Predicate methods for those curious about their datastructures.
|
70
|
+
email:
|
71
|
+
- dev@chriskeele.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- .gitignore
|
77
|
+
- Gemfile
|
78
|
+
- LICENSE.md
|
79
|
+
- README.md
|
80
|
+
- Rakefile
|
81
|
+
- inquisitive.gemspec
|
82
|
+
- lib/inquisitive.rb
|
83
|
+
- lib/inquisitive/array.rb
|
84
|
+
- lib/inquisitive/environment.rb
|
85
|
+
- lib/inquisitive/hash.rb
|
86
|
+
- lib/inquisitive/hash_with_indifferent_access.rb
|
87
|
+
- lib/inquisitive/string.rb
|
88
|
+
- test/inquisitive/array_test.rb
|
89
|
+
- test/inquisitive/combinatorial_environment_test.rb
|
90
|
+
- test/inquisitive/environment_test.rb
|
91
|
+
- test/inquisitive/hash_test.rb
|
92
|
+
- test/inquisitive/hash_with_indifferent_access_test.rb
|
93
|
+
- test/inquisitive/string_test.rb
|
94
|
+
- test/inquisitive_test.rb
|
95
|
+
- test/shared/array_tests.rb
|
96
|
+
- test/shared/combinatorial_environment_tests.rb
|
97
|
+
- test/shared/hash_tests.rb
|
98
|
+
- test/shared/string_tests.rb
|
99
|
+
- test/test_helper.rb
|
100
|
+
homepage: https://github.com/rawsugar/inquisitive
|
101
|
+
licenses:
|
102
|
+
- MIT
|
103
|
+
metadata: {}
|
104
|
+
post_install_message:
|
105
|
+
rdoc_options: []
|
106
|
+
require_paths:
|
107
|
+
- lib
|
108
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - '>='
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '0'
|
113
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
requirements: []
|
119
|
+
rubyforge_project:
|
120
|
+
rubygems_version: 2.0.3
|
121
|
+
signing_key:
|
122
|
+
specification_version: 4
|
123
|
+
summary: Predicate methods for those curious about their datastructures.
|
124
|
+
test_files:
|
125
|
+
- test/inquisitive/array_test.rb
|
126
|
+
- test/inquisitive/combinatorial_environment_test.rb
|
127
|
+
- test/inquisitive/environment_test.rb
|
128
|
+
- test/inquisitive/hash_test.rb
|
129
|
+
- test/inquisitive/hash_with_indifferent_access_test.rb
|
130
|
+
- test/inquisitive/string_test.rb
|
131
|
+
- test/inquisitive_test.rb
|
132
|
+
- test/shared/array_tests.rb
|
133
|
+
- test/shared/combinatorial_environment_tests.rb
|
134
|
+
- test/shared/hash_tests.rb
|
135
|
+
- test/shared/string_tests.rb
|
136
|
+
- test/test_helper.rb
|