tla-sbuilder 0.2.2 → 0.3.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (127) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +150 -116
  3. data/VERSION +1 -1
  4. data/lib/cli/cli-customer.rb +23 -3
  5. data/lib/cli/cli-pet.rb +66 -12
  6. data/lib/cli/cli-text.rb +127 -8
  7. data/lib/cli/cli.rb +49 -6
  8. data/lib/sbuilder.rb +26 -3
  9. data/lib/sbuilder/constants.rb +165 -6
  10. data/lib/sbuilder/controller.rb +943 -169
  11. data/lib/sbuilder/controller_utils.rb +122 -0
  12. data/lib/sbuilder/default-sbuilder.yaml +38 -44
  13. data/lib/sbuilder/domain.rb +160 -36
  14. data/lib/sbuilder/domain_cardinality.rb +1 -1
  15. data/lib/sbuilder/domain_range.rb +102 -0
  16. data/lib/sbuilder/domain_type.rb +150 -0
  17. data/lib/sbuilder/domain_value.rb +21 -13
  18. data/lib/sbuilder/exception.rb +16 -0
  19. data/lib/sbuilder/extension_loader.rb +67 -686
  20. data/lib/sbuilder/extension_loader_deprecated_step_extensions.rb +711 -0
  21. data/lib/sbuilder/extension_loader_step_generator.rb +876 -0
  22. data/lib/sbuilder/facade/{api_loader.rb → api_loader_facade.rb} +176 -45
  23. data/lib/sbuilder/facade/api_loader_plugin.rb +6 -32
  24. data/lib/sbuilder/facade/api_loader_plugin_mixer.rb +35 -0
  25. data/lib/sbuilder/facade/facade_constants.rb +23 -0
  26. data/lib/sbuilder/facade/loader_plugin_root.rb +56 -0
  27. data/lib/sbuilder/facade/param_set_root.rb +55 -0
  28. data/lib/sbuilder/facade/snippet_loader_facade.rb +600 -0
  29. data/lib/sbuilder/facade/snippet_loader_plugin.rb +76 -0
  30. data/lib/sbuilder/facade/snippet_loader_plugin_mixer.rb +56 -0
  31. data/lib/sbuilder/factory.rb +224 -45
  32. data/lib/sbuilder/model.rb +125 -45
  33. data/lib/sbuilder/mustache/template.rb +107 -58
  34. data/lib/sbuilder/mustache/template_reader.rb +56 -46
  35. data/lib/sbuilder/mustache/template_reader_context.rb +64 -234
  36. data/lib/sbuilder/mustache/template_resolve.rb +103 -0
  37. data/lib/sbuilder/mustache/template_root.rb +71 -0
  38. data/lib/sbuilder/param_set.rb +30 -15
  39. data/lib/sbuilder/param_set_db.rb +1 -1
  40. data/lib/sbuilder/param_set_def.rb +6 -1
  41. data/lib/sbuilder/param_set_def_func.rb +39 -0
  42. data/lib/sbuilder/param_set_if.rb +45 -10
  43. data/lib/sbuilder/param_set_loader_swagger.rb +56 -26
  44. data/lib/sbuilder/param_set_step.rb +1 -1
  45. data/lib/sbuilder/param_sets.rb +2 -1
  46. data/lib/sbuilder/parameter.rb +9 -3
  47. data/lib/sbuilder/parameter_container.rb +1 -1
  48. data/lib/sbuilder/parameter_dom.rb +17 -5
  49. data/lib/sbuilder/parameter_ref.rb +39 -10
  50. data/lib/sbuilder/parser/parser_facade.rb +310 -0
  51. data/lib/sbuilder/resolver.rb +11 -6
  52. data/lib/sbuilder/resolver_loader.rb +1 -1
  53. data/lib/sbuilder/resolver_loader_yaml.rb +1 -1
  54. data/lib/sbuilder/resolver_rule.rb +1 -1
  55. data/lib/sbuilder/resolver_rule_match.rb +10 -4
  56. data/lib/sbuilder/resolver_rule_ref.rb +1 -1
  57. data/lib/sbuilder/setup_loader.rb +49 -0
  58. data/lib/sbuilder/setup_loader_env.rb +478 -0
  59. data/lib/sbuilder/setup_loader_pref.rb +56 -0
  60. data/lib/sbuilder/snippet_loader_simple.rb +125 -0
  61. data/lib/sbuilder/spec/api_loader.rb +34 -0
  62. data/lib/sbuilder/spec/api_loader_facade.rb +169 -32
  63. data/lib/sbuilder/spec/loader_plugin.rb +98 -0
  64. data/lib/sbuilder/spec/snippet_loader.rb +228 -0
  65. data/lib/sbuilder/symbol_table.rb +279 -0
  66. data/lib/utils/{cache_lines.rb → fileio.rb} +8 -1
  67. data/lib/utils/logger.rb +2 -1
  68. data/lib/utils/powerset.rb +13 -0
  69. data/lib/utils/validate.rb +38 -0
  70. data/mustache/cfg/const_def.mustache +2 -0
  71. data/mustache/cfg/macro_run.mustache +1 -4
  72. data/mustache/data-model-header.mustache +1 -0
  73. data/mustache/definition_types.mustache +34 -4
  74. data/mustache/domains.mustache +1 -1
  75. data/mustache/domains_assign.mustache +1 -1
  76. data/mustache/infrastructure-service-init.mustache +1 -1
  77. data/mustache/interface_processes.mustache +16 -10
  78. data/mustache/interface_types.mustache +37 -11
  79. data/mustache/operator-infrastructure-service.mustache +1 -1
  80. data/mustache/resources/schedule_operator_new_step.tla +8 -0
  81. data/mustache/resources/schedule_process_macro.tla +37 -0
  82. data/mustache/resources/schedule_process_procedure.tla +22 -0
  83. data/mustache/resources/schedule_throw.tla +16 -0
  84. data/mustache/setup/domains_run.mustache +8 -2
  85. data/mustache/setup/operator_run.mustache +0 -4
  86. data/mustache/setup/steps_run.mustache +4 -3
  87. data/mustache/setup/steps_run_parameterBind.mustache +14 -6
  88. data/mustache/setup/steps_run_parameterExact.mustache +7 -3
  89. data/mustache/state_type_invariant-infrastructure-service.mustache +9 -4
  90. data/mustache/tla/const_def.mustache +1 -1
  91. data/mustache/tla/macro_run.mustache +7 -1
  92. data/mustache/tla/module_header.mustache +1 -1
  93. data/mustache/tla/operator_run.mustache +8 -5
  94. data/mustache/tla/plc_define_run.mustache +45 -36
  95. data/mustache/tla/plc_run_state.mustache +12 -5
  96. data/src-extend/extend/extend_assumptions.mustache +3 -0
  97. data/src-extend/extend/extend_const.mustache +3 -0
  98. data/src-extend/extend/extend_implementation.mustache +3 -0
  99. data/src-extend/extend/extend_invariant.mustache +3 -0
  100. data/src-extend/extend/extend_macros.mustache +3 -0
  101. data/src-extend/extend/extend_operations.mustache +3 -0
  102. data/src-extend/extend/extend_state.mustache +3 -0
  103. data/src/pet/extend/extend_assumptions.mustache +4 -0
  104. data/src/pet/extend/extend_implementation.mustache +3 -0
  105. data/src/pet/extend/extend_invariant.mustache +3 -0
  106. data/src/pet/extend/extend_macros.mustache +3 -0
  107. data/src/pet/extend/extend_operations.mustache +4 -0
  108. data/src/pet/extend/extend_state.mustache +3 -0
  109. data/src/pet/interface +5 -5
  110. data/src/pet/interface_delete_pet.tla +1 -1
  111. data/src/pet/interface_get_pet.tla +1 -1
  112. data/src/pet/interface_post_pet.tla +4 -2
  113. data/src/pet/interface_post_tag.tla +1 -1
  114. data/src/pet/interface_put_tag.tla +1 -1
  115. data/tla-sbuilder.gemspec +3 -3
  116. metadata +44 -19
  117. data/mustache/name_definition_type.mustache +0 -5
  118. data/mustache/name_domain.mustache +0 -5
  119. data/mustache/name_domain_value.mustache +0 -5
  120. data/mustache/name_domain_value_prefix.mustache +0 -5
  121. data/mustache/name_interface_response_type.mustache +0 -6
  122. data/mustache/name_interface_type.mustache +0 -6
  123. data/mustache/name_parameter_type.mustache +0 -6
  124. data/mustache/name_process.mustache +0 -6
  125. data/mustache/state_type_invariant.mustache +0 -17
  126. data/mustache/state_variables.mustache +0 -20
  127. data/src-extend/extend/extend_invariant_cfg.mustache +0 -7
@@ -0,0 +1,56 @@
1
+ module Sbuilder
2
+
3
+
4
+ # Abstaract base class
5
+ class SetupLoaderPref < SetupLoader
6
+
7
+ # ------------------------------------------------------------------
8
+ # Validation
9
+
10
+
11
+ # ------------------------------------------------------------------
12
+ # mix logger
13
+
14
+ PROGNAME = nil # progname for logger default class name
15
+ include Sbuilder::Utils::MyLogger # mix logger
16
+
17
+
18
+ # ------------------------------------------------------------------
19
+ # @!group Construct & configure
20
+
21
+
22
+ def initialize( options = {} )
23
+ @logger = getLogger( nil, options )
24
+ @logger.info( "#{__method__} initialized options=#{options}" )
25
+
26
+ super( options )
27
+ end
28
+
29
+
30
+ # @!endgroup
31
+
32
+ # ------------------------------------------------------------------
33
+ # @!group Abstract methods from parent class
34
+
35
+ ##
36
+ # Pass 'extensionDef' for 'controller' use to #updatetSetup of
37
+ # setup 'setupName'
38
+ #
39
+ # @param [Hash:Array] extensionDef configuration defining loading
40
+ def doLoad( extensionDefs )
41
+ Utils::Validate.validateProperties( extensionDefs, Constants::VALIDATION[:SetupLoaderPref][:required], Constants::VALIDATION[:SetupLoaderPref][:allowed] )
42
+ controller.updateSetup( setupName, extensionDefs )
43
+ end
44
+
45
+ # @!endgroup
46
+
47
+ # ------------------------------------------------------------------
48
+ # @!group Implement load
49
+
50
+
51
+ # @!endgroup
52
+
53
+
54
+ end # class
55
+
56
+ end # module
@@ -0,0 +1,125 @@
1
+ module Sbuilder
2
+
3
+ class SnippetLoaderSimple < Sbuilder::SnippetLoaderPlugin
4
+
5
+ # PROPS_REQUIRED = %w( metatype appName )
6
+ # PROPS_ALLOWED = %w( name file )
7
+
8
+ # REQUIRED_CONFIG_PROPS = %w( src_dir )
9
+ # ALLOWED_CONFIG_PROPS = %w() # = required
10
+
11
+ extend Forwardable # for easy delegation
12
+
13
+ extend SingleForwardable # for of class methods
14
+
15
+ def_delegator Sbuilder::SnippetLoaderPlugin, :validateProperties
16
+
17
+ @@src_dir = "./src" # default directory where files are read
18
+
19
+ # ------------------------------------------------------------------
20
+ # @!group Constructor and configuration
21
+
22
+ def initialize( options = {} )
23
+ super( options )
24
+ end
25
+
26
+ # Class method to configure class 'SnippetLoaderPlugin'
27
+ #
28
+ # @param configuration [Hash] properties to configure
29
+ #
30
+ def self.configure( configuration )
31
+ return if configuration.nil?
32
+ Sbuilder::Utils::Validate.validateProperties(
33
+ configuration,
34
+ Constants::VALIDATION[:snippet_loader_plugin][:class_config_required],
35
+ Constants::VALIDATION[:snippet_loader_plugin][:class_config_allowed] )
36
+ @@src_dir = configuration['src_dir']
37
+ end
38
+
39
+
40
+ # base class should implement 'doConfigure'
41
+ def doConfigure( configuration )
42
+
43
+ if configuration.nil?
44
+ logger.warn "#{__method__}: no cofiguration for #{self.class}"
45
+ return
46
+ end
47
+ Sbuilder::Utils::Validate.validateProperties(
48
+ configuration,
49
+ Constants::VALIDATION[:snippet_loader_plugin][:object_config_required],
50
+ Constants::VALIDATION[:snippet_loader_plugin][:object_config_allowed] )
51
+
52
+ # hash with metatypes as keys
53
+ configuration['metatypes'] && configuration['metatypes'].each do |metatype,desc|
54
+ registerMetatype( metatype, desc )
55
+ end
56
+
57
+ end
58
+
59
+
60
+ # @!endgroup
61
+
62
+ # ------------------------------------------------------------------
63
+ # @!group Register snippets to sbuilder
64
+
65
+ # Override abstract method in parent class for the implementation.
66
+ #
67
+ # @param [Hash:Array] snippetDefitions given in sbuilder.yaml
68
+ #
69
+ def doRegisterSnippets( snippetDefitions )
70
+ logger.info "#{__method__}, loading snippetDefitions=#{snippetDefitions}"
71
+
72
+ snippetDefitions && snippetDefitions.each do |snippetDefition|
73
+
74
+ # gets actually delegated
75
+ # Sbuilder::Utils::Validate.validateProperties( snippetDefition, PROPS_REQUIRED, PROPS_ALLOWED )
76
+ Utils::Validate.validateProperties( snippetDefition, Constants::VALIDATION[:snippet_loader_plugin][:required], Constants::VALIDATION[:snippet_loader_plugin][:allowed] )
77
+ # 0 allowed, max one allowed from url/file
78
+ Utils::Validate.oneOf( snippetDefition, Constants::VALIDATION[:snippet_loader_plugin][:one_of_file_or_url], 0, 1 )
79
+
80
+ # read content of snippetDefition['file'] into a [String}
81
+ snippetBody = readFile( src_path( snippetDefition ) ) if snippetDefition['file'] || snippetDefition['url']
82
+
83
+ # pass 'snippetBody' together with metatypes to facade
84
+ snippetFacade.handOver( snippetDefition['metatype'], snippetDefition['appName'], snippetBody, snippetDefition['name'], )
85
+
86
+ end
87
+ end
88
+
89
+ # @!endgroup
90
+
91
+ # ------------------------------------------------------------------
92
+ # @!group Simple plugin implementation
93
+
94
+ # Read file pointed by 'location'
95
+ #
96
+ # @param [String] location to read
97
+ #
98
+ # @return [String] lines in file in 'location'
99
+ def readFile( location )
100
+ @logger.info "#{__method__}: location=#{location}"
101
+ line = Sbuilder::Utils::NetIo.read_lines( location )
102
+ end
103
+
104
+ # @param [Hash] snippetDefition configuration for location
105
+ # @option snippetDefition [String] url read from url (=e.g. path)
106
+ # @option snippetDefition [String] file read from file in src -repository
107
+ #
108
+ # @return [String] path to file to read 'url' or +src_dir+ + +file+
109
+ def src_path( snippetDefition )
110
+ return snippetDefition['url'] if snippetDefition['url']
111
+ return File.join( src_dir, snippetDefition['file'])
112
+ end
113
+
114
+ # @return [String] path to directory, where src files are
115
+ def src_dir
116
+ @@src_dir || "."
117
+ end
118
+
119
+
120
+ # @!endgroup
121
+
122
+
123
+ end
124
+
125
+ end
@@ -0,0 +1,34 @@
1
+ require 'sbuilder'
2
+
3
+
4
+ RSpec.shared_examples_for "api_loader_plugin: signature" do
5
+
6
+ describe "Interface of API Loader Plugin" do
7
+
8
+ it "#load" do
9
+ expect( loader ).to respond_to( :load )
10
+ end
11
+
12
+ it "#load" do
13
+ expect( loader.class ).to respond_to( :configure )
14
+ end
15
+
16
+
17
+ describe "parent class/mixer" do
18
+
19
+ it "#setFacade" do
20
+ expect( loader ).to respond_to( :setFacade )
21
+ end
22
+
23
+ it "#facade" do
24
+ expect( loader ).to respond_to( :facade )
25
+ end
26
+
27
+ end
28
+
29
+
30
+
31
+ end
32
+
33
+
34
+ end
@@ -8,40 +8,176 @@ require 'sbuilder'
8
8
  # implements methods :load :setFacade
9
9
  #
10
10
 
11
- RSpec.shared_examples_for "api_loader_facade: signatures" do
11
+ RSpec.shared_examples_for "api_loader_facade: signature" do
12
12
 
13
- let( :factory ) { Sbuilder::Factory.getFactory }
14
- let( :facade ) { Sbuilder::ApiLoader.new( factory ) }
13
+ describe "interface" do
15
14
 
16
- before :each do
17
- loader.setFacade( facade )
18
- end
19
- # ------------------------------------------------------------------
20
- # Interfaces
15
+ describe "configure before use" do
16
+
17
+ it "#setController" do
18
+ expect( facade ).to respond_to( :setController )
19
+ end
20
+
21
+ it "#setFactory" do
22
+ expect( facade ).to respond_to( :setFactory )
23
+ end
24
+
25
+ it "#configureInfrastructureService" do
26
+ expect( facade ).to respond_to( :configureInfrastructureService )
27
+ end
28
+
29
+ it "#infrastructureServices" do
30
+ expect( facade ).to respond_to( :infrastructureServices )
31
+ end
32
+
33
+ it "#configureInterfaceService" do
34
+ expect( facade ).to respond_to( :configureInterfaceService )
35
+ end
36
+
37
+ it "#interfaceService" do
38
+ expect( facade ).to respond_to( :interfaceServices )
39
+ end
40
+
41
+
42
+ it "#configureNamespace" do
43
+ expect( facade ).to respond_to( :configureNamespace )
44
+ end
21
45
 
22
- describe "interfaces" do
46
+ it "#setInterfaceCacheFilePath" do
47
+ expect( facade ).to respond_to( :setInterfaceCacheFilePath )
48
+ end
49
+
50
+
51
+ end
52
+
53
+ describe "data read & cache" do
54
+
55
+ it "#read_cached" do
56
+ expect( facade ).to respond_to( :read_cached )
57
+ end
58
+
59
+ describe "cache" do
60
+
61
+ it "#getCacheDir" do
62
+ expect( facade ).to respond_to( :getCacheDir )
63
+ end
64
+
65
+ it "#doCache?" do
66
+ expect( facade ).to respond_to( :doCache? )
67
+ end
68
+
69
+ it "#get_cached" do
70
+ expect( facade ).to respond_to( :get_cached )
71
+ end
72
+ it "#cache_line" do
73
+ expect( facade ).to respond_to( :cache_line )
74
+ end
75
+
76
+ end
77
+
78
+ end
23
79
 
24
- describe "loader" do
80
+ describe "access framework context" do
25
81
 
26
- it ".configure static method " do
27
- expect( loader.class ).to respond_to( :configure )
82
+ it "#baseMetatypes" do
83
+ expect( facade ).to respond_to( :baseMetatypes )
28
84
  end
29
85
 
30
86
 
31
- it "#load" do
32
- expect( loader ).to respond_to( :load )
87
+ end
88
+
89
+
90
+ describe "domains" do
91
+
92
+ it "#defineDomain" do
93
+ expect( facade ).to respond_to( :defineDomain )
33
94
  end
34
95
 
35
- it "#setFacade" do
36
- expect( loader ).to respond_to( :setFacade )
96
+ end
97
+
98
+
99
+ describe "create model objects" do
100
+
101
+ it "#newDefinition" do
102
+ expect( facade ).to respond_to( :newDefinition )
103
+ end
104
+ it "#newFunctionDefinition" do
105
+ expect( facade ).to respond_to( :newFunctionDefinition )
106
+ end
107
+
108
+ it "#newInterface" do
109
+ expect( facade ).to respond_to( :newInterface )
110
+ end
111
+
112
+ it "#newParameter" do
113
+ expect( facade ).to respond_to( :newParameter )
114
+ end
115
+
116
+ it "#newParameterReference" do
117
+ expect( facade ).to respond_to( :newParameterReference )
118
+ end
119
+
120
+ it "#addParameter" do
121
+ expect( facade ).to respond_to( :addParameter )
122
+ end
123
+
124
+ it "#addResponseParameter" do
125
+ expect( facade ).to respond_to( :addResponseParameter )
37
126
  end
38
127
 
39
128
  end
40
129
 
130
+ describe "build model" do
41
131
 
132
+ it "#modelDefinition" do
133
+ expect( facade ).to respond_to( :modelDefinition )
134
+ end
135
+
136
+ it "#modelInterface" do
137
+ expect( facade ).to respond_to( :modelInterface )
138
+ end
139
+
140
+
141
+ end
142
+
143
+
42
144
 
43
145
  end
44
146
 
147
+
148
+ # let( :factory ) { Sbuilder::Factory.getFactory }
149
+ # let( :facade ) { Sbuilder::ApiLoaderFacade.new( factory ) }
150
+
151
+ # before :each do
152
+ # loader.setFacade( facade )
153
+ # end
154
+
155
+ # # ------------------------------------------------------------------
156
+ # # Interfaces
157
+
158
+ # describe "interfaces" do
159
+
160
+ # describe "loader" do
161
+
162
+ # it ".configure static method " do
163
+ # expect( loader.class ).to respond_to( :configure )
164
+ # end
165
+
166
+
167
+ # it "#load" do
168
+ # expect( loader ).to respond_to( :load )
169
+ # end
170
+
171
+ # it "#setFacade" do
172
+ # expect( loader ).to respond_to( :setFacade )
173
+ # end
174
+
175
+ # end
176
+
177
+
178
+
179
+ # end
180
+
45
181
  end
46
182
 
47
183
 
@@ -65,7 +201,7 @@ end
65
201
  RSpec.shared_examples_for "api_loader_facade: uses ':read_cached' to access api definition" do
66
202
 
67
203
  let( :factory ) { Sbuilder::Factory.getFactory }
68
- let( :facade ) { Sbuilder::ApiLoader.new( factory ) }
204
+ let( :facade ) { Sbuilder::ApiLoaderFacade.new( factory ) }
69
205
 
70
206
  before :each do
71
207
  loader.setFacade( facade )
@@ -117,7 +253,7 @@ RSpec.shared_examples_for "api_loader_facade: contract to load one definition" d
117
253
 
118
254
 
119
255
  let( :factory ) { Sbuilder::Factory.getFactory }
120
- let( :facade ) { Sbuilder::ApiLoader.new( factory ) }
256
+ let( :facade ) { Sbuilder::ApiLoaderFacade.new( factory ) }
121
257
 
122
258
  before :each do
123
259
  loader.setFacade( facade )
@@ -129,6 +265,7 @@ RSpec.shared_examples_for "api_loader_facade: contract to load one definition" d
129
265
  parameter = instance_double( Sbuilder::Parameter )
130
266
  expect( facade ).to receive( :newDefinition ).ordered.and_return( definition )
131
267
  expect( definition ).to receive( :addParameter ).with( parameter )
268
+ allow( definition ).to receive( :isArray ).and_return( false )
132
269
  expect( facade ).to receive( :newParameter ).ordered.and_return( parameter )
133
270
  expect( facade ).to receive( :modelDefinition ).ordered
134
271
  load
@@ -162,7 +299,7 @@ RSpec.shared_examples_for "api_loader_facade: contract to load one interface" do
162
299
 
163
300
 
164
301
  let( :factory ) { Sbuilder::Factory.getFactory }
165
- let( :facade ) { Sbuilder::ApiLoader.new( factory ) }
302
+ let( :facade ) { Sbuilder::ApiLoaderFacade.new( factory ) }
166
303
 
167
304
  before :each do
168
305
  loader.setFacade( facade )
@@ -225,23 +362,23 @@ end
225
362
  #
226
363
  #
227
364
 
228
- RSpec.shared_examples_for "api_loader_facade: loader calls #createLogger on #setFacade" do
365
+ # RSpec.shared_examples_for "api_loader_facade: loader calls #createLogger on #setFacade" do
229
366
 
230
- let( :factory ) { Sbuilder::Factory.getFactory }
231
- let( :facade ) { Sbuilder::ApiLoader.new( factory ) }
367
+ # let( :factory ) { Sbuilder::Factory.getFactory }
368
+ # let( :facade ) { Sbuilder::ApiLoaderFacade.new( factory ) }
232
369
 
233
370
 
234
- it "#createLogger" do
235
- expect( facade ).to receive( :createLogger ).and_call_original
236
- loader.setFacade( facade )
237
- end
371
+ # it "#createLogger" do
372
+ # expect( facade ).to receive( :createLogger ).and_call_original
373
+ # loader.setFacade( facade )
374
+ # end
238
375
 
239
- describe "facade#createLogger" do
376
+ # describe "facade#createLogger" do
240
377
 
241
- it "#returns Logger" do
242
- expect( facade.createLogger( "name" )).to be_a( Logger )
243
- end
244
- end
378
+ # it "#returns Logger" do
379
+ # expect( facade.createLogger( "name" )).to be_a( Logger )
380
+ # end
381
+ # end
245
382
 
246
- end
383
+ # end
247
384