potrubi 0.0.3 → 0.0.4
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.
- data/lib/potrubi.rb +1 -1
- data/lib/potrubi/bootstrap.rb +1 -1
- data/lib/potrubi/core.rb +3 -3
- data/lib/potrubi/dsl.rb +86 -0
- data/lib/potrubi/dsl/accessor.rb +76 -0
- data/lib/potrubi/dsl/cache_2d.rb +811 -0
- data/lib/potrubi/dsl/contract.rb +731 -0
- data/lib/potrubi/dsl/super.rb +517 -0
- data/lib/potrubi/klass/syntax/alias.rb +150 -0
- data/lib/potrubi/klass/syntax/braket.rb +115 -25
- data/lib/potrubi/klass/syntax/builder.rb +45 -0
- data/lib/potrubi/klass/syntax/method.rb +436 -0
- data/lib/potrubi/klass/syntax/mixin/name_generation.rb +85 -0
- data/lib/potrubi/klass/syntax/mixin/new_aliases.rb +76 -0
- data/lib/potrubi/klass/syntax/mixin/new_brakets.rb +89 -0
- data/lib/potrubi/klass/syntax/mixin/new_methods.rb +158 -0
- data/lib/potrubi/klass/syntax/mixin/new_snippets.rb +74 -0
- data/lib/potrubi/klass/syntax/mixin/new_statements.rb +0 -0
- data/lib/potrubi/klass/syntax/mixin/statement_management.rb +69 -0
- data/lib/potrubi/klass/syntax/mixin/synel_management.rb +168 -0
- data/lib/potrubi/klass/syntax/snippet.rb +386 -0
- data/lib/potrubi/klass/syntax/statement.rb +91 -0
- data/lib/potrubi/klass/syntax/super.rb +88 -0
- data/lib/potrubi/mixin/bootstrap_common.rb +38 -12
- data/lib/potrubi/mixin/configuration.rb +31 -3
- data/lib/potrubi/mixin/contract.rb +5 -14
- data/lib/potrubi/mixin/contract/recipes.rb +307 -0
- data/lib/potrubi/mixin/dynamic-recipes.rb +1 -11
- data/lib/potrubi/mixin/dynamic.rb +223 -115
- data/lib/potrubi/mixin/exception.rb +3 -22
- data/lib/potrubi/mixin/filesys.rb +5 -21
- data/lib/potrubi/mixin/initialize.rb +11 -6
- data/lib/potrubi/mixin/konstant.rb +14 -118
- data/lib/potrubi/mixin/logger.rb +28 -41
- data/lib/potrubi/mixin/pathandnames.rb +4 -34
- data/lib/potrubi/mixin/persistence.rb +115 -10
- data/lib/potrubi/mixin/script.rb +0 -5
- data/lib/potrubi/mixin/{text-snippets → snippet-dictionaries}/methods-text-snippets.rb +138 -49
- data/lib/potrubi/mixin/{text-snippets.rb → snippet-manager.rb} +51 -39
- data/lib/potrubi/mixin/util.rb +66 -20
- data/lib/potrubi/version.rb +1 -1
- data/test/potrubi/mixin/bootstrap_common.rb +205 -0
- data/test/potrubi/mixin/konstant.rb +216 -0
- data/test/potrubi/mixin/logger.rb +124 -0
- data/test/ts_bootstrap_mixins.rb +16 -0
- data/test/ts_core_mixins.rb +7 -0
- metadata +31 -6
- data/lib/potrubi/mixin/contract-recipes.rb +0 -226
data/lib/potrubi/mixin/util.rb
CHANGED
@@ -3,51 +3,97 @@
|
|
3
3
|
|
4
4
|
# various useful methods
|
5
5
|
|
6
|
-
|
6
|
+
# Notes *ONLY* need bootstrap
|
7
7
|
|
8
|
-
|
9
|
-
#requireList.each {|r| require_relative "#{r}"}
|
8
|
+
require_relative '../bootstrap'
|
10
9
|
|
11
10
|
mixinContent = Module.new do
|
11
|
+
|
12
|
+
def potrubi_util_merge_arrays_or_croak(*arrays)
|
13
|
+
r = arrays.compact.inject({}) {|s, a| s.concat(potrubi_bootstrap_mustbe_array_or_croak(a)) }
|
14
|
+
r.empty? ? nil : r
|
15
|
+
end
|
16
|
+
alias_method :potrubi_util_merge_arrays, :potrubi_util_merge_arrays_or_croak
|
17
|
+
alias_method :potrubi_util_reduce_arrays, :potrubi_util_merge_arrays_or_croak
|
12
18
|
|
13
|
-
|
14
|
-
|
15
|
-
r = hashes.flatten.compact.inject({}) {|s, h| s.merge(potrubi_bootstrap_mustbe_hash_or_croak(h))}
|
19
|
+
def potrubi_util_merge_hashes_or_croak(*hashes, &mergeBlok)
|
20
|
+
r = hashes.flatten.compact.inject({}) {|s, h| s.merge(potrubi_bootstrap_mustbe_hash_or_croak(h), &mergeBlok)}
|
16
21
|
r.empty? ? nil : r
|
17
22
|
end
|
18
23
|
alias_method :potrubi_util_merge_hashes, :potrubi_util_merge_hashes_or_croak
|
19
|
-
|
24
|
+
alias_method :potrubi_util_reduce_hashes_or_croak, :potrubi_util_merge_hashes_or_croak
|
25
|
+
alias_method :potrubi_util_reduce_hashes, :potrubi_util_merge_hashes_or_croak
|
20
26
|
|
27
|
+
def potrubi_util_merge_hashes_concatenate_array_values_or_croak(*hashes)
|
28
|
+
potrubi_util_merge_hashes_or_croak(*hashes) do | k, oldV, newV |
|
29
|
+
case
|
30
|
+
when oldV.is_a?(Array) && newV.is_a?(Array) then [].concat(oldV).concat(newV)
|
31
|
+
else
|
32
|
+
newV
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
21
37
|
# Apply a proc to the hash values and return a new hash with new values
|
22
38
|
|
23
|
-
#=begin
|
24
39
|
def potrubi_util_apply_proc_to_hash_or_croak(srceHash, &srceBlok)
|
25
|
-
|
26
|
-
|
40
|
+
potrubi_bootstrap_mustbe_proc_or_croak(srceBlok)
|
41
|
+
potrubi_bootstrap_mustbe_hash_or_croak(srceHash).each_with_object({}) {|(k,v),h| h[k] = srceBlok.call(k, v) }
|
27
42
|
end
|
28
43
|
alias_method :potrubi_util_map_hash_value, :potrubi_util_apply_proc_to_hash_or_croak
|
29
44
|
alias_method :potrubi_util_map_hash_v, :potrubi_util_apply_proc_to_hash_or_croak
|
30
|
-
|
31
|
-
#=begin
|
45
|
+
|
32
46
|
def potrubi_util_map_hash_key_and_value_or_croak(srceHash, &srceBlok)
|
33
|
-
|
34
|
-
|
47
|
+
potrubi_bootstrap_mustbe_proc_or_croak(srceBlok)
|
48
|
+
potrubi_bootstrap_mustbe_hash_or_croak(srceHash).each_with_object({}) {|(k,v),h| r = potrubi_bootstrap_mustbe_array_or_croak(srceBlok.call(k, v)); h[r[0]] = r[1] }
|
35
49
|
end
|
36
50
|
alias_method :potrubi_util_map_hash_kv, :potrubi_util_map_hash_key_and_value_or_croak
|
37
|
-
#=end
|
38
51
|
|
39
|
-
|
52
|
+
# find hash keys recursively
|
53
|
+
def potrubi_util_find_hash_keys_or_croak(srceHash, *srceKeys, &srceBlok)
|
54
|
+
potrubi_bootstrap_mustbe_hash_or_croak(srceHash)
|
55
|
+
|
56
|
+
# puts "potrubi_util_find_hash_keys_or_croak srceHash #{srceHash}"
|
57
|
+
# puts "potrubi_util_find_hash_keys_or_croak srceKeys #{srceKeys}"
|
58
|
+
|
59
|
+
r = srceKeys.flatten.compact.reduce(srceHash) do | s, k |
|
60
|
+
# puts "potrubi_util_find_hash_keys_or_croak k #{k} s #{s}"
|
61
|
+
###(s.is_a?(Hash) && s.has_key?(k)) ? s[k] : break
|
62
|
+
(s.is_a?(Hash) && s.has_key?(k)) ? s[k] : potrubi_bootstrap_mustbe_key_or_croak(s, k, 'potrubi_util_find_hash_keys_or_croak')
|
63
|
+
end
|
64
|
+
# any blok? - call even if nil (i.e key was found and value was nil)
|
65
|
+
srceBlok ? srceBlok.call(r) : r
|
66
|
+
end
|
67
|
+
|
68
|
+
def potrubi_util_find_hash_keys(srceHash, *srceKeys, &srceBlok)
|
69
|
+
potrubi_util_find_hash_keys_or_croak(srceHash, *srceKeys, &srceBlok) rescue nil
|
70
|
+
end
|
71
|
+
|
40
72
|
def potrubi_util_array_to_hash(aVal, &procBlok)
|
41
|
-
|
73
|
+
aVal.is_a?(Array) || aVal.is_a?(Enumerator) || potrubi_bootstrap_mustbe_array_or_croak(aVal)
|
42
74
|
case
|
43
|
-
when Kernel.block_given? then aVal.each_with_object({}) {|a, h| r =
|
75
|
+
when Kernel.block_given? then aVal.each_with_object({}) {|a, h| r = potrubi_bootstrap_mustbe_array_or_croak(procBlok.call(a)); h[r[0]] = r[1] } # k&v from proc
|
44
76
|
else
|
45
77
|
aVal.each_with_object({}) {|a, h| h[a] = nil } # values to nil
|
46
78
|
end
|
47
79
|
end
|
48
|
-
|
80
|
+
|
81
|
+
def potrubi_util_setter_or_croak(setTarget, *hashes, &mergeBlok)
|
82
|
+
potrubi_util_merge_hashes_or_croak(*hashes, &mergeBlok).each {|k, v| setTarget.__send__("#{k}=", v) }
|
83
|
+
setTarget
|
84
|
+
end
|
85
|
+
alias_method :potrubi_util_set_attributes_or_croak, :potrubi_util_setter_or_croak
|
86
|
+
|
87
|
+
end
|
88
|
+
|
89
|
+
module Potrubi
|
90
|
+
module Mixin
|
91
|
+
module Util
|
92
|
+
end
|
93
|
+
end
|
49
94
|
end
|
50
95
|
|
51
|
-
Potrubi::
|
96
|
+
Potrubi::Mixin::Util.__send__(:include, mixinContent) # Instance Methods
|
52
97
|
|
53
98
|
__END__
|
99
|
+
|
data/lib/potrubi/version.rb
CHANGED
@@ -0,0 +1,205 @@
|
|
1
|
+
|
2
|
+
# Potrubi Test Bootstrap Common Mixin
|
3
|
+
|
4
|
+
require 'minitest/autorun'
|
5
|
+
require 'minitest/spec'
|
6
|
+
|
7
|
+
require 'potrubi/mixin/logger'
|
8
|
+
require 'potrubi/mixin/bootstrap_common'
|
9
|
+
|
10
|
+
class TestClass1
|
11
|
+
|
12
|
+
|
13
|
+
include Potrubi::Mixin::Logger
|
14
|
+
include Potrubi::Mixin::BootstrapCommon
|
15
|
+
|
16
|
+
end
|
17
|
+
|
18
|
+
describe TestClass1 do
|
19
|
+
|
20
|
+
before do
|
21
|
+
@mixConstant = Potrubi::Mixin::BootstrapCommon
|
22
|
+
@t = TestClass1.new
|
23
|
+
@validClassMethods = [#:logger,
|
24
|
+
#:new_logger,
|
25
|
+
]
|
26
|
+
|
27
|
+
@validLoggerInstanceMethods = [
|
28
|
+
:logger,
|
29
|
+
:logger_instance_telltale,
|
30
|
+
:logger_me,
|
31
|
+
:logger_mx,
|
32
|
+
:logger_ms,
|
33
|
+
:logger_ca,
|
34
|
+
:logger_beg,
|
35
|
+
:logger_fin,
|
36
|
+
:logger_fmt,
|
37
|
+
:logger_fmt_kls,
|
38
|
+
:logger_fmt_kls_size,
|
39
|
+
:logger_fmt_who,
|
40
|
+
:logger_fmt_who_only,
|
41
|
+
|
42
|
+
].map {|m| "potrubi_bootstrap_#{m}" }
|
43
|
+
|
44
|
+
|
45
|
+
@validContractInstanceMethods = [:hash,
|
46
|
+
:array,
|
47
|
+
:fixnum,
|
48
|
+
:string,
|
49
|
+
:symbol,
|
50
|
+
:float,
|
51
|
+
:class,
|
52
|
+
:module,
|
53
|
+
:proc,
|
54
|
+
:key,
|
55
|
+
:file,
|
56
|
+
:directory,
|
57
|
+
:not_nil,
|
58
|
+
:not_empty,
|
59
|
+
:empty
|
60
|
+
].map {|m| "potrubi_bootstrap_mustbe_#{m}_or_croak"}
|
61
|
+
|
62
|
+
@validExceptionInstanceMethods = [:raise,
|
63
|
+
:surprise,
|
64
|
+
:duplicate,
|
65
|
+
:missing,
|
66
|
+
].map {|m| "potrubi_bootstrap_#{m}_exception" }
|
67
|
+
|
68
|
+
@validInstanceMethods = [@validContractInstanceMethods,
|
69
|
+
@validLoggerInstanceMethods,
|
70
|
+
@validExceptionInstanceMethods,
|
71
|
+
].flatten
|
72
|
+
|
73
|
+
@validContractTests = {
|
74
|
+
hash: {},
|
75
|
+
array: [],
|
76
|
+
string: 'Hi There',
|
77
|
+
symbol: :'A symbol',
|
78
|
+
fixnum: 1,
|
79
|
+
float: 2.3,
|
80
|
+
|
81
|
+
class: Class.new,
|
82
|
+
module: Module.new,
|
83
|
+
|
84
|
+
file: __FILE__,
|
85
|
+
directory: File.dirname(__FILE__),
|
86
|
+
|
87
|
+
#empty: [],
|
88
|
+
#not_empty: %w(this is not empty),
|
89
|
+
#not_nil: 'definitely is not nil',
|
90
|
+
###proc: ->(p) {true}, # can't test proc for some reason - confuses Minitest?
|
91
|
+
}
|
92
|
+
|
93
|
+
@invalidContractTests = {
|
94
|
+
hash: {},
|
95
|
+
array: [],
|
96
|
+
string: 'Hi There',
|
97
|
+
symbol: :'A symbol',
|
98
|
+
fixnum: 1,
|
99
|
+
float: 2.3,
|
100
|
+
|
101
|
+
#class: Class.new,
|
102
|
+
module: Module.new,
|
103
|
+
|
104
|
+
#file: __FILE__,
|
105
|
+
#directory: File.dirname(__FILE__),
|
106
|
+
|
107
|
+
|
108
|
+
###proc: ->(p) {true}, # can't test proc for some reason - confuses Minitest?
|
109
|
+
}
|
110
|
+
|
111
|
+
@validContractSpecialTests = {
|
112
|
+
empty: [],
|
113
|
+
not_empty: %w(this is not empty),
|
114
|
+
not_nil: 'definitely is not nil',
|
115
|
+
}
|
116
|
+
end
|
117
|
+
|
118
|
+
describe 'mixin reponds to only module methods' do
|
119
|
+
|
120
|
+
it 'has valid module methods' do
|
121
|
+
@validClassMethods.each { | methodName | @mixConstant.must_respond_to methodName }
|
122
|
+
end
|
123
|
+
|
124
|
+
it 'mixin doesnt repond to instance methods' do
|
125
|
+
@validInstanceMethods.each { | methodName | @mixConstant.wont_respond_to methodName }
|
126
|
+
end
|
127
|
+
|
128
|
+
|
129
|
+
end
|
130
|
+
|
131
|
+
describe 'class reponds to instance methods' do
|
132
|
+
|
133
|
+
it 'has valid instance methods' do
|
134
|
+
@validInstanceMethods.each { | methodName | @t.must_respond_to methodName }
|
135
|
+
end
|
136
|
+
|
137
|
+
end
|
138
|
+
|
139
|
+
describe 'does contracts' do
|
140
|
+
|
141
|
+
it 'valid one value contracts' do
|
142
|
+
|
143
|
+
validContracts = @validContractTests
|
144
|
+
|
145
|
+
|
146
|
+
validContracts.each do | contractName, contractTest |
|
147
|
+
contractMethod = "potrubi_bootstrap_mustbe_#{contractName}_or_croak"
|
148
|
+
puts("VALID contractName >#{contractName}< contractMethod >#{contractMethod}< contractTest >#{contractTest.class}<")
|
149
|
+
@t.__send__(contractMethod, contractTest).must_equal(contractTest)
|
150
|
+
end
|
151
|
+
|
152
|
+
|
153
|
+
end
|
154
|
+
|
155
|
+
it 'valid one value speical contracts' do
|
156
|
+
|
157
|
+
validContracts = @validContractSpecialTests
|
158
|
+
|
159
|
+
validContracts.each do | contractName, contractTest |
|
160
|
+
contractMethod = "potrubi_bootstrap_mustbe_#{contractName}_or_croak"
|
161
|
+
puts("VALID SPEICAL contractName >#{contractName}< contractMethod >#{contractMethod}< contractTest >#{contractTest.class}<")
|
162
|
+
@t.__send__(contractMethod, contractTest).must_equal(contractTest)
|
163
|
+
end
|
164
|
+
|
165
|
+
|
166
|
+
end
|
167
|
+
|
168
|
+
it 'invalid one value contracts' do
|
169
|
+
|
170
|
+
validContracts = @validContractTests
|
171
|
+
invalidContracts = @invalidContractTests
|
172
|
+
|
173
|
+
##invalidContracts = invalidContractsNom.select {|k,v| k != contractName}
|
174
|
+
|
175
|
+
invalidContracts.each do | invalidContractName, invalidContractTest |
|
176
|
+
|
177
|
+
validContractsSel = validContracts.select {|k,v| k != invalidContractName}
|
178
|
+
|
179
|
+
###validContracts.has_key?(invalidContractName) || next # invliad only a subset
|
180
|
+
|
181
|
+
validContractsSel.each do | contractName, contractTest |
|
182
|
+
contractMethod = "potrubi_bootstrap_mustbe_#{contractName}_or_croak"
|
183
|
+
|
184
|
+
puts("INVALID contractName >#{contractName}< contractMethod >#{contractMethod}< invalidContractTest >#{invalidContractTest.class}< invalidContractName >#{invalidContractName}<")
|
185
|
+
##@t.__send__(contractMethod, contractTest).must_equal(contractTest)
|
186
|
+
proc do
|
187
|
+
@t.__send__(contractMethod, invalidContractTest)
|
188
|
+
end.must_raise ArgumentError
|
189
|
+
|
190
|
+
end
|
191
|
+
|
192
|
+
|
193
|
+
end
|
194
|
+
|
195
|
+
|
196
|
+
end
|
197
|
+
|
198
|
+
|
199
|
+
end
|
200
|
+
|
201
|
+
end
|
202
|
+
|
203
|
+
|
204
|
+
__END__
|
205
|
+
|
@@ -0,0 +1,216 @@
|
|
1
|
+
|
2
|
+
# Potrubi Test Konstant Mixin
|
3
|
+
|
4
|
+
require 'minitest'
|
5
|
+
require 'minitest/autorun'
|
6
|
+
require 'minitest/spec'
|
7
|
+
|
8
|
+
require 'potrubi/bootstrap'
|
9
|
+
require 'potrubi/mixin/konstant'
|
10
|
+
|
11
|
+
class TestClass1
|
12
|
+
|
13
|
+
include Potrubi::Bootstrap
|
14
|
+
|
15
|
+
end
|
16
|
+
|
17
|
+
describe TestClass1 do
|
18
|
+
|
19
|
+
before do
|
20
|
+
@mixConstant = Potrubi::Mixin::Konstant
|
21
|
+
end
|
22
|
+
|
23
|
+
describe 'makes modules' do
|
24
|
+
|
25
|
+
it 'valid one value contracts' do
|
26
|
+
|
27
|
+
makeModules = {
|
28
|
+
#[:A] => 'A',
|
29
|
+
}
|
30
|
+
|
31
|
+
makeModules.each do | moduleSpec, moduleWantName |
|
32
|
+
|
33
|
+
puts("MAKE MODULE moduleSpec >#{moduleSpec}< moduleWantName >#{moduleWantName}<")
|
34
|
+
|
35
|
+
moduleConstant = @mixConstant.create_module_constant_or_croak(moduleSpec)
|
36
|
+
|
37
|
+
puts("MAKE MODULE moduleSpec >#{moduleSpec}< moduleWantName >#{moduleWantName}< moduleConstant >#{moduleConstant.class}< >#{moduleConstant}< ")
|
38
|
+
|
39
|
+
moduleConstant.must_be_instance_of(Module)
|
40
|
+
|
41
|
+
moduleFindName = moduleConstant.name
|
42
|
+
|
43
|
+
moduleFindName.must_equal(moduleWantName)
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
__END__
|
55
|
+
|
56
|
+
|
57
|
+
it 'valid one value speical contracts' do
|
58
|
+
|
59
|
+
validContracts = @validContractSpecialTests
|
60
|
+
|
61
|
+
validContracts.each do | contractName, contractTest |
|
62
|
+
contractMethod = "potrubi_bootstrap_mustbe_#{contractName}_or_croak"
|
63
|
+
puts("VALID SPEICAL contractName >#{contractName}< contractMethod >#{contractMethod}< contractTest >#{contractTest.class}<")
|
64
|
+
@t.__send__(contractMethod, contractTest).must_equal(contractTest)
|
65
|
+
end
|
66
|
+
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'invalid one value contracts' do
|
71
|
+
|
72
|
+
validContracts = @validContractTests
|
73
|
+
invalidContracts = @invalidContractTests
|
74
|
+
|
75
|
+
##invalidContracts = invalidContractsNom.select {|k,v| k != contractName}
|
76
|
+
|
77
|
+
invalidContracts.each do | invalidContractName, invalidContractTest |
|
78
|
+
|
79
|
+
validContractsSel = validContracts.select {|k,v| k != invalidContractName}
|
80
|
+
|
81
|
+
###validContracts.has_key?(invalidContractName) || next # invliad only a subset
|
82
|
+
|
83
|
+
validContractsSel.each do | contractName, contractTest |
|
84
|
+
contractMethod = "potrubi_bootstrap_mustbe_#{contractName}_or_croak"
|
85
|
+
|
86
|
+
puts("INVALID contractName >#{contractName}< contractMethod >#{contractMethod}< invalidContractTest >#{invalidContractTest.class}< invalidContractName >#{invalidContractName}<")
|
87
|
+
##@t.__send__(contractMethod, contractTest).must_equal(contractTest)
|
88
|
+
proc do
|
89
|
+
@t.__send__(contractMethod, invalidContractTest)
|
90
|
+
end.must_raise ArgumentError
|
91
|
+
|
92
|
+
end
|
93
|
+
|
94
|
+
|
95
|
+
end
|
96
|
+
|
97
|
+
|
98
|
+
end
|
99
|
+
|
100
|
+
|
101
|
+
describe 'mixin reponds to only module methods' do
|
102
|
+
|
103
|
+
it 'has valid module methods' do
|
104
|
+
@validClassMethods.each { | methodName | @mixConstant.must_respond_to methodName }
|
105
|
+
end
|
106
|
+
|
107
|
+
it 'mixin doesnt repond to instance methods' do
|
108
|
+
@validInstanceMethods.each { | methodName | @mixConstant.wont_respond_to methodName }
|
109
|
+
end
|
110
|
+
|
111
|
+
|
112
|
+
end
|
113
|
+
|
114
|
+
describe 'class reponds to instance methods' do
|
115
|
+
|
116
|
+
it 'has valid instance methods' do
|
117
|
+
@validInstanceMethods.each { | methodName | @t.must_respond_to methodName }
|
118
|
+
end
|
119
|
+
|
120
|
+
end
|
121
|
+
|
122
|
+
@mixConstant = Potrubi::Mixin::BootstrapCommon
|
123
|
+
@t = TestClass1.new
|
124
|
+
@validClassMethods = [#:logger,
|
125
|
+
#:new_logger,
|
126
|
+
]
|
127
|
+
|
128
|
+
@validLoggerInstanceMethods = [
|
129
|
+
:logger,
|
130
|
+
:logger_instance_telltale,
|
131
|
+
:logger_me,
|
132
|
+
:logger_mx,
|
133
|
+
:logger_ms,
|
134
|
+
:logger_ca,
|
135
|
+
:logger_beg,
|
136
|
+
:logger_fin,
|
137
|
+
:logger_fmt,
|
138
|
+
:logger_fmt_kls,
|
139
|
+
:logger_fmt_kls_size,
|
140
|
+
:logger_fmt_who,
|
141
|
+
:logger_fmt_who_only,
|
142
|
+
|
143
|
+
].map {|m| "potrubi_bootstrap_#{m}" }
|
144
|
+
|
145
|
+
|
146
|
+
@validContractInstanceMethods = [:hash,
|
147
|
+
:array,
|
148
|
+
:fixnum,
|
149
|
+
:string,
|
150
|
+
:symbol,
|
151
|
+
:float,
|
152
|
+
:class,
|
153
|
+
:module,
|
154
|
+
:proc,
|
155
|
+
:key,
|
156
|
+
:file,
|
157
|
+
:directory,
|
158
|
+
:not_nil,
|
159
|
+
:not_empty,
|
160
|
+
:empty
|
161
|
+
].map {|m| "potrubi_bootstrap_mustbe_#{m}_or_croak"}
|
162
|
+
|
163
|
+
@validExceptionInstanceMethods = [:raise,
|
164
|
+
:surprise,
|
165
|
+
:duplicate,
|
166
|
+
:missing,
|
167
|
+
].map {|m| "potrubi_bootstrap_#{m}_exception" }
|
168
|
+
|
169
|
+
@validInstanceMethods = [@validContractInstanceMethods,
|
170
|
+
@validLoggerInstanceMethods,
|
171
|
+
@validExceptionInstanceMethods,
|
172
|
+
].flatten
|
173
|
+
|
174
|
+
@validContractTests = {
|
175
|
+
hash: {},
|
176
|
+
array: [],
|
177
|
+
string: 'Hi There',
|
178
|
+
symbol: :'A symbol',
|
179
|
+
fixnum: 1,
|
180
|
+
float: 2.3,
|
181
|
+
|
182
|
+
class: Class.new,
|
183
|
+
module: Module.new,
|
184
|
+
|
185
|
+
file: __FILE__,
|
186
|
+
directory: File.dirname(__FILE__),
|
187
|
+
|
188
|
+
#empty: [],
|
189
|
+
#not_empty: %w(this is not empty),
|
190
|
+
#not_nil: 'definitely is not nil',
|
191
|
+
###proc: ->(p) {true}, # can't test proc for some reason - confuses Minitest?
|
192
|
+
}
|
193
|
+
|
194
|
+
@invalidContractTests = {
|
195
|
+
hash: {},
|
196
|
+
array: [],
|
197
|
+
string: 'Hi There',
|
198
|
+
symbol: :'A symbol',
|
199
|
+
fixnum: 1,
|
200
|
+
float: 2.3,
|
201
|
+
|
202
|
+
#class: Class.new,
|
203
|
+
module: Module.new,
|
204
|
+
|
205
|
+
#file: __FILE__,
|
206
|
+
#directory: File.dirname(__FILE__),
|
207
|
+
|
208
|
+
|
209
|
+
###proc: ->(p) {true}, # can't test proc for some reason - confuses Minitest?
|
210
|
+
}
|
211
|
+
|
212
|
+
@validContractSpecialTests = {
|
213
|
+
empty: [],
|
214
|
+
not_empty: %w(this is not empty),
|
215
|
+
not_nil: 'definitely is not nil',
|
216
|
+
}
|