Class Test::Spec::Should
In: lib/test/spec.rb
lib/test/spec/should-output.rb
Parent: Object

Methods

<   <=   ==   ===   =~   >   >=   _raise   a   add_assertion   an   be   blaming   close   equal   include   instance_of   kind_of   match   messaging   method_missing   new   nil   not   output   pass   respond_to   satisfy   throw  

Included Modules

Test::Unit::Assertions

Public Class methods

[Source]

    # File lib/test/spec.rb, line 44
44:     def initialize(object, message=nil)
45:       @object = object
46:       @message = message
47:     end

Public Instance methods

[Source]

     # File lib/test/spec.rb, line 159
159:     def <(value)
160:       assert_operator @object, :<, value, @message
161:     end

[Source]

     # File lib/test/spec.rb, line 163
163:     def <=(value)
164:       assert_operator @object, :<=, value, @message
165:     end
==(value)

Alias for equal

[Source]

     # File lib/test/spec.rb, line 167
167:     def ===(value)
168:       assert_operator @object, :===, value, @message
169:     end
=~(value)

Alias for match

[Source]

     # File lib/test/spec.rb, line 151
151:     def >(value)
152:       assert_operator @object, :>, value, @message
153:     end

[Source]

     # File lib/test/spec.rb, line 155
155:     def >=(value)
156:       assert_operator @object, :>=, value, @message
157:     end

[Source]

     # File lib/test/spec.rb, line 130
130:     def _raise(*args)
131:       args = [RuntimeError]  if args.empty?
132:       assert_raise(*(args + [@message]), &@object)
133:     end

[Source]

    # File lib/test/spec.rb, line 59
59:     def a
60:       self
61:     end

[Source]

    # File lib/test/spec.rb, line 50
50:     def add_assertion
51:       $TEST_SPEC_TESTCASE && $TEST_SPEC_TESTCASE.__send__(:add_assertion)
52:     end

[Source]

    # File lib/test/spec.rb, line 55
55:     def an
56:       self
57:     end

[Source]

     # File lib/test/spec.rb, line 96
 96:     def be(*value)
 97:       case value.size
 98:       when 0
 99:         self
100:       when 1
101:         if CustomShould === value.first 
102:           pass value.first
103:         else
104:           assert_same value.first, @object, @message
105:         end
106:       else
107:         raise ArgumentError, "should.be needs zero or one argument"
108:       end
109:     end
blaming(message)

Alias for messaging

[Source]

    # File lib/test/spec.rb, line 91
91:     def close(value, delta)
92:       assert_in_delta value, @object, delta, @message
93:     end

[Source]

    # File lib/test/spec.rb, line 86
86:     def equal(value)
87:       assert_equal value, @object, @message
88:     end

[Source]

     # File lib/test/spec.rb, line 145
145:     def include(value)
146:       msg = build_message(@message, "<?> expected to include ?, but it didn't.",
147:                           @object, value)
148:       assert_block(msg) { @object.include?(value) }
149:     end

[Source]

     # File lib/test/spec.rb, line 116
116:     def instance_of(klass)
117:       assert_instance_of klass, @object, @message
118:     end

[Source]

     # File lib/test/spec.rb, line 121
121:     def kind_of(klass)
122:       assert_kind_of klass, @object, @message
123:     end

[Source]

     # File lib/test/spec.rb, line 111
111:     def match(value)
112:       assert_match value, @object, @message
113:     end

[Source]

    # File lib/test/spec.rb, line 74
74:     def messaging(message)
75:       @message = message.to_s
76:       self
77:     end

[Source]

     # File lib/test/spec.rb, line 180
180:     def method_missing(name, *args)
181:       # This will make raise call Kernel.raise, and self.raise call _raise.
182:       return _raise(*args)  if name == :raise
183:       
184:       if @object.respond_to?("#{name}?")
185:         assert @object.__send__("#{name}?", *args),
186:           "#{name}? expected to be true. #{@message}"
187:       else
188:         super
189:       end
190:     end

[Source]

     # File lib/test/spec.rb, line 139
139:     def nil
140:       assert_nil @object, @message
141:     end

[Source]

    # File lib/test/spec.rb, line 63
63:     def not(*args)
64:       case args.size
65:       when 0
66:         ShouldNot.new(@object, @message)
67:       when 1
68:         ShouldNot.new(@object, @message).pass(args.first)
69:       else
70:         raise ArgumentError, "#not takes zero or one argument(s)."
71:       end
72:     end

Captures output from the IO given as the second argument (STDIN by default) and matches it against a String or Regexp given as the first argument.

[Source]

    # File lib/test/spec/should-output.rb, line 10
10:   def output(expected, to = STDOUT)
11:     # Store the old stream
12:     old_to = to.dup
13: 
14:     # Obtain a filehandle to replace (works with Readline)
15:     to.reopen File.open(File.join(Dir.tmpdir, "should_output_#{$$}"), "w+")
16:     
17:     # Execute
18:     @object.call
19: 
20:     # Restore
21:     out = to.dup
22:     to.reopen old_to
23: 
24:     # Grab the data
25:     out.rewind
26:     output = out.read
27: 
28:     # Match up
29:     case expected
30:       when Regexp
31:         output.should.match expected
32:       else
33:         output.should.equal expected
34:     end                               # case expected
35: 
36:   # Clean up
37:   ensure
38:     out.close
39: 
40:     # STDIO redirection will break else
41:     begin
42:       to.seek 0, IO::SEEK_END
43:     rescue Errno::ESPIPE
44:     rescue Errno::EPIPE
45:     end
46: 
47:     FileUtils.rm_f out.path
48:   end

[Source]

     # File lib/test/spec.rb, line 171
171:     def pass(custom)
172:       _wrap_assertion {
173:         assert_nothing_raised(Test::Unit::AssertionFailedError,
174:                               @message || custom.failure_message) {
175:           assert custom.matches?(@object), @message || custom.failure_message
176:         }
177:       }
178:     end

[Source]

     # File lib/test/spec.rb, line 126
126:     def respond_to(method)
127:       assert_respond_to @object, method, @message
128:     end

[Source]

    # File lib/test/spec.rb, line 80
80:     def satisfy(&block)
81:       assert_block(@message || "satisfy block failed.") {
82:         yield @object
83:       }
84:     end

[Source]

     # File lib/test/spec.rb, line 135
135:     def throw(*args)
136:       assert_throws(*(args + [@message]), &@object)
137:     end

[Validate]