Completed
Pull Request — master (#70)
by
unknown
01:14
created

tests.hamcrest_unit_test.collection.IsSequenceContainingInAnyOrderBase   A

Complexity

Total Complexity 14

Size/Duplication

Total Lines 61
Duplicated Lines 0 %
Metric Value
dl 0
loc 61
rs 10
wmc 14

14 Methods

Rating   Name   Duplication   Size   Complexity  
A IsSequenceContainingInAnyOrderBase.testProvidesConvenientShortcutForMatchingWithEqualTo() 0 3 1
A IsSequenceContainingInAnyOrderBase.testDescribeMismatchAfterMatch() 0 5 1
A IsSequenceContainingInAnyOrderBase.testMatchesAnyConformingSequence() 0 5 1
A IsSequenceContainingInAnyOrderBase.testMatchesSequenceOutOfOrder() 0 4 1
A IsSequenceContainingInAnyOrderBase.testDoesNotMatchIfOneOfMultipleItemsMismatch() 0 3 1
A IsSequenceContainingInAnyOrderBase.testDoesNotMatchWithFewerElementsThanExpected() 0 4 1
A IsSequenceContainingInAnyOrderBase.testDescribeMismatchOfNonSequence() 0 2 1
A IsSequenceContainingInAnyOrderBase.testDoesNotMatchWithMoreElementsThanExpected() 0 3 1
A IsSequenceContainingInAnyOrderBase.testEmptySequenceMatchesEmptySequence() 0 2 1
A IsSequenceContainingInAnyOrderBase.testMatchingSingleItemSequence() 0 3 1
A IsSequenceContainingInAnyOrderBase.testHasAReadableDescription() 0 3 1
A IsSequenceContainingInAnyOrderBase.testDoesNotMatchEmptySequence() 0 3 1
A IsSequenceContainingInAnyOrderBase.testMatchesSequenceInOrder() 0 3 1
A IsSequenceContainingInAnyOrderBase.testDescribeMismatch() 0 3 1
1
from __future__ import absolute_import
2
3
from hamcrest.library.collection.issequence_containinginanyorder import *
4
5
from hamcrest.core.core.isequal import equal_to
6
from hamcrest_unit_test.matcher_test import MatcherTest
7
from .quasisequence import QuasiSequence
8
from .sequencemixin import SequenceForm, GeneratorForm
9
import unittest
10
11
__author__ = "Jon Reid"
12
__copyright__ = "Copyright 2011 hamcrest.org"
13
__license__ = "BSD, see License.txt"
14
15
16
class IsSequenceContainingInAnyOrderBase(object):
17
18
    def testMatchingSingleItemSequence(self):
19
        self.assert_matches("Single item sequence",
20
                            contains_inanyorder(equal_to(1)), self._sequence(1))
21
22
    def testMatchesSequenceInOrder(self):
23
        self.assert_matches("In order",
24
                            contains_inanyorder(equal_to(1), equal_to(2)), self._sequence(1,2))
25
26
    def testMatchesSequenceOutOfOrder(self):
27
        self.assert_matches("Out of order",
28
                            contains_inanyorder(equal_to(1), equal_to(2)),
29
                            self._sequence(2,1))
30
31
    def testProvidesConvenientShortcutForMatchingWithEqualTo(self):
32
        self.assert_matches("Values automatically wrapped with equal_to",
33
                            contains_inanyorder(1,2), self._sequence(2,1))
34
35
    def testDoesNotMatchEmptySequence(self):
36
        self.assert_mismatch_description("no item matches: <1>, <2> in []",
37
                                         contains_inanyorder(1, 2), self._sequence())
38
39
    def testEmptySequenceMatchesEmptySequence(self):
40
        self.assert_matches("Empty sequence", contains_inanyorder(), self._sequence())
41
42
    def testDoesNotMatchIfOneOfMultipleItemsMismatch(self):
43
        self.assert_mismatch_description("not matched: <4>",
44
                                         contains_inanyorder(1,2,3), self._sequence(1,2,4))
45
46
    def testDoesNotMatchWithMoreElementsThanExpected(self):
47
        self.assert_mismatch_description("not matched: <2>",
48
                                         contains_inanyorder(1,3), self._sequence(1,2,3))
49
50
    def testDoesNotMatchWithFewerElementsThanExpected(self):
51
        self.assert_mismatch_description(
52
                            "no item matches: <4> in [<1>, <2>, <3>]",
53
                            contains_inanyorder(1,2,3,4), self._sequence(1,2,3))
54
55
    def testMatchesAnyConformingSequence(self):
56
        self.assert_matches('quasi-sequence', contains_inanyorder(1,2),
57
                            QuasiSequence())
58
        self.assert_does_not_match('non-sequence', contains_inanyorder(1,2),
59
                                   object())
60
61
    def testHasAReadableDescription(self):
62
        self.assert_description("a sequence over [<1>, <2>] in any order",
63
                                contains_inanyorder(1,2))
64
65
    def testDescribeMismatch(self):
66
        self.assert_describe_mismatch('not matched: <3>',
67
                                      contains_inanyorder(1,2), self._sequence(1,3))
68
69
    def testDescribeMismatchOfNonSequence(self):
70
        self.assert_describe_mismatch("was <3>", contains_inanyorder(1,2), 3)
71
72
    def testDescribeMismatchAfterMatch(self):
73
        matcher = contains_inanyorder(1, 2, 3)
74
        matcher.matches(self._sequence(3, 1))
75
        self.assert_describe_mismatch('no item matches: <2> in [<3>, <1>]',
76
                                      matcher, self._sequence(3, 1))
77
78
79
class IsConcreteSequenceContainingInAnyOrderTest(MatcherTest, IsSequenceContainingInAnyOrderBase, SequenceForm):
80
    pass
81
82
class IsGeneratorSequenceContainingInAnyOrderTest(MatcherTest, IsSequenceContainingInAnyOrderBase, GeneratorForm):
83
    pass
84
85
if __name__ == '__main__':
86
    unittest.main()
87