Class: Matest::ExampleGroup

Inherits:
Object
  • Object
show all
Defined in:
lib/matest.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(scope_block) ⇒ ExampleGroup

Returns a new instance of ExampleGroup.



132
133
134
135
136
# File 'lib/matest.rb', line 132

def initialize(scope_block)
  @scope_block = scope_block
  @specs       = []
  @statuses    = []
end

Instance Attribute Details

#scope_blockObject (readonly)

Returns the value of attribute scope_block.



128
129
130
# File 'lib/matest.rb', line 128

def scope_block
  @scope_block
end

#specsObject (readonly)

Returns the value of attribute specs.



129
130
131
# File 'lib/matest.rb', line 129

def specs
  @specs
end

#statusesObject (readonly)

Returns the value of attribute statuses.



130
131
132
# File 'lib/matest.rb', line 130

def statuses
  @statuses
end

Instance Method Details

#execute!Object



138
139
140
141
142
143
144
145
# File 'lib/matest.rb', line 138

def execute!
  instance_eval(&scope_block)
  specs.shuffle.each do |spec, desc|
    res = run_spec(spec, desc)
    print res
  end

end

#run_spec(spec, description) ⇒ Object



161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
# File 'lib/matest.rb', line 161

def run_spec(spec, description)
  status = begin
             result = spec.call
             status_class = case result
                            when true
                              Matest::SpecPassed
                            when false
                              Matest::SpecFailed
                            when Matest::SkipMe
                              Matest::SpecSkipped
                            else
                              Matest::NotANaturalAssertion
                            end
             status_class.new(spec, result, description)
           rescue Exception => e
             Matest::ExceptionRaised.new(spec, e, description)
           end
  @statuses << status
  status
end

#spec(description = nil, &block) ⇒ Object



147
148
149
150
# File 'lib/matest.rb', line 147

def spec(description=nil, &block)
  current_example = block_given? ? block : -> { Matest::SkipMe.new }
  specs << [current_example, description]
end

#xspec(description = nil, &block) ⇒ Object



152
153
154
# File 'lib/matest.rb', line 152

def xspec(description=nil, &block)
  spec(description)
end