def test_init(self):
        sentence_list = [Sentence([BasicWord('hi')]), Sentence([BasicWord('ho')])]
        tags = Tags([StatusTag.RAW])

        paragraph = Paragraph(sentence_list, tags)
        self.assertEqual(paragraph.tags, tags)
        self.assertEqual(paragraph.sentence_list(), sentence_list)
        self.assertIsNot(paragraph.tags, tags)
        self.assertIsNot(paragraph.sentence_list(), sentence_list)

        old_sentence_list = paragraph.sentence_list()
        sentence_list[0] = Sentence([BasicWord('yo')])
        self.assertEqual(paragraph.sentence_list(), old_sentence_list)
        self.assertNotEqual(paragraph.sentence_list(), sentence_list)
    def test_init_reverts_countable_nouns_and_removes_tag(self):
        original_sentences = [
            Sentence([
                Noun('x').plural(),
                Noun('y'),
                Noun.uncountable_noun('z'),
                Noun.proper_noun('A', plural=True),
                Noun.uncountable_noun('q').definite()
            ])
        ]
        original_tags = Tags([StatusTag.HAS_PLURALS, StatusTag.RAW])
        original_paragraph = Paragraph(original_sentences, original_tags)
        pa = PluralsAssignment(original_paragraph)

        self.assertEqual(original_paragraph.sentence_list(),
                         original_sentences)
        self.assertEqual(original_paragraph.tags, original_tags)

        expected = [
            Sentence([
                Noun('x'),
                Noun('y'),
                Noun.uncountable_noun('z'),
                Noun.proper_noun('A', plural=True),
                Noun.uncountable_noun('q').definite()
            ])
        ]
        self.assertEqual(pa.raw.sentence_list(), expected)
        self.assertEqual(pa.raw.tags, Tags([StatusTag.RAW]))
    def test_set(self):
        sentences = [Sentence([BasicWord('hi'), BasicWord('there')]), Sentence([BasicWord('ho')])]
        tags = Tags([StatusTag.NOUN_ERRORS])
        paragraph = Paragraph(sentences, tags)
        new_paragraph = paragraph.set(0, 1, BasicWord('new'))

        self.assertEqual(paragraph.sentence_list(), sentences)
        self.assertEqual(paragraph.tags, tags)

        expected = [Sentence([BasicWord('hi'), BasicWord('new')]), Sentence([BasicWord('ho')])]
        self.assertEqual(new_paragraph.sentence_list(), expected)
        self.assertEqual(new_paragraph.tags, tags)
 def test_init_empty(self):
     paragraph = Paragraph([])
     self.assertEqual(paragraph.tags, Tags())
     self.assertEqual(paragraph.sentence_list(), [])