Class: Bacon::Context

Inherits:
Object show all
Includes:
Helpers
Defined in:
lib/mac_bacon.rb,
lib/mac_bacon/helpers.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Helpers

converted_xibs, ensure_nib, #load_nib

Constructor Details

#initialize(name, before = nil, after = nil, &block) ⇒ Context

Returns a new instance of Context.



253
254
255
256
257
258
259
260
261
262
263
# File 'lib/mac_bacon.rb', line 253

def initialize(name, before = nil, after = nil, &block)
  @name = name
  @before, @after = (before ? before.dup : []), (after ? after.dup : [])
  @block = block
  @specifications = []
  @current_specification_index = 0

  Bacon.add_context(self)

  instance_eval(&block)
end

Instance Attribute Details

#blockObject (readonly)

Returns the value of attribute block.



251
252
253
# File 'lib/mac_bacon.rb', line 251

def block
  @block
end

#nameObject (readonly)

Returns the value of attribute name.



251
252
253
# File 'lib/mac_bacon.rb', line 251

def name
  @name
end

Instance Method Details

#after(&block) ⇒ Object



289
# File 'lib/mac_bacon.rb', line 289

def after(&block);  @after << block; end

#before(&block) ⇒ Object



288
# File 'lib/mac_bacon.rb', line 288

def before(&block); @before << block; end

#behaves_like(*names) ⇒ Object



291
292
293
# File 'lib/mac_bacon.rb', line 291

def behaves_like(*names)
  names.each { |name| instance_eval(&Shared[name]) }
end

#change?(*args, &block) ⇒ Boolean

Returns:

  • (Boolean)


324
# File 'lib/mac_bacon.rb', line 324

def change?(*args, &block); block.change?(*args); end

#current_specificationObject



275
276
277
# File 'lib/mac_bacon.rb', line 275

def current_specification
  @specifications[@current_specification_index]
end

#describe(*args, &block) ⇒ Object



310
311
312
313
314
315
316
# File 'lib/mac_bacon.rb', line 310

def describe(*args, &block)
  context = Bacon::Context.new(args.join(' '), @before, @after, &block)
  (parent_context = self).methods(false).each {|e|
    class<<context; self end.send(:define_method, e) {|*args| parent_context.send(e, *args)}
  }
  context
end

#it(description, &block) ⇒ Object



295
296
297
298
299
300
# File 'lib/mac_bacon.rb', line 295

def it(description, &block)
  return  unless description =~ RestrictName
  block ||= lambda { should.flunk "not implemented" }
  Counter[:specifications] += 1
  @specifications << Specification.new(self, description, block, @before, @after)
end

#raise?(*args, &block) ⇒ Boolean

Returns:

  • (Boolean)


322
# File 'lib/mac_bacon.rb', line 322

def raise?(*args, &block); block.raise?(*args); end

#runObject



265
266
267
268
269
270
271
272
273
# File 'lib/mac_bacon.rb', line 265

def run
  # TODO
  #return  unless name =~ RestrictContext
  if spec = current_specification
    spec.performSelector("run", withObject:nil, afterDelay:0)
  else
    Bacon.context_did_finish(self)
  end
end

#should(*args, &block) ⇒ Object



302
303
304
305
306
307
308
# File 'lib/mac_bacon.rb', line 302

def should(*args, &block)
  if Counter[:depth]==0
    it('should '+args.first,&block)
  else
    super(*args,&block)
  end
end

#specification_did_finish(spec) ⇒ Object



279
280
281
282
283
284
285
286
# File 'lib/mac_bacon.rb', line 279

def specification_did_finish(spec)
  if (@current_specification_index + 1) < @specifications.size
    @current_specification_index += 1
    run
  else
    Bacon.context_did_finish(self)
  end
end

#throw?(*args, &block) ⇒ Boolean

Returns:

  • (Boolean)


323
# File 'lib/mac_bacon.rb', line 323

def throw?(*args, &block); block.throw?(*args); end

#wait(seconds, &block) ⇒ Object



318
319
320
# File 'lib/mac_bacon.rb', line 318

def wait(seconds, &block)
  current_specification.postpone_block(seconds, &block)
end