def test_tags_heterogeneous(self):
     tagged = taggable.TaggableSequence('tag this string')
     tagged.tag_at(0, 2, 'POS', 'VERB')
     tagged.tag_at(0, 2, 'SENTIMENT', 'NEUTRAL')
     self.assertEqual(1, len(tagged.tags('POS')))
     self.assertEqual(1, len(tagged.tags('SENTIMENT')))
     self.assertSequenceEqual(['POS', 'SENTIMENT'], sorted(tagged.tag_names()))
 def test_tags_at_multiple_overlapping(self):
     tagged = taggable.TaggableSequence('tag this string')
     tagged.tag_at(0, 2, 'POS', 'VERB')
     tagged.tag_at(0, 2, 'TOKEN', 'WORD')
     self.assertEqual(2, len(tagged.tags_at(0)))
     self.assertEqual(
         set([taggable.TaggedSegment(0, 2, 'POS', 'VERB'), taggable.TaggedSegment(0, 2, 'TOKEN', 'WORD')]),
         set(tagged.tags_at(0))
     )
    def test_tags_at_multiple_non_overlapping(self):
        tagged = taggable.TaggableSequence('tag this string')
        tagged.tag_at(0, 2, 'POS', 'VERB')
        tagged.tag_at(4, 7, 'TOKEN', 'WORD')

        self.assertEqual(1, len(tagged.tags_at(0)))
        self.assertEqual(1, len(tagged.tags_at(2)))
        self.assertEqual([taggable.TaggedSegment(0, 2, 'POS', 'VERB')], tagged.tags_at(1))

        self.assertEqual(0, len(tagged.tags_at(3)))

        self.assertEqual(1, len(tagged.tags_at(4)))
        self.assertEqual(1, len(tagged.tags_at(7)))
        self.assertEqual([taggable.TaggedSegment(4, 7, 'TOKEN', 'WORD')], tagged.tags_at(5))

        self.assertEqual(0, len(tagged.tags_at(8)))
 def test_tags_at_single(self):
     tagged = taggable.TaggableSequence('tag this string')
     tagged.tag_at(0, 2, 'POS', 'VERB')
     self.assertEqual(1, len(tagged.tags_at(0)))
     self.assertEqual(taggable.TaggedSegment(0, 2, 'POS', 'VERB'), tagged.tags_at(0)[0])
 def test_constructor_accepts_string(self):
     tagged = taggable.TaggableSequence('Just a string')
     self.assertEqual('Just a string', tagged.sequence)
     self.assertEqual(0, len(tagged.tag_names()))
 def test_tags_none(self):
     tagged = taggable.TaggableSequence([])
     self.assertIsNone(tagged.tags('TIME'))
 def test_tags_two(self):
     tagged = taggable.TaggableSequence('tag this string')
     tagged.tag_at(0, 2, 'POS', 'VERB')
     tagged.tag_at(9, 14, 'POS', 'NOUN')
     self.assertEqual(2, len(tagged.tags('POS')))
     self.assertSequenceEqual(['POS'], list(tagged.tag_names()))
 def test_tag(self):
     tagged = taggable.TaggableSequence('Run')
     tagged.tag('POS', 'VERB')
     self.assertEqual(['POS'], list(tagged.tag_names()))
     self.assertSequenceEqual([taggable.TaggedSegment(0, 2, 'POS', 'VERB')], tagged.tags('POS'))
 def test_getitem(self):
     tagged = taggable.TaggableSequence([1, 2, 3])
     self.assertEqual(2, tagged[1])
 def test_len(self):
     tagged = taggable.TaggableSequence([1, 2, 3])
     self.assertEqual(3, len(tagged))
 def test_iteration(self):
     tagged = taggable.TaggableSequence('tag this string')
     tagged.tag_at(0, 2, 'POS', 'VERB')
     tagged.tag_at(4, 7, 'TOKEN', 'WORD')
     values = [tag.tag for tag in tagged]
     self.assertSequenceEqual(['VERB', 'WORD'], sorted(values))
 def test_constructor_accepts_list(self):
     tagged = taggable.TaggableSequence([1, 2, 3])
     self.assertEqual([1, 2, 3], tagged.sequence)
     self.assertEqual(0, len(tagged.tag_names()))