Exemple #1
0
    def test_get_actions(self):
        h = TextHistory()
        h.insert('a')
        h.insert('bc')
        h.replace('B', pos=1)
        h.delete(pos=0, length=1)
        self.assertEqual('Bc', h.text)

        actions = h.get_actions(1)

        self.assertEqual(3, len(actions))
        insert, replace, delete = actions
        self.assertIsInstance(insert, InsertAction)
        self.assertIsInstance(replace, ReplaceAction)
        self.assertIsInstance(delete, DeleteAction)

        # insert
        self.assertEqual(1, insert.from_version)
        self.assertEqual(2, insert.to_version)
        self.assertEqual('bc', insert.text)
        self.assertEqual(1, insert.pos)

        # replace
        self.assertEqual(2, replace.from_version)
        self.assertEqual(3, replace.to_version)
        self.assertEqual('B', replace.text)
        self.assertEqual(1, replace.pos)

        # delete
        self.assertEqual(3, delete.from_version)
        self.assertEqual(4, delete.to_version)
        self.assertEqual(0, delete.pos)
        self.assertEqual(1, delete.length)
Exemple #2
0
 def test_optimized_delete(self):
     h = TextHistory()
     h.insert('ABCCDEEE')
     h.delete(2, 2)
     h.delete(2, 3)
     self.assertEqual('ABE', h.text)
     self.assertEqual(2, len(h.get_actions()))
Exemple #3
0
    def test_delete(self):
        h = TextHistory()
        self.assertEqual(1, h.insert('abc xyz'))

        self.assertEqual(2, h.delete(pos=1, length=2))
        self.assertEqual('a xyz', h.text)
        self.assertEqual(2, h.version)

        self.assertEqual(3, h.delete(pos=3, length=0))
        self.assertEqual('a xyz', h.text)
        self.assertEqual(3, h.version)
Exemple #4
0
    def test_optimize_delete(self):
        h = TextHistory()
        h.insert('abcdefg')
        h.delete(2, 2)
        h.delete(2, 1)
        actions = h.get_actions()

        self.assertEqual(2, len(h.get_actions()))
        insert, delete = actions
        self.assertIsInstance(insert, InsertAction)
        self.assertIsInstance(delete, DeleteAction)
Exemple #5
0
    def test_optimise_del(self):
        h = TextHistory()
        h.insert('abcdefgh')
        h.delete(2, 2)
        h.delete(2, 3)

        actions = h.get_actions()
        self.assertEqual(2, len(actions))
        th = TextHistory()
        for act in actions:
            th.action(act)
        self.assertEqual(h.text, th.text)
 def test_delete_opt(self):
     h = TextHistory()
     h.insert('a1b2c3d4e5f6g7h8')
     self.assertEqual('a1b2c3d4e5f6g7h8', h.text)
     h.delete(pos=3, length=2)
     self.assertEqual('a1b3d4e5f6g7h8', h.text)
     h.delete(pos=3, length=6)
     self.assertEqual('a1b6g7h8', h.text)
     actions = h.get_actions(1)
     self.assertEqual(1, len(actions))
     action = actions[0]
     self.assertIsInstance(action, DeleteAction)
     opt_value = DeleteAction(3, 8, 1, 3)
     self.assertEqual(action.__dict__, opt_value.__dict__)
Exemple #7
0
    def test_get_actions_insert_delete_optimization(self):
        h = TextHistory()
        h.insert(text="abdc")
        h.delete(pos=1, length=2)

        self.assertEqual(h.text, "ac")

        all_actions = h.get_actions()

        self.assertEqual(len(all_actions), 1)

        insert = all_actions[0]

        self.assertIsInstance(insert, InsertAction)
        self.assertEqual(insert.text, "ac")
Exemple #8
0
    def test_get_optimized_actions__merge_delete(self):
        h = TextHistory()
        h.insert('0123456789')
        h.delete(3, 2)
        h.delete(3, 3)
        h.delete(2, 1)

        self.assertEqual('0189', h.text)

        actions = h.get_actions(optimize=True)

        self.assertEqual(2, len(actions))
        insert, delete = actions
        self.assertIsInstance(insert, InsertAction)
        self.assertIsInstance(delete, DeleteAction)
        self.assertEqual(4, delete.to_version)
        self.assertEqual(1, delete.from_version)
        self.assertEqual(2, delete.pos)
        self.assertEqual(6, delete.length)
    def test_get_actions__optimyze_1(self):
        h = TextHistory()
        h.insert('a')
        h.insert('b')
        h.delete(0, 1)
        h.delete(0, 1)
        h.replace("abc")
        actions = h.get_actions()
        self.assertEqual(3, len(actions))
        insert, delete, replace = actions

        self.assertIsInstance(insert, InsertAction)
        self.assertIsInstance(delete, DeleteAction)
        self.assertIsInstance(replace, ReplaceAction)

        # insert
        self.assertEqual(0, insert.from_version)
        self.assertEqual(2, insert.to_version)
        self.assertEqual("ab", insert.text)

        #delete
        self.assertEqual(2, delete.from_version)
        self.assertEqual(4, delete.to_version)
        self.assertEqual(2, delete.length)
Exemple #10
0
    def test_get_actions_insert_optimization(self):
        h = TextHistory()
        h.insert(text="abc")
        h.insert(text="d")
        h.delete(pos=0, length=2)
        h.insert(text="abdc")
        h.insert(text="d")

        all_actions = h.get_actions()

        self.assertEqual(3, len(all_actions))

        insert1, delete, insert2 = all_actions

        self.assertIsInstance(insert1, InsertAction)
        self.assertIsInstance(delete, DeleteAction)
        self.assertIsInstance(insert2, InsertAction)

        self.assertEqual(insert1.text, "abcd")
        self.assertEqual(insert2.text, "abdcd")
        self.assertEqual(insert1.pos, 0)
        self.assertEqual(insert2.pos, 2)

        self.assertEqual(h.text, "cdabdcd")
Exemple #11
0
    def test_delete__bad(self):
        h = TextHistory()
        self.assertEqual(1, h.insert('abc'))

        with self.assertRaises(ValueError):
            h.delete(pos=10, length=2)

        with self.assertRaises(ValueError):
            h.delete(pos=1, length=3)

        with self.assertRaises(ValueError):
            h.delete(pos=-1, length=2)
 def test_delete(self):
     h = TextHistory()
     h.insert('abcdefgh')
     h.delete(pos=1, length=2)
     h.delete(pos=1, length=1)