Completed
Pull Request — master (#80)
by
unknown
30s
created

IsSequenceContainingInOrderTestBase   A

Complexity

Total Complexity 13

Size/Duplication

Total Lines 49
Duplicated Lines 0 %

Importance

Changes 2
Bugs 0 Features 0
Metric Value
c 2
b 0
f 0
dl 0
loc 49
rs 10
wmc 13

13 Methods

Rating   Name   Duplication   Size   Complexity  
A testDoesNotMatchWithFewerElementsThanExpected() 0 3 1
A testHasAReadableDescription() 0 2 1
A testMatchingMultipleItemSequence() 0 4 1
A testDoesNotMatchWithMoreElementsThanExpected() 0 3 1
A testDoesNotMatchEmptySequence() 0 3 1
A testDoesNotMatchIfOneOfMultipleItemsMismatch() 0 3 1
A testDescribeMismatchOfNonSequence() 0 2 1
A testProvidesConvenientShortcutForMatchingWithEqualTo() 0 4 1
A testDescribeMismatch() 0 2 1
A testMatchingSingleItemSequence() 0 2 1
A testMatchesAnyConformingSequence() 0 3 1
A testDoesNotMatchIfSingleItemMismatches() 0 2 1
A testEmptySequenceMatchesEmptySequence() 0 2 1
1
from __future__ import absolute_import
2
3
from hamcrest.library.collection.issequence_containinginorder 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 IsSequenceContainingInOrderTestBase(object):
17
18
    def testMatchingSingleItemSequence(self):
19
        self.assert_matches("Single item sequence", contains(equal_to(1)), self._sequence(1))
20
21
    def testMatchingMultipleItemSequence(self):
22
        self.assert_matches("Multiple item sequence",
23
                            contains(equal_to(1), equal_to(2), equal_to(3)),
24
                            self._sequence(1,2,3))
25
26
    def testProvidesConvenientShortcutForMatchingWithEqualTo(self):
27
        self.assert_matches("Values automatically wrapped with equal_to",
28
                            contains(1, 2, 3),
29
                            self._sequence(1,2,3))
30
31
    def testDoesNotMatchWithMoreElementsThanExpected(self):
32
        self.assert_mismatch_description("Not matched: <4>",
33
                            contains(1,2,3), self._sequence(1,2,3,4))
34
35
    def testDoesNotMatchWithFewerElementsThanExpected(self):
36
        self.assert_mismatch_description("No item matched: <3>",
37
                            contains(1,2,3), self._sequence(1,2))
38
39
    def testDoesNotMatchIfSingleItemMismatches(self):
40
        self.assert_mismatch_description("item 0: was <3>", contains(4), self._sequence(3))
41
42
    def testDoesNotMatchIfOneOfMultipleItemsMismatch(self):
43
        self.assert_mismatch_description("item 2: was <4>",
44
                            contains(1,2,3), self._sequence(1,2,4))
45
46
    def testDoesNotMatchEmptySequence(self):
47
        self.assert_mismatch_description("No item matched: <4>",
48
                            contains(4), self._sequence())
49
50
    def testEmptySequenceMatchesEmptySequence(self):
51
        self.assert_matches("Empty sequence", contains(), self._sequence())
52
53
    def testMatchesAnyConformingSequence(self):
54
        self.assert_matches('quasi-sequence', contains(1,2), QuasiSequence())
55
        self.assert_does_not_match('non-sequence', contains(1,2), object())
56
57
    def testHasAReadableDescription(self):
58
        self.assert_description("a sequence containing [<1>, <2>]", contains(1,2))
59
60
    def testDescribeMismatch(self):
61
        self.assert_describe_mismatch('item 1: was <3>', contains(1,2), self._sequence(1,3))
62
63
    def testDescribeMismatchOfNonSequence(self):
64
        self.assert_describe_mismatch("was <3>", contains(1,2), 3)
65
66
67
class IsConcreteSequenceContainingInOrderTest(MatcherTest, IsSequenceContainingInOrderTestBase, SequenceForm):
68
    pass
69
70
class IsGeneratorSequenceContainingInOrderTest(MatcherTest, IsSequenceContainingInOrderTestBase, GeneratorForm):
71
    pass
72
73
if __name__ == '__main__':
74
    unittest.main()
75