Skip to content

test_epubchooser

Test the functionality in epubchooser.

TestRangeHandler

Bases: unittest.TestCase

Test the MetadataHandler class.

Source code in /home/anders/projects/CorpusTools/corpustools/test/test_epubchooser.py
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
class TestRangeHandler(unittest.TestCase):
    """Test the MetadataHandler class."""

    def setUp(self):
        self.rangehandler = epubchooser.RangeHandler()
        self.rangehandler.xpaths = [
            ".//body/div",
            ".//body/div/div",
            ".//body/div/div/p",
            ".//body/div/div/p[2]",
            ".//body/div/div[2]",
            ".//body/div[2]",
            ".//body/div[2]/div",
            ".//body/div[2]/div/p",
            ".//body/div[2]/div/p[2]",
        ]

    def test1(self):
        """Check that an exception is raised when first xpath is empty."""
        with self.assertRaises(KeyError):
            self.rangehandler.check_range(("", ""))

    def test2(self):
        """Check that an exception is raised when first xpath is invalid."""
        with self.assertRaises(KeyError):
            self.rangehandler.check_range((".//body/div/div[3]", ""))

    def test3(self):
        """Check that an exception is raised when second xpath is invalid."""
        with self.assertRaises(KeyError):
            self.rangehandler.check_range((".//body/div/div", ".//body/div/div[3]"))

    def test4(self):
        """Valid first part, empty second part is a valid pair."""
        self.assertEqual(
            self.rangehandler.check_range((self.rangehandler.xpaths[0], "")), None
        )

    def test5(self):
        """Valid first part, valid second part is a valid pair."""
        self.assertEqual(
            self.rangehandler.check_range(
                (self.rangehandler.xpaths[0], self.rangehandler.xpaths[1])
            ),
            None,
        )

    def test6(self):
        """First part of new range is within existing ranges."""
        self.rangehandler._ranges.add(
            (
                self.rangehandler.xpaths.index(".//body/div/div/p"),
                self.rangehandler.xpaths.index(".//body/div[2]/div"),
            )
        )

        new_range = ((".//body/div/div/p[2]"), (".//body/div[2]/div"))
        with self.assertRaises(IndexError):
            self.rangehandler.check_overlap(new_range)

    def test7(self):
        """Second part of new range is within existing ranges."""
        self.rangehandler._ranges.add(
            (
                self.rangehandler.xpaths.index(".//body/div/div/p"),
                self.rangehandler.xpaths.index(".//body/div[2]/div"),
            )
        )

        new_range = ((".//body/div[2]/div"), (".//body/div/div/p[2]"))
        with self.assertRaises(IndexError):
            self.rangehandler.check_overlap(new_range)

    def test8(self):
        """First part of new range is equal to first part of existing range."""
        self.rangehandler._ranges.add(
            (
                self.rangehandler.xpaths.index(".//body/div/div/p"),
                self.rangehandler.xpaths.index(".//body/div[2]/div"),
            )
        )

        new_range = ((".//body/div/div/p"), (""))
        with self.assertRaises(IndexError):
            self.rangehandler.check_overlap(new_range)

    def test9(self):
        """Check for valid range.

        Second part of new range is equal to first part of existing range.
        """
        self.rangehandler._ranges.add(
            (
                self.rangehandler.xpaths.index(".//body/div/div/p"),
                self.rangehandler.xpaths.index(".//body/div[2]/div"),
            )
        )
        new_range = ((".//body/div"), (".//body/div/div/p"))
        with self.assertRaises(IndexError):
            self.rangehandler.check_overlap(new_range)

    def test10(self):
        """Check that a range is reversed if needed."""
        self.rangehandler.add_range(
            (self.rangehandler.xpaths[1], self.rangehandler.xpaths[0])
        )
        want = set()
        want.add(
            (
                self.rangehandler.xpaths.index(self.rangehandler.xpaths[0]),
                self.rangehandler.xpaths.index(self.rangehandler.xpaths[1]),
            )
        )
        self.assertEqual(self.rangehandler._ranges, want)

    def test11(self):
        """Check that ranges are returned reversed and as text."""
        self.rangehandler.add_range(
            (self.rangehandler.xpaths[4], self.rangehandler.xpaths[6])
        )
        want = "{};{},{};{}".format(
            self.rangehandler.xpaths[4],
            self.rangehandler.xpaths[6],
            self.rangehandler.xpaths[0],
            self.rangehandler.xpaths[1],
        )
        self.assertEqual(self.rangehandler.ranges, want)

    def test12(self):
        """Check that empty second part of range works as exptected."""
        self.rangehandler.add_range((self.rangehandler.xpaths[7], ""))
        want = "{};,{};{},{};{}".format(
            self.rangehandler.xpaths[7],
            self.rangehandler.xpaths[4],
            self.rangehandler.xpaths[6],
            self.rangehandler.xpaths[0],
            self.rangehandler.xpaths[1],
        )
        self.assertEqual(self.rangehandler.ranges, want)

test1()

Check that an exception is raised when first xpath is empty.

Source code in /home/anders/projects/CorpusTools/corpustools/test/test_epubchooser.py
43
44
45
46
def test1(self):
    """Check that an exception is raised when first xpath is empty."""
    with self.assertRaises(KeyError):
        self.rangehandler.check_range(("", ""))

test10()

Check that a range is reversed if needed.

Source code in /home/anders/projects/CorpusTools/corpustools/test/test_epubchooser.py
127
128
129
130
131
132
133
134
135
136
137
138
139
def test10(self):
    """Check that a range is reversed if needed."""
    self.rangehandler.add_range(
        (self.rangehandler.xpaths[1], self.rangehandler.xpaths[0])
    )
    want = set()
    want.add(
        (
            self.rangehandler.xpaths.index(self.rangehandler.xpaths[0]),
            self.rangehandler.xpaths.index(self.rangehandler.xpaths[1]),
        )
    )
    self.assertEqual(self.rangehandler._ranges, want)

test11()

Check that ranges are returned reversed and as text.

Source code in /home/anders/projects/CorpusTools/corpustools/test/test_epubchooser.py
141
142
143
144
145
146
147
148
149
150
151
152
def test11(self):
    """Check that ranges are returned reversed and as text."""
    self.rangehandler.add_range(
        (self.rangehandler.xpaths[4], self.rangehandler.xpaths[6])
    )
    want = "{};{},{};{}".format(
        self.rangehandler.xpaths[4],
        self.rangehandler.xpaths[6],
        self.rangehandler.xpaths[0],
        self.rangehandler.xpaths[1],
    )
    self.assertEqual(self.rangehandler.ranges, want)

test12()

Check that empty second part of range works as exptected.

Source code in /home/anders/projects/CorpusTools/corpustools/test/test_epubchooser.py
154
155
156
157
158
159
160
161
162
163
164
def test12(self):
    """Check that empty second part of range works as exptected."""
    self.rangehandler.add_range((self.rangehandler.xpaths[7], ""))
    want = "{};,{};{},{};{}".format(
        self.rangehandler.xpaths[7],
        self.rangehandler.xpaths[4],
        self.rangehandler.xpaths[6],
        self.rangehandler.xpaths[0],
        self.rangehandler.xpaths[1],
    )
    self.assertEqual(self.rangehandler.ranges, want)

test2()

Check that an exception is raised when first xpath is invalid.

Source code in /home/anders/projects/CorpusTools/corpustools/test/test_epubchooser.py
48
49
50
51
def test2(self):
    """Check that an exception is raised when first xpath is invalid."""
    with self.assertRaises(KeyError):
        self.rangehandler.check_range((".//body/div/div[3]", ""))

test3()

Check that an exception is raised when second xpath is invalid.

Source code in /home/anders/projects/CorpusTools/corpustools/test/test_epubchooser.py
53
54
55
56
def test3(self):
    """Check that an exception is raised when second xpath is invalid."""
    with self.assertRaises(KeyError):
        self.rangehandler.check_range((".//body/div/div", ".//body/div/div[3]"))

test4()

Valid first part, empty second part is a valid pair.

Source code in /home/anders/projects/CorpusTools/corpustools/test/test_epubchooser.py
58
59
60
61
62
def test4(self):
    """Valid first part, empty second part is a valid pair."""
    self.assertEqual(
        self.rangehandler.check_range((self.rangehandler.xpaths[0], "")), None
    )

test5()

Valid first part, valid second part is a valid pair.

Source code in /home/anders/projects/CorpusTools/corpustools/test/test_epubchooser.py
64
65
66
67
68
69
70
71
def test5(self):
    """Valid first part, valid second part is a valid pair."""
    self.assertEqual(
        self.rangehandler.check_range(
            (self.rangehandler.xpaths[0], self.rangehandler.xpaths[1])
        ),
        None,
    )

test6()

First part of new range is within existing ranges.

Source code in /home/anders/projects/CorpusTools/corpustools/test/test_epubchooser.py
73
74
75
76
77
78
79
80
81
82
83
84
def test6(self):
    """First part of new range is within existing ranges."""
    self.rangehandler._ranges.add(
        (
            self.rangehandler.xpaths.index(".//body/div/div/p"),
            self.rangehandler.xpaths.index(".//body/div[2]/div"),
        )
    )

    new_range = ((".//body/div/div/p[2]"), (".//body/div[2]/div"))
    with self.assertRaises(IndexError):
        self.rangehandler.check_overlap(new_range)

test7()

Second part of new range is within existing ranges.

Source code in /home/anders/projects/CorpusTools/corpustools/test/test_epubchooser.py
86
87
88
89
90
91
92
93
94
95
96
97
def test7(self):
    """Second part of new range is within existing ranges."""
    self.rangehandler._ranges.add(
        (
            self.rangehandler.xpaths.index(".//body/div/div/p"),
            self.rangehandler.xpaths.index(".//body/div[2]/div"),
        )
    )

    new_range = ((".//body/div[2]/div"), (".//body/div/div/p[2]"))
    with self.assertRaises(IndexError):
        self.rangehandler.check_overlap(new_range)

test8()

First part of new range is equal to first part of existing range.

Source code in /home/anders/projects/CorpusTools/corpustools/test/test_epubchooser.py
 99
100
101
102
103
104
105
106
107
108
109
110
def test8(self):
    """First part of new range is equal to first part of existing range."""
    self.rangehandler._ranges.add(
        (
            self.rangehandler.xpaths.index(".//body/div/div/p"),
            self.rangehandler.xpaths.index(".//body/div[2]/div"),
        )
    )

    new_range = ((".//body/div/div/p"), (""))
    with self.assertRaises(IndexError):
        self.rangehandler.check_overlap(new_range)

test9()

Check for valid range.

Second part of new range is equal to first part of existing range.

Source code in /home/anders/projects/CorpusTools/corpustools/test/test_epubchooser.py
112
113
114
115
116
117
118
119
120
121
122
123
124
125
def test9(self):
    """Check for valid range.

    Second part of new range is equal to first part of existing range.
    """
    self.rangehandler._ranges.add(
        (
            self.rangehandler.xpaths.index(".//body/div/div/p"),
            self.rangehandler.xpaths.index(".//body/div[2]/div"),
        )
    )
    new_range = ((".//body/div"), (".//body/div/div/p"))
    with self.assertRaises(IndexError):
        self.rangehandler.check_overlap(new_range)