• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

zopefoundation / DocumentTemplate / 11314154840

03 Oct 2024 05:51AM UTC coverage: 85.31% (-0.2%) from 85.522%
11314154840

push

github

web-flow
Merge pull request #76 from zopefoundation/lazy_batching

support lazy batching again, support general iterators

709 of 976 branches covered (72.64%)

Branch coverage included in aggregate %.

98 of 100 new or added lines in 4 files covered. (98.0%)

1 existing line in 1 file now uncovered.

3269 of 3687 relevant lines covered (88.66%)

0.89 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

92.31
/src/DocumentTemplate/tests/test_Util.py
1
from unittest import TestCase
1✔
2

3
from ..DT_Util import SequenceFromIter
1✔
4
from ..DT_Util import sequence_ensure_subscription
1✔
5
from ..DT_Util import sequence_supports_subscription
1✔
6

7

8
class SequenceTests(TestCase):
1✔
9
    def test_supports_str(self):
1✔
10
        self.assertTrue(sequence_supports_subscription(""))
1✔
11

12
    def test_supports_sequence(self):
1✔
13
        self.assertTrue(sequence_supports_subscription([]))
1✔
14
        self.assertTrue(sequence_supports_subscription([0]))
1✔
15

16
    def test_supports_mapping(self):
1✔
17
        self.assertFalse(sequence_supports_subscription({}))
1✔
18
        self.assertFalse(sequence_supports_subscription({0: 0}))
1✔
19
        self.assertFalse(sequence_supports_subscription({0: 0, None: None}))
1✔
20

21
    def test_supports_iter(self):
1✔
22
        self.assertFalse(sequence_supports_subscription((i for i in range(0))))
1✔
23
        self.assertFalse(sequence_supports_subscription((i for i in range(1))))
1✔
24

25
    def test_supports_SequenceFromIter(self):
1✔
26
        S = SequenceFromIter
1✔
27
        self.assertTrue(
1✔
28
            sequence_supports_subscription(S((i for i in range(0)))))
29
        self.assertTrue(
1✔
30
            sequence_supports_subscription(S((i for i in range(1)))))
31

32
    def test_supports_RuntimeError(self):
1✔
33
        # check that ``ZTUtils.Lazy.Lazy`` is recognized
34
        class RTSequence(list):
1✔
35
            def __getitem__(self, idx):
1✔
NEW
36
                if not isinstance(idx, int):
×
NEW
37
                    raise RuntimeError
×
38

39
        s = RTSequence(i for i in range(0))
1✔
40
        self.assertTrue(sequence_supports_subscription(s))
1✔
41
        s = RTSequence(i for i in range(2))
1✔
42
        self.assertTrue(sequence_supports_subscription(s))
1✔
43

44
    def test_ensure_sequence(self):
1✔
45
        s = []
1✔
46
        self.assertIs(s, sequence_ensure_subscription(s))
1✔
47

48
    def test_ensure_iter(self):
1✔
49
        self.assertIsInstance(
1✔
50
            sequence_ensure_subscription(i for i in range(0)),
51
            SequenceFromIter)
52

53
    def test_FromIter(self):
1✔
54
        S = SequenceFromIter
1✔
55
        with self.assertRaises(IndexError):
1✔
56
            S(i for i in range(0))[0]
1✔
57
        s = S(i for i in range(2))
1✔
58
        with self.assertRaises(IndexError):
1✔
59
            s[-1]
1✔
60
        self.assertEqual(s[0], 0)
1✔
61
        self.assertEqual(s[0], 0)  # ensure nothing bad happens
1✔
62
        self.assertEqual(s[1], 1)
1✔
63
        with self.assertRaises(IndexError):
1✔
64
            s[2]
1✔
65
        self.assertEqual(list(s), [0, 1])
1✔
66
        self.assertEqual(len(s), 2)
1✔
67
        self.assertEqual(len(S(i for i in range(2))), 2)
1✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc