set_assertions 0.0.2 → 0.0.3

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.md CHANGED
@@ -1,5 +1,19 @@
1
- A set of custom assertions for test-unit.
1
+ ## SetAssertions
2
2
 
3
- These assertions allow you to assert using set-theory.
3
+ At the moment, the only test this gem provides is: assert_equal_set
4
4
 
5
- Currently all you get is assert_identical_set(set_1,set_2,"message")
5
+ This checks that, despite order, two arrays contain the same scalars and object references.
6
+
7
+ Why this assertion?
8
+
9
+ Because invariable I want to check that a set of values was added to a collection, but not need to know the order of them.
10
+
11
+ If you've ever had a fault like:
12
+
13
+ Expected [:a,:b] but got [:b,:a]
14
+
15
+ ... then you know what I mean.
16
+
17
+ ## Further Assertions
18
+
19
+ Want more? fork, add, make pull request OR add a ticket for it and I'll add it :D
@@ -2,13 +2,41 @@
2
2
  require "set_assertions/version"
3
3
 
4
4
  module SetAssertions
5
- def assert_equal_set(expected, actual, message=nil)
6
- full_message = build_message(message, "array with <?> in any order was expected, got: \n<?>.\n", expected, actual)
5
+
6
+ ##
7
+ # Passes if +expected_set+ and +actual_set+ are equal sets.
8
+ # An equal set has the following properties.
9
+ # * Identical cardinality.
10
+ # * The same elements, without concern for order.
11
+ #
12
+ # Example:
13
+ # assert_equal_set [:a,:b], [:b,:a]
14
+
15
+ def assert_equal_set(expected_set, actual_set, message=nil)
16
+ full_message = build_message(message, "set <?> in any order was expected, got: \n<?>.\n", expected_set, actual_set)
17
+ assert_block(full_message) {
18
+ (expected_set.length == actual_set.length) &&
19
+ ((expected_set & actual_set).length == actual_set.length)
20
+ }
21
+ end
22
+
23
+ ##
24
+ # Passes if +expected_set+ and +actual_set+ are inequal sets.
25
+ # An inequal set has the following properties.
26
+ # * Different cardinality.
27
+ # * The same cardinality, but different elements. (order does not matter)
28
+ #
29
+ # Example:
30
+ # assert_not_equal_set [:a,:b], [:a,:c]
31
+
32
+ def assert_not_equal_set(expected_set, actual_set, message=nil)
33
+ full_message = build_message(message, "any set other than <?> was expected, got the same: \n<?>.\n", expected_set, actual_set)
7
34
  assert_block(full_message) {
8
- (expected.length == actual.length) &&
9
- ((expected & actual).length == actual.length)
35
+ (expected_set.length != actual_set.length) ||
36
+ ((expected_set & actual_set).length != actual_set.length)
10
37
  }
11
38
  end
39
+
12
40
  end
13
41
 
14
42
  class Test::Unit::TestCase
@@ -1,3 +1,3 @@
1
1
  module SetAssertions
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -4,34 +4,62 @@ require 'test/unit'
4
4
  require 'set_assertions'
5
5
 
6
6
  class SetAssertionsTest < Test::Unit::TestCase
7
- def test_two_empty_tests_pass
8
- assert_equal_set([], [])
9
- end
10
7
 
11
- def test_two_identical_unit_sets_pass
12
- assert_equal_set([:a], [:a])
13
- end
8
+ class EqualSetTest < Test::Unit::TestCase
9
+ def test_two_empty_tests_pass
10
+ assert_equal_set([], [])
11
+ end
14
12
 
15
- def test_an_empty_set_and_a_unit_set_fail
16
- assert_fail_assertion { assert_equal_set([:a], []) }
17
- assert_fail_assertion { assert_equal_set([], [:a]) }
18
- end
13
+ def test_two_identical_unit_sets_pass
14
+ assert_equal_set([:a], [:a])
15
+ end
19
16
 
20
- def test_order_does_not_matter
21
- assert_equal_set([:a, :b], [:b, :a])
22
- end
17
+ def test_an_empty_set_and_a_unit_set_fail
18
+ assert_fail_assertion { assert_equal_set([:a], []) }
19
+ assert_fail_assertion { assert_equal_set([], [:a]) }
20
+ end
23
21
 
24
- def test_same_cardinality_but_different_set_fails
25
- assert_fail_assertion { assert_equal_set([:a, :b], [:c, :b]) }
26
- end
22
+ def test_order_does_not_matter
23
+ assert_equal_set([:a, :b], [:b, :a])
24
+ end
25
+
26
+ def test_same_cardinality_but_different_set_fails
27
+ assert_fail_assertion { assert_equal_set([:a, :b], [:c, :b]) }
28
+ end
27
29
 
28
- def test_large_cardinality_passes
29
- assert_equal_set([:a, :b, "c", 4, "f", :g, :h], [:a, :b, "c", 4, "f", :g, :h])
30
+ def test_large_cardinality_passes
31
+ assert_equal_set([:a, :b, "c", 4, "f", :g, :h], [:a, :b, "c", 4, "f", :g, :h])
32
+ end
33
+
34
+ def test_object_equality_passes
35
+ a = "foo"
36
+ b = {:foo => "bar"}
37
+ assert_equal_set([a, b], [b, a])
38
+ end
30
39
  end
31
40
 
32
- def test_object_equality_passes
33
- a = "foo"
34
- b = {:foo => "bar"}
35
- assert_equal_set([a,b], [b,a])
41
+ class NotEqualSetTest < Test::Unit::TestCase
42
+ def test_two_empty_tests_fail
43
+ assert_fail_assertion { assert_not_equal_set([], []) }
44
+ end
45
+
46
+ def test_two_identical_unit_sets_fail
47
+ assert_fail_assertion { assert_not_equal_set([:a], [:a]) }
48
+ end
49
+
50
+ def test_an_empty_set_and_a_unit_set_pass
51
+ assert_not_equal_set([:a], [])
52
+ assert_not_equal_set([], [:a])
53
+ end
54
+
55
+ def test_same_cardinality_but_different_set_passes
56
+ assert_not_equal_set([:a, :b], [:c, :b])
57
+ end
58
+
59
+ def test_object_equality_fails
60
+ a = "foo"
61
+ b = {:foo => "bar"}
62
+ assert_fail_assertion { assert_not_equal_set([a, b], [b, a]) }
63
+ end
36
64
  end
37
65
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: set_assertions
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-06-28 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: test-unit
16
- requirement: &2152574800 !ruby/object:Gem::Requirement
16
+ requirement: &2153431920 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *2152574800
24
+ version_requirements: *2153431920
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &2152574380 !ruby/object:Gem::Requirement
27
+ requirement: &2153431500 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *2152574380
35
+ version_requirements: *2153431500
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: test-unit
38
- requirement: &2152573960 !ruby/object:Gem::Requirement
38
+ requirement: &2153431080 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *2152573960
46
+ version_requirements: *2153431080
47
47
  description: Custom test-unit assertions for checking set equality and other set functions
48
48
  email:
49
49
  - squeedee@gmail.com
@@ -71,12 +71,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
71
71
  - - ! '>='
72
72
  - !ruby/object:Gem::Version
73
73
  version: '0'
74
+ segments:
75
+ - 0
76
+ hash: -3124136234441084457
74
77
  required_rubygems_version: !ruby/object:Gem::Requirement
75
78
  none: false
76
79
  requirements:
77
80
  - - ! '>='
78
81
  - !ruby/object:Gem::Version
79
82
  version: '0'
83
+ segments:
84
+ - 0
85
+ hash: -3124136234441084457
80
86
  requirements: []
81
87
  rubyforge_project:
82
88
  rubygems_version: 1.8.15