expectations 0.1.8 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/lib/expectations.rb CHANGED
@@ -18,6 +18,10 @@ require 'fileutils'
18
18
  require File.expand_path(File.dirname(__FILE__) + '/expectations/object')
19
19
  require File.expand_path(File.dirname(__FILE__) + '/expectations/delegate_expectation')
20
20
  require File.expand_path(File.dirname(__FILE__) + '/expectations/delegate_recorder')
21
+ require File.expand_path(File.dirname(__FILE__) + '/expectations/recorded_state_based_expectation')
22
+ require File.expand_path(File.dirname(__FILE__) + '/expectations/state_based_recorder')
23
+ require File.expand_path(File.dirname(__FILE__) + '/expectations/positive_state_based_recorder')
24
+ require File.expand_path(File.dirname(__FILE__) + '/expectations/negative_state_based_recorder')
21
25
  require File.expand_path(File.dirname(__FILE__) + '/expectations/xml_string')
22
26
  require File.expand_path(File.dirname(__FILE__) + '/expectations/regexp')
23
27
  require File.expand_path(File.dirname(__FILE__) + '/expectations/range')
@@ -7,6 +7,8 @@ class Expectations::Expectation
7
7
  self.file, self.line = eval "[__FILE__, __LINE__]", block.binding
8
8
  case
9
9
  when expected.is_a?(Expectations::DelegateRecorder) then extend(Expectations::DelegateExpectation)
10
+ when expected.is_a?(Expectations::PositiveStateBasedRecorder) then extend(Expectations::RecordedStateBasedExpectation)
11
+ when expected.is_a?(Expectations::NegativeStateBasedRecorder) then extend(Expectations::RecordedStateBasedExpectation)
10
12
  when expected.is_a?(Expectations::MockRecorder) then extend(Expectations::BehaviorBasedExpectation)
11
13
  else extend(Expectations::StateBasedExpectation)
12
14
  end
@@ -0,0 +1,12 @@
1
+ class Expectations::NegativeStateBasedRecorder < Expectations::StateBasedRecorder
2
+
3
+ def to
4
+ @message_parts << "to"
5
+ self
6
+ end
7
+
8
+ def verify
9
+ not method_stack.inject(subject) { |result, element| result.send element.first, *element.last }
10
+ end
11
+
12
+ end
@@ -7,6 +7,14 @@ class Object
7
7
  Expectations::DelegateRecorder.new(self, method)
8
8
  end
9
9
 
10
+ def to
11
+ Expectations::PositiveStateBasedRecorder.new(self)
12
+ end
13
+
14
+ def not
15
+ Expectations::NegativeStateBasedRecorder.new(self)
16
+ end
17
+
10
18
  def expectations_equal_to(other)
11
19
  self == other
12
20
  end
@@ -0,0 +1,7 @@
1
+ class Expectations::PositiveStateBasedRecorder < Expectations::StateBasedRecorder
2
+
3
+ def verify
4
+ method_stack.inject(subject) { |result, element| result.send element.first, *element.last }
5
+ end
6
+
7
+ end
@@ -0,0 +1,21 @@
1
+ module Expectations::RecordedStateBasedExpectation
2
+ def execute
3
+ begin
4
+ mocha_setup
5
+ instance_exec expected.subject, &block
6
+ if expected.verify
7
+ self.extend(Expectations::Results::Fulfilled)
8
+ else
9
+ self.extend(Expectations::Results::StateBasedFailure)
10
+ self.message = "expected #{expected.subject} to #{expected.message}"
11
+ end
12
+ rescue Exception => ex
13
+ self.extend(Expectations::Results::Error)
14
+ self.exception = ex
15
+ ensure
16
+ mocha_teardown
17
+ end
18
+ self
19
+ end
20
+
21
+ end
@@ -0,0 +1,33 @@
1
+ class Expectations::StateBasedRecorder
2
+ attr_reader :subject
3
+ def initialize(subject)
4
+ @subject = subject
5
+ @message_parts = []
6
+ end
7
+
8
+ def have
9
+ @message_parts << "have"
10
+ self
11
+ end
12
+
13
+ def be
14
+ @message_parts << "be"
15
+ self
16
+ end
17
+
18
+ def message
19
+ @message_parts.join(" ")
20
+ end
21
+
22
+ def method_stack
23
+ @method_stack ||= []
24
+ end
25
+
26
+ def method_missing(sym, *args)
27
+ @message_parts << "#{sym}"
28
+ args.each { |arg| @message_parts << arg.inspect }
29
+ method_stack << [sym, args]
30
+ self
31
+ end
32
+
33
+ end
data/rakefile.rb CHANGED
@@ -37,22 +37,22 @@ end
37
37
  Gem::manage_gems
38
38
 
39
39
  specification = Gem::Specification.new do |s|
40
- s.name = "expectations"
40
+ s.name = "expectations"
41
41
  s.summary = "A lightweight unit testing framework. Tests (expectations) will be written as follows
42
42
  expect 2 do
43
43
  1 + 1
44
44
  end
45
-
45
+
46
46
  expect NoMethodError do
47
47
  Object.invalid_method_call
48
48
  end."
49
- s.version = "0.1.8"
50
- s.author = 'Jay Fields'
49
+ s.version = "0.2.0"
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
53
53
  1 + 1
54
54
  end
55
-
55
+
56
56
  expect NoMethodError do
57
57
  Object.invalid_method_call
58
58
  end."
@@ -62,12 +62,13 @@ specification = Gem::Specification.new do |s|
62
62
  s.has_rdoc = true
63
63
  s.extra_rdoc_files = ['README']
64
64
  s.rdoc_options << '--title' << 'expectations' << '--main' << 'README' << '--line-numbers'
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.add_dependency('mocha', '>= 0.5.5')
68
69
  end
69
70
 
70
71
  Rake::GemPackageTask.new(specification) do |package|
71
- package.need_zip = false
72
- package.need_tar = false
72
+ package.need_zip = false
73
+ package.need_tar = false
73
74
  end
@@ -18,52 +18,52 @@ Expectations do
18
18
  Object.new.extend(Expectations::Results::Error).char
19
19
  end
20
20
 
21
- expect true do
22
- Object.new.extend(Expectations::Results::Fulfilled).fulfilled?
21
+ expect Object.new.to.be.fulfilled? do |instance|
22
+ instance.extend(Expectations::Results::Fulfilled)
23
23
  end
24
24
 
25
- expect false do
26
- Object.new.extend(Expectations::Results::StateBasedFailure).fulfilled?
25
+ expect Object.new.not.to.be.fulfilled? do |instance|
26
+ instance.extend(Expectations::Results::StateBasedFailure)
27
27
  end
28
28
 
29
- expect false do
30
- Object.new.extend(Expectations::Results::BehaviorBasedFailure).fulfilled?
29
+ expect Object.new.not.to.be.fulfilled? do |instance|
30
+ instance.extend(Expectations::Results::BehaviorBasedFailure)
31
31
  end
32
32
 
33
- expect false do
34
- Object.new.extend(Expectations::Results::Error).fulfilled?
33
+ expect Object.new.not.to.be.fulfilled? do |instance|
34
+ instance.extend(Expectations::Results::Error)
35
35
  end
36
36
 
37
- expect false do
38
- Object.new.extend(Expectations::Results::Fulfilled).error?
37
+ expect Object.new.not.to.be.error? do |instance|
38
+ instance.extend(Expectations::Results::Fulfilled)
39
39
  end
40
40
 
41
- expect false do
42
- Object.new.extend(Expectations::Results::StateBasedFailure).error?
41
+ expect Object.new.not.to.be.error? do |instance|
42
+ instance.extend(Expectations::Results::StateBasedFailure)
43
43
  end
44
44
 
45
- expect false do
46
- Object.new.extend(Expectations::Results::BehaviorBasedFailure).error?
45
+ expect Object.new.not.to.be.error? do |instance|
46
+ instance.extend(Expectations::Results::BehaviorBasedFailure)
47
47
  end
48
48
 
49
- expect true do
50
- Object.new.extend(Expectations::Results::Error).error?
49
+ expect Object.new.to.be.error? do |instance|
50
+ instance.extend(Expectations::Results::Error)
51
51
  end
52
52
 
53
- expect false do
54
- Object.new.extend(Expectations::Results::Fulfilled).failure?
53
+ expect Object.new.not.to.be.failure? do |instance|
54
+ instance.extend(Expectations::Results::Fulfilled)
55
55
  end
56
56
 
57
- expect true do
58
- Object.new.extend(Expectations::Results::StateBasedFailure).failure?
57
+ expect Object.new.to.be.failure? do |instance|
58
+ instance.extend(Expectations::Results::StateBasedFailure)
59
59
  end
60
60
 
61
- expect true do
62
- Object.new.extend(Expectations::Results::BehaviorBasedFailure).failure?
61
+ expect Object.new.to.be.failure? do |instance|
62
+ instance.extend(Expectations::Results::BehaviorBasedFailure)
63
63
  end
64
64
 
65
- expect false do
66
- Object.new.extend(Expectations::Results::Error).failure?
65
+ expect Object.new.not.to.be.failure? do |instance|
66
+ instance.extend(Expectations::Results::Error)
67
67
  end
68
68
 
69
69
  end
@@ -13,25 +13,19 @@ Expectations do
13
13
  results.errors.size
14
14
  end
15
15
 
16
- expect false do
17
- results = Expectations::SuiteResults.new(Silent)
16
+ expect Expectations::SuiteResults.new(Silent).not.to.have.succeeded? do |results|
18
17
  results << Object.new.extend(Expectations::Results::StateBasedFailure)
19
18
  results << Object.new.extend(Expectations::Results::Fulfilled)
20
- results.succeeded?
21
19
  end
22
20
 
23
- expect false do
24
- results = Expectations::SuiteResults.new(Silent)
21
+ expect Expectations::SuiteResults.new(Silent).not.to.have.succeeded? do |results|
25
22
  results << Object.new.extend(Expectations::Results::BehaviorBasedFailure)
26
23
  results << Object.new.extend(Expectations::Results::Fulfilled)
27
- results.succeeded?
28
24
  end
29
25
 
30
- expect true do
31
- results = Expectations::SuiteResults.new(Silent)
26
+ expect Expectations::SuiteResults.new(Silent).to.have.succeeded? do |results|
32
27
  results << Object.new.extend(Expectations::Results::Fulfilled)
33
28
  results << Object.new.extend(Expectations::Results::Fulfilled)
34
- results.succeeded?
35
29
  end
36
30
 
37
31
  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.8
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jay Fields
@@ -9,10 +9,18 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2008-02-24 00:00:00 -05:00
12
+ date: 2008-03-02 00:00:00 -08:00
13
13
  default_executable:
14
- dependencies: []
15
-
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: mocha
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 0.5.5
23
+ version:
16
24
  description: 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.
17
25
  email: ruby@jayfields.com
18
26
  executables: []
@@ -28,11 +36,15 @@ files:
28
36
  - lib/expectations/expectation.rb
29
37
  - lib/expectations/mock_recorder.rb
30
38
  - lib/expectations/module.rb
39
+ - lib/expectations/negative_state_based_recorder.rb
31
40
  - lib/expectations/object.rb
41
+ - lib/expectations/positive_state_based_recorder.rb
32
42
  - lib/expectations/range.rb
43
+ - lib/expectations/recorded_state_based_expectation.rb
33
44
  - lib/expectations/regexp.rb
34
45
  - lib/expectations/results.rb
35
46
  - lib/expectations/state_based_expectation.rb
47
+ - lib/expectations/state_based_recorder.rb
36
48
  - lib/expectations/string.rb
37
49
  - lib/expectations/suite.rb
38
50
  - lib/expectations/suite_results.rb