expectations 0.1.4 → 0.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README CHANGED
@@ -114,6 +114,23 @@ expectations can be used for state based and behavior based testing.
114
114
  String
115
115
  end
116
116
 
117
+ expect xml("<a><foo>bar</foo></a>") do
118
+ "<a>\n\t<foo>bar</foo> \n</a>"
119
+ end
120
+
121
+ expect xml(<<-eos) do
122
+ <one>
123
+ <two>
124
+ <three>4</three>
125
+ <five> 6 </five>
126
+ </two>
127
+ </one>
128
+ eos
129
+ "<one><two><three>4</three>
130
+ <five> 6 </five>
131
+ </two></one>"
132
+ end
133
+
117
134
  end
118
135
 
119
136
  == Contributors
@@ -6,7 +6,7 @@ module Expectations::BehaviorBasedExpectation
6
6
  expected.verify
7
7
  self.extend(Expectations::Results::Fulfilled)
8
8
  rescue Mocha::ExpectationError => ex
9
- self.extend(Expectations::Results::BehaviorFailure)
9
+ self.extend(Expectations::Results::BehaviorBasedFailure)
10
10
  self.message = ex.message
11
11
  rescue Exception => ex
12
12
  self.extend(Expectations::Results::Error)
@@ -8,7 +8,7 @@ module Expectations::Results
8
8
  end
9
9
 
10
10
  def failure?
11
- self.is_a?(Expectations::Results::StateBasedFailure) || self.is_a?(Expectations::Results::BehaviorFailure)
11
+ self.is_a?(Expectations::Results::StateBasedFailure) || self.is_a?(Expectations::Results::BehaviorBasedFailure)
12
12
  end
13
13
 
14
14
  def error?
@@ -41,7 +41,7 @@ module Expectations::Results
41
41
  end
42
42
 
43
43
  module Expectations::Results
44
- module BehaviorFailure
44
+ module BehaviorBasedFailure
45
45
  attr_accessor :message
46
46
  include Expectations::Results
47
47
  char "F"
@@ -4,34 +4,37 @@ class Expectations::Suite
4
4
  Expectations::MockRecorder.new(Mocha::Mock.new)
5
5
  end
6
6
 
7
+ def xml(string)
8
+ Expectations::XmlString.new(string)
9
+ end
10
+
7
11
  def execute(out=STDOUT)
8
- return true if @do_not_run
9
12
  suite_result = Expectations::SuiteResults.new(out)
10
- benchmark = Benchmark.measure { ENV["LINE"].nil? ? run_all(suite_result) : run_one(suite_result) }
13
+ return suite_result if @do_not_run
14
+ benchmark = Benchmark.measure do
15
+ expectations_for(ENV["LINE"]).each { |expectation| suite_result << expectation.execute }
16
+ end
11
17
  suite_result.print_results(benchmark)
12
18
  suite_result.write_junit_xml(ENV["JUnitXmlPath"]) unless ENV["JUnitXmlPath"].nil?
13
- yield suite_result if block_given?
14
- suite_result.succeeded?
19
+ suite_result
15
20
  end
16
21
 
17
- def run_all(suite_result)
18
- expectations.each { |expectation| suite_result << expectation.execute }
22
+ def expect(expected, &block)
23
+ expectations << Expectations::Expectation.new(expected, &block)
24
+ end
25
+
26
+ def do_not_run
27
+ @do_not_run = true
19
28
  end
20
29
 
21
- def run_one(suite_result)
22
- one = expectations.inject { |result, expectation| expectation.line > ENV["LINE"].to_i ? result : expectation }
23
- suite_result << one.execute
30
+ def expectations_for(line)
31
+ return expectations if line.nil?
32
+ [expectations.inject { |result, expectation| expectation.line > line.to_i ? result : expectation }]
24
33
  end
25
34
 
35
+ private
26
36
  def expectations
27
37
  @expectations ||= []
28
38
  end
29
39
 
30
- def expect(expected, &block)
31
- self.expectations << Expectations::Expectation.new(expected, &block)
32
- end
33
-
34
- def do_not_run
35
- @do_not_run = true
36
- end
37
40
  end
@@ -5,9 +5,7 @@ class Expectations::SuiteRunner
5
5
  def initialize
6
6
  self.suite = Expectations::Suite.new
7
7
  at_exit do
8
- suite.execute do |result|
9
- exit 1 unless result.succeeded?
10
- end
8
+ exit 1 unless suite.execute.succeeded?
11
9
  end
12
10
  end
13
11
 
@@ -0,0 +1,10 @@
1
+ class Expectations::XmlString < String
2
+
3
+ def expectations_equal_to(other)
4
+ self.strip.gsub(/>[\s]*</, "><") == other.strip.gsub(/>[\s]*</, "><")
5
+ end
6
+
7
+ def inspect
8
+ "[as xml] #{self.strip.gsub(/>[\s]*</, "><")}"
9
+ end
10
+ end
data/lib/expectations.rb CHANGED
@@ -16,11 +16,11 @@ require 'benchmark'
16
16
  require 'erb'
17
17
  require 'fileutils'
18
18
  require File.expand_path(File.dirname(__FILE__) + '/expectations/object')
19
+ require File.expand_path(File.dirname(__FILE__) + '/expectations/xml_string')
19
20
  require File.expand_path(File.dirname(__FILE__) + '/expectations/regexp')
20
21
  require File.expand_path(File.dirname(__FILE__) + '/expectations/range')
21
22
  require File.expand_path(File.dirname(__FILE__) + '/expectations/module')
22
23
  require File.expand_path(File.dirname(__FILE__) + '/expectations/string')
23
- require File.expand_path(File.dirname(__FILE__) + '/expectations/mocha')
24
24
  require File.expand_path(File.dirname(__FILE__) + '/expectations/suite')
25
25
  require File.expand_path(File.dirname(__FILE__) + '/expectations/suite_runner')
26
26
  require File.expand_path(File.dirname(__FILE__) + '/expectations/suite_results')
data/rakefile.rb CHANGED
@@ -46,7 +46,7 @@ specification = Gem::Specification.new do |s|
46
46
  expect NoMethodError do
47
47
  Object.invalid_method_call
48
48
  end."
49
- s.version = "0.1.4"
49
+ s.version = "0.1.5"
50
50
  s.author = 'Jay Fields'
51
51
  s.description = "A lightweight unit testing framework. Tests (expectations) will be written as follows
52
52
  expect 2 do
@@ -65,7 +65,6 @@ specification = Gem::Specification.new do |s|
65
65
 
66
66
  s.email = 'ruby@jayfields.com'
67
67
  s.files = FileList['{lib,test}/**/*.rb', '[A-Z]*$', 'rakefile.rb'].to_a
68
- s.test_file = "test/all_tests.rb"
69
68
  end
70
69
 
71
70
  Rake::GemPackageTask.new(specification) do |package|
@@ -0,0 +1,11 @@
1
+ require File.dirname(__FILE__) + "/../test_helper"
2
+
3
+ Expectations do
4
+ expect true do
5
+ String.expectations_equal_to "foo"
6
+ end
7
+
8
+ expect true do
9
+ String.expectations_equal_to String
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ require File.dirname(__FILE__) + "/../test_helper"
2
+
3
+ Expectations do
4
+ expect true do
5
+ object = Object.new
6
+ object.expectations_equal_to object
7
+ end
8
+
9
+ expect false do
10
+ Object.new.expectations_equal_to Object.new
11
+ end
12
+ end
@@ -11,7 +11,7 @@ Expectations do
11
11
  end
12
12
 
13
13
  expect "F" do
14
- Object.new.extend(Expectations::Results::BehaviorFailure).char
14
+ Object.new.extend(Expectations::Results::BehaviorBasedFailure).char
15
15
  end
16
16
 
17
17
  expect "E" do
@@ -27,11 +27,43 @@ Expectations do
27
27
  end
28
28
 
29
29
  expect false do
30
- Object.new.extend(Expectations::Results::BehaviorFailure).fulfilled?
30
+ Object.new.extend(Expectations::Results::BehaviorBasedFailure).fulfilled?
31
31
  end
32
32
 
33
33
  expect false do
34
34
  Object.new.extend(Expectations::Results::Error).fulfilled?
35
35
  end
36
36
 
37
+ expect false do
38
+ Object.new.extend(Expectations::Results::Fulfilled).error?
39
+ end
40
+
41
+ expect false do
42
+ Object.new.extend(Expectations::Results::StateBasedFailure).error?
43
+ end
44
+
45
+ expect false do
46
+ Object.new.extend(Expectations::Results::BehaviorBasedFailure).error?
47
+ end
48
+
49
+ expect true do
50
+ Object.new.extend(Expectations::Results::Error).error?
51
+ end
52
+
53
+ expect false do
54
+ Object.new.extend(Expectations::Results::Fulfilled).failure?
55
+ end
56
+
57
+ expect true do
58
+ Object.new.extend(Expectations::Results::StateBasedFailure).failure?
59
+ end
60
+
61
+ expect true do
62
+ Object.new.extend(Expectations::Results::BehaviorBasedFailure).failure?
63
+ end
64
+
65
+ expect false do
66
+ Object.new.extend(Expectations::Results::Error).failure?
67
+ end
68
+
37
69
  end
@@ -22,7 +22,7 @@ Expectations do
22
22
 
23
23
  expect false do
24
24
  results = Expectations::SuiteResults.new(Silent)
25
- results << Object.new.extend(Expectations::Results::BehaviorFailure)
25
+ results << Object.new.extend(Expectations::Results::BehaviorBasedFailure)
26
26
  results << Object.new.extend(Expectations::Results::Fulfilled)
27
27
  results.succeeded?
28
28
  end
@@ -1,37 +1,53 @@
1
1
  require File.dirname(__FILE__) + "/../test_helper"
2
2
 
3
3
  Expectations do
4
- expect 1 do
5
- suite = Expectations::Suite.new
6
- suite.expect(1) { 1 }
7
- suite.expectations.size
8
- end
9
4
 
10
5
  expect true do
11
6
  suite = Expectations::Suite.new
12
- suite.execute(Silent)
7
+ suite.execute(Silent).succeeded?
13
8
  end
14
9
 
15
10
  expect true do
16
11
  suite = Expectations::Suite.new
17
12
  suite.expect(1) { 2 }
18
13
  suite.do_not_run
19
- suite.execute(Silent)
14
+ suite.execute(Silent).succeeded?
20
15
  end
21
16
 
22
17
  expect false do
23
18
  suite = Expectations::Suite.new
24
19
  suite.expect(1) { 2 }
25
- suite.execute(Silent)
20
+ suite.execute(Silent).succeeded?
26
21
  end
27
22
 
28
- expect true do
23
+ expect Expectations::MockRecorder do
24
+ Expectations::Suite.new.mock
25
+ end
26
+
27
+ expect Mocha::Mock do
28
+ Expectations::Suite.new.mock.target
29
+ end
30
+
31
+ expect 3 do
29
32
  suite = Expectations::Suite.new
30
- result=nil
31
- suite.execute(Silent) do |yielded_value|
32
- result = yielded_value.succeeded?
33
- end
34
- result
33
+ suite.expect(1) { 2 }
34
+ suite.expect(1) { 2 }
35
+ suite.expect(1) { 2 }
36
+ suite.expectations_for(nil).size
35
37
  end
36
-
38
+
39
+ expect 1 do
40
+ suite = Expectations::Suite.new
41
+ suite.expect(1) { 2 }
42
+ suite.expect(1) { 2 }
43
+ suite.expectations_for(__LINE__ - 1).size
44
+ end
45
+
46
+ expect :expected do
47
+ suite = Expectations::Suite.new
48
+ suite.expect(1) { 2 }
49
+ suite.expect(:expected) { 2 }
50
+ suite.expectations_for(__LINE__ - 1).first.expected
51
+ end
52
+
37
53
  end
@@ -0,0 +1,44 @@
1
+ require File.dirname(__FILE__) + "/../test_helper"
2
+
3
+ Expectations do
4
+ expect true do
5
+ Expectations::XmlString.new("<foo>bar</foo>").expectations_equal_to "<foo>bar</foo>"
6
+ end
7
+
8
+ expect true do
9
+ Expectations::XmlString.new("<foo>bar</foo>").expectations_equal_to " <foo>bar</foo> "
10
+ end
11
+
12
+ expect true do
13
+ Expectations::XmlString.new(" <foo>bar</foo> ").expectations_equal_to "<foo>bar</foo>"
14
+ end
15
+
16
+ expect true do
17
+ Expectations::XmlString.new("<foo>bar</foo>").expectations_equal_to "<foo>bar</foo>\n"
18
+ end
19
+
20
+ expect true do
21
+ Expectations::XmlString.new("\n<foo>bar</foo>").expectations_equal_to "<foo>bar</foo>"
22
+ end
23
+
24
+ expect true do
25
+ Expectations::XmlString.new("\t<foo>bar</foo>").expectations_equal_to "<foo>bar</foo>"
26
+ end
27
+
28
+ expect true do
29
+ Expectations::XmlString.new("<foo>bar</foo>").expectations_equal_to "<foo>bar</foo>\t"
30
+ end
31
+
32
+ expect true do
33
+ Expectations::XmlString.new("<a>\n<foo>bar</foo>").expectations_equal_to "<a><foo>bar</foo>"
34
+ end
35
+
36
+ expect true do
37
+ Expectations::XmlString.new("<a>\n<foo>\t \n bar</foo>").expectations_equal_to "<a><foo>\t \n bar</foo>"
38
+ end
39
+
40
+ expect true do
41
+ Expectations::XmlString.new("<a>\n<foo>\t \n bar</foo>\n \t </a>").expectations_equal_to "<a><foo>\t \n bar</foo></a>"
42
+ end
43
+
44
+ end
@@ -4,47 +4,41 @@ Expectations do
4
4
  expect Expectations::Results::StateBasedFailure do
5
5
  suite = Expectations::Suite.new
6
6
  suite.expect(2) { 3 }
7
- suite.execute(Silent)
8
- suite.expectations.first
7
+ suite.execute(Silent).expectations.first
9
8
  end
10
9
 
11
10
  expect Expectations::Results::Error do
12
11
  suite = Expectations::Suite.new
13
12
  suite.expect(ArgumentError) { Object.no_method }
14
- suite.execute(Silent)
15
- suite.expectations.first
13
+ suite.execute(Silent).expectations.first
16
14
  end
17
15
 
18
- expect Expectations::Results::BehaviorFailure do
16
+ expect Expectations::Results::BehaviorBasedFailure do
19
17
  suite = Expectations::Suite.new
20
18
  suite.expect(mock.to_receive(:dial).with("2125551212").times(2)) do |phone|
21
19
  phone.dial("2125551212")
22
20
  phone.dial("2125551212")
23
21
  phone.dial("2125551212")
24
22
  end
25
- suite.execute(Silent)
26
- suite.expectations.first
23
+ suite.execute(Silent).expectations.first
27
24
  end
28
25
 
29
- expect Expectations::Results::BehaviorFailure do
26
+ expect Expectations::Results::BehaviorBasedFailure do
30
27
  suite = Expectations::Suite.new
31
28
  suite.expect(mock.to_receive(:dial).with("2125551212").times(2)) { |phone| phone.dial("2125551212") }
32
- suite.execute(Silent)
33
- suite.expectations.first
29
+ suite.execute(Silent).expectations.first
34
30
  end
35
31
 
36
- expect Expectations::Results::BehaviorFailure do
32
+ expect Expectations::Results::BehaviorBasedFailure do
37
33
  suite = Expectations::Suite.new
38
34
  suite.expect(Object.to_receive(:deal)) { }
39
- suite.execute(Silent)
40
- suite.expectations.first
35
+ suite.execute(Silent).expectations.first
41
36
  end
42
37
 
43
38
  expect Expectations::Results::Error do
44
39
  suite = Expectations::Suite.new
45
40
  suite.expect(2) { stub(:two => 2).twos }
46
- suite.execute(Silent)
47
- suite.expectations.first
41
+ suite.execute(Silent).expectations.first
48
42
  end
49
43
 
50
44
  expect Expectations::Results::Error do
@@ -53,8 +47,7 @@ Expectations do
53
47
  Object.expects(:bar).returns 2
54
48
  Object.barter
55
49
  end
56
- suite.execute(Silent)
57
- suite.expectations.first
50
+ suite.execute(Silent).expectations.first
58
51
  end
59
52
 
60
53
  expect Expectations::Results::Error do
@@ -63,8 +56,7 @@ Expectations do
63
56
  Object.expects(:give_me_three).with(3).returns 1
64
57
  Object.give_me_three(stub(:three=>3).threes)
65
58
  end
66
- suite.execute(Silent)
67
- suite.expectations.first
59
+ suite.execute(Silent).expectations.first
68
60
  end
69
61
 
70
62
  end
@@ -70,4 +70,21 @@ Expectations do
70
70
  String
71
71
  end
72
72
 
73
+ expect xml("<a><foo>bar</foo></a>") do
74
+ "<a>\n\t<foo>bar</foo> \n</a>"
75
+ end
76
+
77
+ expect xml(<<-eos) do
78
+ <one>
79
+ <two>
80
+ <three>4</three>
81
+ <five> 6 </five>
82
+ </two>
83
+ </one>
84
+ eos
85
+ "<one><two><three>4</three>
86
+ <five> 6 </five>
87
+ </two></one>"
88
+ end
89
+
73
90
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: expectations
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jay Fields
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-01-21 00:00:00 -08:00
12
+ date: 2008-01-23 00:00:00 -08:00
13
13
  default_executable:
14
14
  dependencies: []
15
15
 
@@ -24,7 +24,6 @@ extra_rdoc_files:
24
24
  files:
25
25
  - lib/expectations/behavior_based_expectation.rb
26
26
  - lib/expectations/expectation.rb
27
- - lib/expectations/mocha.rb
28
27
  - lib/expectations/mock_recorder.rb
29
28
  - lib/expectations/module.rb
30
29
  - lib/expectations/object.rb
@@ -36,10 +35,12 @@ files:
36
35
  - lib/expectations/suite.rb
37
36
  - lib/expectations/suite_results.rb
38
37
  - lib/expectations/suite_runner.rb
38
+ - lib/expectations/xml_string.rb
39
39
  - lib/expectations.rb
40
- - test/all_tests.rb
41
40
  - test/expectations/expectation_test.rb
42
41
  - test/expectations/expectations_test.rb
42
+ - test/expectations/module_test.rb
43
+ - test/expectations/object_test.rb
43
44
  - test/expectations/range_test.rb
44
45
  - test/expectations/regexp_test.rb
45
46
  - test/expectations/results_test.rb
@@ -47,9 +48,10 @@ files:
47
48
  - test/expectations/suite_results_test.rb
48
49
  - test/expectations/suite_runner_test.rb
49
50
  - test/expectations/suite_test.rb
51
+ - test/expectations/xml_string_test.rb
50
52
  - test/failures_test.rb
51
- - test/sample_expectations_test.rb
52
53
  - test/silent.rb
54
+ - test/successes_test.rb
53
55
  - test/test_helper.rb
54
56
  - rakefile.rb
55
57
  - README
@@ -83,5 +85,5 @@ rubygems_version: 1.0.1
83
85
  signing_key:
84
86
  specification_version: 2
85
87
  summary: A lightweight unit testing framework. Tests (expectations) will be written as follows expect 2 do 1 + 1 end expect NoMethodError do Object.invalid_method_call end.
86
- test_files:
87
- - test/all_tests.rb
88
+ test_files: []
89
+
@@ -1,9 +0,0 @@
1
- # module Mocha
2
- # class Mock
3
- # attr_reader :expectations
4
- # alias to_receive expects
5
- # end
6
- # class ExpectationList
7
- # attr_reader :expectations
8
- # end
9
- # end
data/test/all_tests.rb DELETED
@@ -1 +0,0 @@
1
- Dir['**/*_test.rb'].each { |test_case| require test_case }