expectation 0.3.1 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +7 -0
  2. data/lib/contracts.rb +197 -0
  3. data/lib/core/exception.rb +15 -0
  4. data/lib/expectation/assertions.rb +19 -23
  5. data/lib/expectation/version.rb +1 -1
  6. data/lib/expectation.rb +59 -112
  7. data/test/assertions_test.rb +2 -1
  8. data/test/contracts_module_test.rb +48 -0
  9. data/test/contracts_singleton_test.rb +28 -0
  10. data/test/contracts_test.rb +88 -0
  11. data/test/coverage/assets/0.10.0/application.css +799 -0
  12. data/test/coverage/assets/0.10.0/application.js +1707 -0
  13. data/test/coverage/assets/0.10.0/colorbox/border.png +0 -0
  14. data/test/coverage/assets/0.10.0/colorbox/controls.png +0 -0
  15. data/test/coverage/assets/0.10.0/colorbox/loading.gif +0 -0
  16. data/test/coverage/assets/0.10.0/colorbox/loading_background.png +0 -0
  17. data/test/coverage/assets/0.10.0/favicon_green.png +0 -0
  18. data/test/coverage/assets/0.10.0/favicon_red.png +0 -0
  19. data/test/coverage/assets/0.10.0/favicon_yellow.png +0 -0
  20. data/test/coverage/assets/0.10.0/loading.gif +0 -0
  21. data/test/coverage/assets/0.10.0/magnify.png +0 -0
  22. data/test/coverage/assets/0.10.0/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  23. data/test/coverage/assets/0.10.0/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  24. data/test/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  25. data/test/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  26. data/test/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  27. data/test/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  28. data/test/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  29. data/test/coverage/assets/0.10.0/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  30. data/test/coverage/assets/0.10.0/smoothness/images/ui-icons_222222_256x240.png +0 -0
  31. data/test/coverage/assets/0.10.0/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  32. data/test/coverage/assets/0.10.0/smoothness/images/ui-icons_454545_256x240.png +0 -0
  33. data/test/coverage/assets/0.10.0/smoothness/images/ui-icons_888888_256x240.png +0 -0
  34. data/test/coverage/assets/0.10.0/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  35. data/test/coverage/index.html +72 -0
  36. data/test/exception_extension_test.rb +19 -0
  37. data/test/expection_test.rb +46 -0
  38. data/test/matching_test.rb +77 -0
  39. data/test/test_helper.rb +20 -7
  40. metadata +42 -18
  41. data/test/expect_test.rb +0 -119
@@ -0,0 +1,72 @@
1
+ <!DOCTYPE html>
2
+ <html xmlns='http://www.w3.org/1999/xhtml'>
3
+ <head>
4
+ <title>Code coverage for Test</title>
5
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
6
+ <script src='./assets/0.10.0/application.js' type='text/javascript'></script>
7
+ <link href='./assets/0.10.0/application.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
8
+ <link rel="shortcut icon" type="image/png" href="./assets/0.10.0/favicon_green.png" />
9
+ <link rel="icon" type="image/png" href="./assets/0.10.0/favicon.png" />
10
+ </head>
11
+
12
+ <body>
13
+ <div id="loading">
14
+ <img src="./assets/0.10.0/loading.gif" alt="loading"/>
15
+ </div>
16
+ <div id="wrapper" style="display:none;">
17
+ <div class="timestamp">Generated <abbr class="timeago" title="2015-11-09T18:20:56+01:00">2015-11-09T18:20:56+01:00</abbr></div>
18
+ <ul class="group_tabs"></ul>
19
+
20
+ <div id="content">
21
+ <div class="file_list_container" id="AllFiles">
22
+ <h2>
23
+ <span class="group_name">All Files</span>
24
+ (<span class="covered_percent"><span class="green">100.0%</span></span>
25
+ covered at
26
+ <span class="covered_strength">
27
+ <span class="red">
28
+ 0.0
29
+ </span>
30
+ </span> hits/line)
31
+ </h2>
32
+ <a name="AllFiles"></a>
33
+ <div>
34
+ <b>0</b> files in total.
35
+ <b>0.0</b> relevant lines.
36
+ <span class="green"><b>0.0</b> lines covered</span> and
37
+ <span class="red"><b>0.0</b> lines missed </span>
38
+ </div>
39
+ <table class="file_list">
40
+ <thead>
41
+ <tr>
42
+ <th>File</th>
43
+ <th>% covered</th>
44
+ <th>Lines</th>
45
+ <th>Relevant Lines</th>
46
+ <th>Lines covered</th>
47
+ <th>Lines missed</th>
48
+ <th>Avg. Hits / Line</th>
49
+ </tr>
50
+ </thead>
51
+ <tbody>
52
+
53
+ </tbody>
54
+ </table>
55
+ </div>
56
+
57
+
58
+
59
+ </div>
60
+
61
+ <div id="footer">
62
+ Generated by <a href="http://github.com/colszowka/simplecov">simplecov</a> v0.10.0
63
+ and simplecov-html v0.10.0<br/>
64
+ using Unit Tests
65
+ </div>
66
+
67
+ <div class="source_files">
68
+
69
+ </div>
70
+ </div>
71
+ </body>
72
+ </html>
@@ -0,0 +1,19 @@
1
+ # Author:: radiospiel (mailto:eno@radiospiel.org)
2
+ # Copyright:: Copyright (c) 2011, 2012 radiospiel
3
+ # License:: Distributes under the terms of the Modified BSD License, see LICENSE.BSD for details.
4
+ require_relative 'test_helper'
5
+
6
+ class ExpensionExtensionTest < Test::Unit::TestCase
7
+ # Verify that the exception's backtrace is properly adjusted,
8
+ # i.e. points to this file.
9
+ def test_expectations_backtrace
10
+ backtrace = nil
11
+
12
+ begin
13
+ expect! 1 => 0
14
+ rescue
15
+ backtrace = $!.backtrace
16
+ end
17
+ assert backtrace.first.include?("/exception_extension_test.rb:")
18
+ end
19
+ end
@@ -0,0 +1,46 @@
1
+ # Author:: radiospiel (mailto:eno@radiospiel.org)
2
+ # Copyright:: Copyright (c) 2011, 2012 radiospiel
3
+ # License:: Distributes under the terms of the Modified BSD License, see LICENSE.BSD for details.
4
+ require_relative 'test_helper'
5
+
6
+ class ExpectationTest < Test::Unit::TestCase
7
+ def test_expectation_inherits_argument_error
8
+ assert Expectation::Error < ArgumentError
9
+ end
10
+
11
+ #
12
+ # This test covers the usual use case: expectations are
13
+ # passed in a single Hash.
14
+ def test_hash_expectation
15
+ assert_expectation! "1" => /1/
16
+ assert_failed_expectation! "1" => /2/
17
+
18
+ assert_expectation! 1 => 1, :a => :a
19
+ assert_failed_expectation! 1 => 2, :a => :a
20
+ end
21
+
22
+ def test_simple_expectations
23
+ assert_expectation! "1" => /1/
24
+ assert_expectation! 1, 1, 1, /1/
25
+ assert_expectation! 1, 1, "1" => /1/
26
+
27
+ assert_failed_expectation! 1, 1, "1" => /2/
28
+ assert_failed_expectation! 1, 1, 1 => /2/
29
+ assert_failed_expectation! 1, nil, "1" => /1/
30
+ assert_failed_expectation! 1, false, "1" => /1/
31
+ end
32
+
33
+ def test_block_expectations
34
+ assert_expectation! do true end
35
+ assert_failed_expectation! do false end
36
+ assert_failed_expectation! do nil end
37
+ end
38
+
39
+ def test_exception_message
40
+ e = assert_failed_expectation!({ 1 => 2 })
41
+ assert e.message.include?("1 does not match 2")
42
+
43
+ e = assert_failed_expectation!({ a: { b: "c" }} => { a: { b: "d" }})
44
+ assert e.message.include?("\"c\" does not match \"d\", at key :b")
45
+ end
46
+ end
@@ -0,0 +1,77 @@
1
+ # Author:: radiospiel (mailto:eno@radiospiel.org)
2
+ # Copyright:: Copyright (c) 2011, 2012 radiospiel
3
+ # License:: Distributes under the terms of the Modified BSD License, see LICENSE.BSD for details.
4
+ require_relative 'test_helper'
5
+
6
+ class MatchingTest < Test::Unit::TestCase
7
+ def assert_match(value, expectation)
8
+ assert_equal true, Expectation.match?(value, expectation)
9
+ end
10
+
11
+ def assert_mismatch(value, expectation)
12
+ assert_equal false, Expectation.match?(value, expectation)
13
+ end
14
+
15
+ def test_mismatches_raise_exceptions
16
+ assert_nothing_raised do
17
+ Expectation.match! 1, 1
18
+ end
19
+
20
+ assert_raise(Expectation::Error) {
21
+ Expectation.match! 1, 2
22
+ }
23
+ end
24
+
25
+ def test_int_expectations
26
+ assert_match 1, 1
27
+ assert_match 1, Fixnum
28
+ assert_match 1, Integer
29
+ assert_match 1, 0..2
30
+ assert_match 1, 0..1
31
+ assert_match 1, 1..10
32
+ assert_match 1, [0,1,2]
33
+
34
+ assert_mismatch 1, 2
35
+ assert_mismatch 1, Float
36
+ assert_mismatch 1, 0...1
37
+ assert_mismatch 1, 3..5
38
+ assert_mismatch 1, [3,4,5]
39
+ end
40
+
41
+ def test_lambda_expectations
42
+ # passes in value?
43
+ assert_match 1, lambda { |i| i.odd? }
44
+ assert_mismatch 1, lambda { |i| i.even? }
45
+
46
+ # does not pass in a value
47
+ r = false
48
+ assert_mismatch 1, lambda { r }
49
+
50
+ r = true
51
+ assert_match 1, lambda { r }
52
+ end
53
+
54
+ def test_regexp_expectations
55
+ assert_match " foo", /foo/
56
+ assert_mismatch " foo", /^foo/
57
+
58
+ assert_match "1", /1/
59
+ assert_mismatch "1", /2/
60
+
61
+ assert_mismatch 1, /1/
62
+ assert_mismatch 1, /2/
63
+ end
64
+
65
+ def test_hash_expectations
66
+ assert_mismatch({}, { :key => "Foo" })
67
+ assert_match({ :key => "Foo" }, { :key => "Foo" })
68
+
69
+ assert_mismatch({ :other_key => "Foo" }, { :key => "Foo" })
70
+ assert_mismatch({ :key => "Bar" }, { :key => "Foo" })
71
+
72
+ assert_match({ :key => "Foo" }, { :key => String })
73
+ assert_match({ :key => "Foo" }, { :key => [Integer,String] })
74
+ assert_mismatch({ :key => "Foo" }, { :key => [Integer,"Bar"] })
75
+ assert_match({ :other_key => "Foo" }, { :key => [nil, "Foo"] })
76
+ end
77
+ end
data/test/test_helper.rb CHANGED
@@ -2,17 +2,30 @@ require 'rubygems'
2
2
  require 'bundler/setup'
3
3
 
4
4
  require 'simplecov'
5
+ require 'simplecov-console'
5
6
  require 'test/unit'
6
- require 'test/unit/ui/console/testrunner'
7
-
8
- class Test::Unit::UI::Console::TestRunner
9
- def guess_color_availability; true; end
10
- end
11
-
12
- require 'mocha/setup'
13
7
 
14
8
  SimpleCov.start do
15
9
  add_filter "test/*.rb"
16
10
  end
17
11
 
12
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
13
+ SimpleCov::Formatter::HTMLFormatter,
14
+ SimpleCov::Formatter::Console,
15
+ ]
16
+
18
17
  require "expectation"
18
+
19
+ class Test::Unit::TestCase
20
+ def assert_expectation!(*expectation, &block)
21
+ assert_nothing_raised do
22
+ expect! *expectation, &block
23
+ end
24
+ end
25
+
26
+ def assert_failed_expectation!(*expectation, &block)
27
+ assert_raise(Expectation::Error) {
28
+ expect! *expectation, &block
29
+ }
30
+ end
31
+ end
metadata CHANGED
@@ -1,15 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: expectation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
5
- prerelease:
4
+ version: 1.0.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - radiospiel
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-01-08 00:00:00.000000000 Z
11
+ date: 2015-11-09 00:00:00.000000000 Z
13
12
  dependencies: []
14
13
  description: Defensive programming with expectations
15
14
  email: eno@radiospiel.org
@@ -17,41 +16,66 @@ executables: []
17
16
  extensions: []
18
17
  extra_rdoc_files: []
19
18
  files:
19
+ - README.md
20
+ - lib/contracts.rb
21
+ - lib/core/exception.rb
22
+ - lib/expectation.rb
20
23
  - lib/expectation/assertions.rb
21
24
  - lib/expectation/version.rb
22
- - lib/expectation.rb
23
- - README.md
24
25
  - test/assertions_test.rb
25
- - test/expect_test.rb
26
+ - test/contracts_module_test.rb
27
+ - test/contracts_singleton_test.rb
28
+ - test/contracts_test.rb
29
+ - test/coverage/assets/0.10.0/application.css
30
+ - test/coverage/assets/0.10.0/application.js
31
+ - test/coverage/assets/0.10.0/colorbox/border.png
32
+ - test/coverage/assets/0.10.0/colorbox/controls.png
33
+ - test/coverage/assets/0.10.0/colorbox/loading.gif
34
+ - test/coverage/assets/0.10.0/colorbox/loading_background.png
35
+ - test/coverage/assets/0.10.0/favicon_green.png
36
+ - test/coverage/assets/0.10.0/favicon_red.png
37
+ - test/coverage/assets/0.10.0/favicon_yellow.png
38
+ - test/coverage/assets/0.10.0/loading.gif
39
+ - test/coverage/assets/0.10.0/magnify.png
40
+ - test/coverage/assets/0.10.0/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png
41
+ - test/coverage/assets/0.10.0/smoothness/images/ui-bg_flat_75_ffffff_40x100.png
42
+ - test/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png
43
+ - test/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_65_ffffff_1x400.png
44
+ - test/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_75_dadada_1x400.png
45
+ - test/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png
46
+ - test/coverage/assets/0.10.0/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png
47
+ - test/coverage/assets/0.10.0/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png
48
+ - test/coverage/assets/0.10.0/smoothness/images/ui-icons_222222_256x240.png
49
+ - test/coverage/assets/0.10.0/smoothness/images/ui-icons_2e83ff_256x240.png
50
+ - test/coverage/assets/0.10.0/smoothness/images/ui-icons_454545_256x240.png
51
+ - test/coverage/assets/0.10.0/smoothness/images/ui-icons_888888_256x240.png
52
+ - test/coverage/assets/0.10.0/smoothness/images/ui-icons_cd0a0a_256x240.png
53
+ - test/coverage/index.html
54
+ - test/exception_extension_test.rb
55
+ - test/expection_test.rb
56
+ - test/matching_test.rb
26
57
  - test/test_helper.rb
27
58
  homepage: http://github.com/radiospiel/expectation
28
59
  licenses: []
60
+ metadata: {}
29
61
  post_install_message:
30
62
  rdoc_options: []
31
63
  require_paths:
32
64
  - lib
33
65
  required_ruby_version: !ruby/object:Gem::Requirement
34
- none: false
35
66
  requirements:
36
- - - ! '>='
67
+ - - ">="
37
68
  - !ruby/object:Gem::Version
38
69
  version: '0'
39
- segments:
40
- - 0
41
- hash: 4441031152163392854
42
70
  required_rubygems_version: !ruby/object:Gem::Requirement
43
- none: false
44
71
  requirements:
45
- - - ! '>='
72
+ - - ">="
46
73
  - !ruby/object:Gem::Version
47
74
  version: '0'
48
- segments:
49
- - 0
50
- hash: 4441031152163392854
51
75
  requirements: []
52
76
  rubyforge_project:
53
- rubygems_version: 1.8.24
77
+ rubygems_version: 2.4.6
54
78
  signing_key:
55
- specification_version: 3
79
+ specification_version: 4
56
80
  summary: Defensive programming with expectations
57
81
  test_files: []
data/test/expect_test.rb DELETED
@@ -1,119 +0,0 @@
1
- # Author:: radiospiel (mailto:eno@radiospiel.org)
2
- # Copyright:: Copyright (c) 2011, 2012 radiospiel
3
- # License:: Distributes under the terms of the Modified BSD License, see LICENSE.BSD for details.
4
- require_relative 'test_helper'
5
-
6
- class ExpectationTest < Test::Unit::TestCase
7
- def assert_expectation!(*expectation, &block)
8
- assert_nothing_raised do
9
- expect! *expectation, &block
10
- end
11
- end
12
-
13
- def assert_failed_expectation!(*expectation, &block)
14
- assert_raise(ArgumentError) {
15
- expect! *expectation, &block
16
- }
17
- end
18
-
19
- def assert_expectation(*expectation, &block)
20
- assert_nothing_raised do
21
- expect *expectation, &block
22
- end
23
- end
24
-
25
- def assert_failed_expectation(*expectation, &block)
26
- assert_raise(ArgumentError) {
27
- expect *expectation, &block
28
- }
29
- end
30
-
31
- # Verify that the exception's backtrace is properly adjusted,
32
- # i.e. points to this file.
33
- def test_expectations_backtrace
34
- backtrace = nil
35
-
36
- begin
37
- expect! 1 => 0
38
- rescue
39
- backtrace = $!.backtrace
40
- end
41
- assert backtrace.first.include?("/expect_test.rb:")
42
- end
43
-
44
- def test_int_expectations
45
- assert_expectation! 1 => 1
46
- assert_expectation! 1 => Fixnum
47
- assert_expectation! 1 => Integer
48
- assert_expectation! 1 => 0..2
49
- assert_expectation! 1 => 0..1
50
- assert_expectation! 1 => 1..10
51
- assert_expectation! 1 => [0,1,2]
52
- assert_expectation! 1 => lambda { |i| i.odd? }
53
-
54
- assert_failed_expectation! 1 => 2
55
- assert_failed_expectation! 1 => Float
56
- assert_failed_expectation! 1 => 0...1
57
- assert_failed_expectation! 1 => 3..5
58
- assert_failed_expectation! 1 => [3,4,5]
59
- assert_failed_expectation! 1 => lambda { |i| i.even? }
60
- end
61
-
62
- def test_regexp_expectations
63
- assert_expectation! " foo" => /foo/
64
- assert_failed_expectation! " foo" => /^foo/
65
-
66
- assert_expectation! "1" => /1/
67
- assert_failed_expectation! "1" => /2/
68
-
69
- assert_failed_expectation! 1 => /1/
70
- assert_failed_expectation! 1 => /2/
71
- end
72
-
73
- def test_multiple_expectations
74
- assert_expectation! 1 => 1, :a => :a
75
- assert_failed_expectation! 1 => 2, :a => :a
76
- end
77
-
78
- def test_array_expectations
79
- assert_expectation! 1, 1, 1, /1/
80
- assert_expectation! 1, 1, "1" => /1/
81
-
82
- assert_failed_expectation! 1, 1, "1" => /2/
83
- assert_failed_expectation! 1, 1, 1 => /2/
84
- assert_failed_expectation! 1, nil, "1" => /1/
85
- assert_failed_expectation! 1, false, "1" => /1/
86
- end
87
-
88
- def test_block_expectations
89
- assert_expectation! do true end
90
- assert_failed_expectation! do false end
91
- assert_failed_expectation! do nil end
92
- end
93
-
94
- def test_hash_expectations
95
- assert_failed_expectation!({} => { :key => "Foo" })
96
- assert_expectation!({ :key => "Foo" } => { :key => "Foo" })
97
-
98
- assert_failed_expectation!({ :other_key => "Foo" } => { :key => "Foo" })
99
- assert_failed_expectation!({ :key => "Bar" } => { :key => "Foo" })
100
-
101
- assert_expectation!({ :key => "Foo" } => { :key => String })
102
- assert_expectation!({ :key => "Foo" } => { :key => [Integer,String] })
103
- assert_failed_expectation!({ :key => "Foo" } => { :key => [Integer,"Bar"] })
104
- assert_expectation!({ :other_key => "Foo" } => { :key => [nil, "Foo"] })
105
- end
106
-
107
- def test_enable_and_disable
108
- assert_failed_expectation! "foo" => "bar"
109
- assert_failed_expectation "foo" => "bar"
110
-
111
- Expectation.disable
112
- assert_failed_expectation! "foo" => "bar"
113
- assert_expectation "foo" => "bar"
114
-
115
- Expectation.enable
116
- assert_failed_expectation! "foo" => "bar"
117
- assert_failed_expectation "foo" => "bar"
118
- end
119
- end