Class: So::Received
Instance Method Summary
collapse
Methods inherited from Expr
#!, #<, #==, #>, #[], #assert_time, #assert_value, #to_so_expr
Constructor Details
#initialize(method, time = nil, args = nil) ⇒ Received
Returns a new instance of Received.
337
338
339
340
341
342
343
|
# File 'lib/spec_object.rb', line 337
def initialize(method, time=nil, args=nil)
raise "expected method name" unless method.is_a?(Symbol)
@method = method
@time = time
@args = args
end
|
Instance Method Details
345
346
347
348
349
350
|
# File 'lib/spec_object.rb', line 345
def at(time)
time = time.to_so_expr
time.assert_time
r = Received.new(@method, time, @args)
r
end
|
#evaluate(calls) ⇒ Object
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
|
# File 'lib/spec_object.rb', line 383
def evaluate(calls)
t = @time.evaluate(calls)
if !(t.kind_of?(Time))
return self
end
method, args, output = calls[t.n]
if method != @method
return false.to_so_expr
end
if args.size != @args.size
return false.to_so_expr
end
exprs =
args.zip(@args).map do |(value, expr)|
value.to_so_expr == expr
end
And.and_(*exprs)
end
|
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
|
# File 'lib/spec_object.rb', line 360
def pp(n)
s =
if !(@args.nil?)
@args.map do |arg| arg.pp(n+4) end.join("\n")
else
"#{' '*(n+2)}"
end
t_pp =
if !(@time.nil?)
@time.pp(n+2)
else
"#{' '*(n+2)}nil"
end
"#{' '*n}(received #{@method.inspect}\n#{t_pp}\n#{' '*(n+2)}(\n#{s}))"
end
|
#substitute(v, e) ⇒ Object
376
377
378
379
380
381
|
# File 'lib/spec_object.rb', line 376
def substitute(v, e)
time = @time.substitute(v, e)
args = @args.map do |arg| arg.substitute(v, e) end
Received.new(@method, time, args)
end
|
#with(*args) ⇒ Object
352
353
354
355
356
357
358
|
# File 'lib/spec_object.rb', line 352
def with(*args)
args.map! do |arg|
arg.assert_value
arg.to_so_expr
end
Received.new(@method, @time, args)
end
|