Class: Test::Spec::ShouldNot

Inherits:
Object
  • Object
show all
Includes:
Unit::Assertions
Defined in:
lib/test/spec.rb

Instance Method Summary collapse

Constructor Details

#initialize(object, message = nil) ⇒ ShouldNot

Returns a new instance of ShouldNot.



196
197
198
199
# File 'lib/test/spec.rb', line 196

def initialize(object, message=nil)
  @object = object
  @message = message
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name, *args) ⇒ Object



269
270
271
272
273
274
275
276
277
278
279
280
# File 'lib/test/spec.rb', line 269

def method_missing(name, *args)
  # This will make raise call Kernel.raise, and self.raise call _raise.
  return _raise(*args)  if name == :raise

  if @object.respond_to?("#{name}?")
    assert_block("#{name}? expected to be false. #{@message}") {
      not @object.__send__("#{name}?", *args)
    }
  else
    super
  end
end

Instance Method Details

#_raise(*args) ⇒ Object



233
234
235
# File 'lib/test/spec.rb', line 233

def _raise(*args)
  assert_nothing_raised(*(args+[@message]), &@object)
end

#be(*value) ⇒ Object



212
213
214
215
216
217
218
219
220
221
222
223
224
225
# File 'lib/test/spec.rb', line 212

def be(*value)
  case value.size
  when 0
    self
  when 1
    if CustomShould === value.first 
      pass value.first
    else
      assert_not_same value.first, @object, @message
    end
  else
    Kernel.raise ArgumentError, "should.be needs zero or one argument"
  end
end

#be_nilObject



245
246
247
248
# File 'lib/test/spec.rb', line 245

def be_nil
  warn "Test::Spec::ShouldNot#be_nil is deprecated and will be removed in future versions."
  self.nil
end

#equal(value) ⇒ Object Also known as: ==



207
208
209
# File 'lib/test/spec.rb', line 207

def equal(value)
  assert_not_equal value, @object, @message
end

#match(value) ⇒ Object Also known as: =~



227
228
229
230
# File 'lib/test/spec.rb', line 227

def match(value)
  # Icky Regexp check
  assert_no_match value, @object, @message
end

#nilObject



241
242
243
# File 'lib/test/spec.rb', line 241

def nil
  assert_not_nil @object, @message
end

#not(*args) ⇒ Object



250
251
252
253
254
255
256
257
258
259
# File 'lib/test/spec.rb', line 250

def not(*args)
  case args.size
  when 0
    Should.new(@object, @message)
  when 1
    Should.new(@object, @message).pass(args.first)
  else
    raise ArgumentError, "#not takes zero or one argument(s)."
  end
end

#pass(custom) ⇒ Object



261
262
263
264
265
266
267
# File 'lib/test/spec.rb', line 261

def pass(custom)
  _wrap_assertion {
    begin
      assert !custom.matches?(@object), @message || custom.failure_message
    end
  }
end

#satisfy(&block) ⇒ Object



201
202
203
204
205
# File 'lib/test/spec.rb', line 201

def satisfy(&block)
  assert_block(@message || "not.satisfy block succeded.") {
    not yield @object
  }
end

#throwObject



237
238
239
# File 'lib/test/spec.rb', line 237

def throw
  assert_nothing_thrown(@message, &@object)
end