Class: TestBench::Assert

Inherits:
Object
  • Object
show all
Defined in:
lib/test_bench/assert.rb,
lib/test_bench/assert/proc.rb,
lib/test_bench/assert/failed.rb,
lib/test_bench/assert/refute.rb

Direct Known Subclasses

Refute

Defined Under Namespace

Modules: Proc Classes: Failed, Refute

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(subject, mod, block) ⇒ Assert

Returns a new instance of Assert.



7
8
9
10
11
# File 'lib/test_bench/assert.rb', line 7

def initialize subject, mod, block
  @subject = subject
  @mod = mod
  @block = block
end

Instance Attribute Details

#blockObject (readonly)

Returns the value of attribute block.



3
4
5
# File 'lib/test_bench/assert.rb', line 3

def block
  @block
end

#modObject (readonly)

Returns the value of attribute mod.



4
5
6
# File 'lib/test_bench/assert.rb', line 4

def mod
  @mod
end

#subjectObject (readonly)

Returns the value of attribute subject.



5
6
7
# File 'lib/test_bench/assert.rb', line 5

def subject
  @subject
end

Class Method Details

.call(subject, mod = nil, &block) ⇒ Object



13
14
15
16
17
18
# File 'lib/test_bench/assert.rb', line 13

def self.call subject, mod=nil, &block
  block ||= identity_block

  instance = new subject, mod, block
  instance.call
end

.identity_blockObject



54
55
56
# File 'lib/test_bench/assert.rb', line 54

def self.identity_block
  @identity_block ||= -> subject do subject end
end

Instance Method Details

#assertions_moduleObject



20
21
22
23
24
25
26
# File 'lib/test_bench/assert.rb', line 20

def assertions_module
  return mod if mod

  if subject_namespace.const_defined? :Assertions
    subject_namespace.const_get :Assertions
  end
end

#callObject



28
29
30
31
32
33
34
# File 'lib/test_bench/assert.rb', line 28

def call
  extend_subject assertions_module if assertions_module

  result = subject.instance_exec subject, &block

  interpret_result result
end

#extend_subject(mod) ⇒ Object



36
37
38
39
40
# File 'lib/test_bench/assert.rb', line 36

def extend_subject mod
  raise TypeError if subject.frozen?
  subject.extend mod
rescue TypeError
end

#interpret_result(result) ⇒ Object



42
43
44
# File 'lib/test_bench/assert.rb', line 42

def interpret_result result
  if result then true else false end
end

#subject_namespaceObject



46
47
48
49
50
51
52
# File 'lib/test_bench/assert.rb', line 46

def subject_namespace
  if subject.is_a? Module
    subject
  else
    subject.class
  end
end