def test_display_document_doc(self):
        disp_type = DisplayDocument.Document
        text = "Human machine interface for lab abc computer applications." \
               " A survey of user opinion of computer system response time." \
               "\nThe EPS user interface management system."
        new_text = DisplayDocument(disp_type)(text, [])
        self.assertEqual(new_text, text)

        new_text = DisplayDocument(disp_type)(text, [(0, 58)])
        text1 = "<mark data-markjs='true'>Human machine interface for lab " \
                "abc computer applications.</mark>" \
                " A survey of user opinion of computer system response time." \
                "\nThe EPS user interface management system."
        self.assertEqual(new_text, text1)

        new_text = DisplayDocument(disp_type)(text, [(118, 159)])
        text1 = "Human machine interface for lab abc" \
                " computer applications." \
                " A survey of user opinion of computer system response time." \
                "\n<mark data-markjs='true'>The EPS user interface " \
                "management system.</mark>"
        self.assertEqual(new_text, text1)

        new_text = DisplayDocument(disp_type)(text, [(0, 58), (118, 159)])
        text1 = "<mark data-markjs='true'>Human machine interface for lab " \
                "abc computer applications.</mark>" \
                " A survey of user opinion of computer system response time." \
                "\n<mark data-markjs='true'>The EPS user interface " \
                "management system.</mark>"
        self.assertEqual(new_text, text1)
 def test_tag_text(self):
     text = "Human machine interface for lab abc computer applications." \
            " A survey of user opinion of computer system response time." \
            "\nThe EPS user interface management system."
     matches = [(0, 58), (118, 159)]
     tagged = DisplayDocument._tag_text(text, matches)
     text = "<mark data-markjs='true'>Human machine interface for lab abc" \
            " computer applications.</mark>" \
            " A survey of user opinion of computer system response time." \
            "\n<mark data-markjs='true'>The EPS user interface management" \
            " system.</mark>"
     self.assertEqual(tagged, text)
    def test_purge_consecutive(self):
        collection = ["...", "...", "foo", "...", "...", "..."]
        purged = DisplayDocument._purge(collection)
        self.assertEqual(purged, ["...", "foo", "..."])

        collection = ["...", "...", "foo", "foo", "...", "..."]
        purged = DisplayDocument._purge(collection)
        self.assertEqual(purged, ["...", "foo", "foo", "..."])

        collection = ["foo", "...", "...", "...", "..."]
        purged = DisplayDocument._purge(collection)
        self.assertEqual(purged, ["foo", "..."])

        collection = ["...", "...", "...", "...", "foo"]
        purged = DisplayDocument._purge(collection)
        self.assertEqual(purged, ["...", "foo"])

        collection = [
            "...", "...", "...", "foo", "...", "...", "...", "bar", "...",
            "..."
        ]
        purged = DisplayDocument._purge(collection)
        self.assertEqual(purged, ["...", "foo", "...", "bar", "..."])
    def test_display_document_section(self):
        disp_type = DisplayDocument.Section
        text = "Human machine interface for lab abc computer applications." \
               " A survey of user opinion of computer system response time." \
               "\nThe EPS user interface management system."
        new_text = DisplayDocument(disp_type)(text, [])
        self.assertEqual(new_text, "...")

        new_text = DisplayDocument(disp_type)(text, [(0, 58)])
        text1 = "<mark data-markjs='true'>Human machine interface for lab " \
                "abc computer applications.</mark>" \
                " A survey of user opinion of computer system response time." \
                "\n..."
        self.assertEqual(new_text, text1)

        new_text = DisplayDocument(disp_type)(text, [(59, 117)])
        text1 = "Human machine interface for lab abc computer applications. " \
                "<mark data-markjs='true'>A survey of user opinion of " \
                "computer system response time.</mark>\n..."
        self.assertEqual(new_text, text1)

        new_text = DisplayDocument(disp_type)(text, [(118, 159)])
        text1 = "...\n<mark data-markjs='true'>The EPS user interface " \
                "management system.</mark>"
        self.assertEqual(new_text, text1)

        new_text = DisplayDocument(disp_type)(text, [(0, 58), (59, 117)])
        text1 = "<mark data-markjs='true'>Human machine interface " \
                "for lab abc computer applications.</mark> " \
                "<mark data-markjs='true'>A survey of user opinion of " \
                "computer system response time.</mark>\n..."
        self.assertEqual(new_text, text1)

        new_text = DisplayDocument(disp_type)(text, [(0, 58), (118, 159)])
        text1 = "<mark data-markjs='true'>Human machine interface for lab " \
                "abc computer applications.</mark>" \
                " A survey of user opinion of computer system response time." \
                "\n<mark data-markjs='true'>The EPS user interface " \
                "management system.</mark>"
        self.assertEqual(new_text, text1)

        new_text = DisplayDocument(disp_type)(text, [(59, 117), (118, 159)])
        text1 = "Human machine interface for lab abc computer applications. " \
                "<mark data-markjs='true'>A survey of user opinion of " \
                "computer system response time.</mark>" \
                "\n<mark data-markjs='true'>The EPS user interface " \
                "management system.</mark>"
        self.assertEqual(new_text, text1)

        new_text = DisplayDocument(disp_type)(text, [(0, 58), (59, 117),
                                                     (118, 159)])
        text1 = "<mark data-markjs='true'>Human machine interface " \
                "for lab abc computer applications.</mark> " \
                "<mark data-markjs='true'>A survey of user opinion of " \
                "computer system response time.</mark>" \
                "\n<mark data-markjs='true'>The EPS user interface " \
                "management system.</mark>"
        self.assertEqual(new_text, text1)

        text = "Human machine interface for lab abc computer applications." \
               " A survey of user opinion of computer system response time." \
               "\n\nThe EPS user interface management system."

        new_text = DisplayDocument(disp_type)(text, [(0, 58), (59, 117),
                                                     (119, 160)])
        text1 = "<mark data-markjs='true'>Human machine interface " \
                "for lab abc computer applications.</mark> " \
                "<mark data-markjs='true'>A survey of user opinion of " \
                "computer system response time.</mark>" \
                "\n<mark data-markjs='true'>The EPS user interface " \
                "management system.</mark>"
        self.assertEqual(new_text, text1)

        text = "Human machine interface for lab abc computer applications." \
               " A survey of user opinion of computer system response time:" \
               "\n - survey of user opinion" \
               "\n - survey of user opinion" \
               "\nThe EPS user interface management system."

        new_text = DisplayDocument(disp_type)(text, [(0, 58), (59, 169)])
        text1 = "<mark data-markjs='true'>Human machine interface " \
                "for lab abc computer applications.</mark> " \
                "<mark data-markjs='true'>A survey of user opinion of" \
                " computer system response time:" \
                "\n - survey of user opinion" \
                "\n - survey of user opinion</mark>\n..."
        self.assertEqual(new_text, text1)