def testUpdateCharMeta(self): doc = TextDocument() doc.open(fixtures.get("basic_nonempty_file.txt")) doc.updateCharMeta( (1, 3), { "foo" : ["a", "a"], "bar" : ['b', None, 'b'], } )
def testSaveUnnamed(self): doc = TextDocument() self.assertRaises(TextDocument.MissingFilenameException, lambda: doc.save()) path = fixtures.tempFile("testSaveUnnamed") doc.saveAs(path) self.assertTrue(os.path.exists(path)) self.assertEqual(doc.filename(), path)
def testDocumentMeta(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), 'r') as f: doc.read(f) doc.createDocumentMetaInfo("Hello") self.assertEqual(doc.documentMetaInfo("Hello").data(), None) doc.createDocumentMetaInfo("Hello2", 2) self.assertEqual(doc.documentMetaInfo("Hello2").data(), 2)
def testDeleteLineMeta(self): doc = TextDocument() doc.open(fixtures.get("basic_nonempty_file.txt")) doc.updateLineMeta(1, {"hello": 5}) self.assertEqual(doc.lineMeta(1)["hello"], 5) doc.deleteLineMeta(1, ["hello"]) self.assertNotIn("hello", doc.lineMeta(1)) self.assertRaises(IndexError, lambda : doc.deleteLineMeta(20, "hello"))
def testDeleteDocumentMeta(self): doc = TextDocument() doc.open(fixtures.get("basic_nonempty_file.txt")) doc.updateDocumentMeta({"Hello": 5}) self.assertEqual(doc.documentMeta()["Hello"], 5) doc.deleteDocumentMeta("Hello") self.assertNotIn("Hello", doc.documentMeta())
def testLineLength(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), 'r') as f: doc.read(f) self.assertEqual(doc.lineLength(1), 6) self.assertEqual(doc.lineLength(2), 13) doc = TextDocument() with open(fixtures.get("empty_file.txt"), 'r') as f: doc.read(f) self.assertEqual(doc.lineLength(1), 1)
def testReplaceChars(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), 'r') as f: doc.read(f) doc.replaceChars((1, 3), 1, "hello") self.assertEqual(doc.lineText(1), 'hehellolo\n') doc.replaceChars((1, 1), 1, "c") self.assertEqual(doc.lineText(1), 'cehellolo\n')
def testSameObject(self): doc = TextDocument() doc.createLineMetaInfo("whatever") doc.createLineMetaInfo("whatever2") self.assertEqual(doc.lineMetaInfo("whatever"), doc.lineMetaInfo("whatever")) self.assertNotEqual(doc.lineMetaInfo("whatever"), doc.lineMetaInfo("whatever2"))
def testBasic(self): doc = TextDocument() doc.createLineMetaInfo("whatever") meta_info = doc.lineMetaInfo("whatever") self.assertEqual(meta_info.document, doc) self.assertEqual(meta_info.meta_type, "whatever") self.assertEqual(meta_info.numLines(), 1) self.assertEqual(meta_info.data(1), None) meta_info.setData("hello", 1) self.assertEqual(meta_info.data(1), "hello")
def testBasic(self): doc = TextDocument() doc.createLineMetaInfo("whatever") meta_info = doc.lineMetaInfo("whatever") self.assertEqual(meta_info.document, doc) self.assertEqual(meta_info.meta_type, "whatever") self.assertEqual(meta_info.numLines(), 1) self.assertEqual(meta_info.data(1), None) meta_info.setData("hello",1) self.assertEqual(meta_info.data(1), "hello")
def testCharMeta(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), 'r') as f: doc.read(f) doc.updateCharMeta((1, 1), {"Hello": [1]}) self.assertEqual(len(doc.charMeta((1, 1))["Hello"]), len(doc.lineText(1))) self.assertEqual( doc.charMeta((1, 1))["Hello"], [1, None, None, None, None, None])
def testDocumentMeta(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), "r") as f: doc.read(f) doc.createDocumentMetaInfo("Hello") self.assertEqual(doc.documentMetaInfo("Hello").data(), None) doc.createDocumentMetaInfo("Hello2", 2) self.assertEqual(doc.documentMetaInfo("Hello2").data(), 2)
def testIsEmpty(self): doc = TextDocument() self.assertTrue(doc.isEmpty()) doc.insertLine(1, "hello") self.assertFalse(doc.isEmpty()) doc.deleteLine(1) self.assertTrue(doc.isEmpty())
def testReplaceChars(self): doc = TextDocument() doc.open(fixtures.get("basic_nonempty_file.txt")) doc.replaceChars( (1,3), 1, "hello") self.assertEqual(doc.lineText(1), 'hehellolo\n') doc.replaceChars( (1,1), 1, "c") self.assertEqual(doc.lineText(1), 'cehellolo\n')
def testCharMeta(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), "r") as f: doc.read(f) doc.updateCharMeta((1, 1), {"Hello": [1]}) self.assertEqual(len(doc.charMeta((1, 1))["Hello"]), len(doc.lineText(1))) self.assertEqual(doc.charMeta((1, 1))["Hello"], [1, None, None, None, None, None])
def testSetDataForLines(self): doc = TextDocument() doc.createLineMetaInfo("whatever") doc.insertLine(1, "hello") doc.insertLine(1, "hello") doc.insertLine(1, "hello") meta_info = doc.lineMetaInfo("whatever") meta_info.setDataForLines({2: "damn"}) self.assertEqual(meta_info.data(), [None, "damn", None, None])
def testReplaceChars(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), "r") as f: doc.read(f) doc.replaceChars((1, 3), 1, "hello") self.assertEqual(doc.lineText(1), "hehellolo\n") doc.replaceChars((1, 1), 1, "c") self.assertEqual(doc.lineText(1), "cehellolo\n")
def testLastModified(self): doc = TextDocument() doc.open(fixtures.get("basic_nonempty_file.txt")) last_modified = doc.lastModified() self.assertEqual(doc.lastModified(), last_modified) time.sleep(0.1) doc.insertLine(1,"") self.assertNotEqual(doc.lastModified(), last_modified)
def testJoinWithNextLine2(self): doc = TextDocument() doc.open(fixtures.get("basic_nonempty_file.txt")) doc.joinWithNextLine(2) self.assertEqual(doc.lineText(1), 'hello\n') self.assertEqual(doc.lineText(2), 'how are you?\n') self.assertEqual(doc.numLines(), 2) self.assertFalse(doc.isModified())
def testUpdateLineMeta(self): doc = TextDocument() doc.open(fixtures.get("basic_nonempty_file.txt")) doc.updateLineMeta(1, {"hello": 5}) self.assertEqual(type(doc.lineMeta(1)), dict) self.assertEqual(doc.lineMeta(1)["hello"], 5) self.assertRaises(IndexError, lambda : doc.updateLineMeta(20, {}))
def testJoinWithNextLine2(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), 'r') as f: doc.read(f) doc.joinWithNextLine(2) self.assertEqual(doc.lineText(1), 'hello\n') self.assertEqual(doc.lineText(2), 'how are you?\n') self.assertEqual(doc.numLines(), 2)
def testInitFromNonEmptyFile(self): doc = TextDocument() doc.open(fixtures.get("basic_nonempty_file.txt")) self.assertFalse(doc.isEmpty()) self.assertEqual(doc.filename(), fixtures.get("basic_nonempty_file.txt")) self.assertFalse(doc.isModified()) self.assertEqual(doc.numLines(), 2) self.assertEqual(doc.documentText(), 'hello\nhow are you?\n')
def testInitFromEmptyFile(self): doc = TextDocument() doc.open(fixtures.get("empty_file.txt")) self.assertTrue(doc.isEmpty()) self.assertEqual(doc.filename(), fixtures.get("empty_file.txt")) self.assertFalse(doc.isModified()) self.assertEqual(doc.numLines(), 1) self.assertEqual(doc.documentText(), '\n')
def testLineLength(self): doc = TextDocument() doc.open(fixtures.get("basic_nonempty_file.txt")) self.assertEqual(doc.lineLength(1), 6) self.assertEqual(doc.lineLength(2), 13) doc = TextDocument() doc.open(fixtures.get("empty_file.txt")) self.assertEqual(doc.lineLength(1), 1)
def testBreakLine(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), 'r') as f: doc.read(f) doc.breakLine((1, 3)) self.assertEqual(doc.lineText(1), "he\n") self.assertEqual(doc.lineText(2), "llo\n")
def testJoinWithNextLine2(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), "r") as f: doc.read(f) doc.joinWithNextLine(2) self.assertEqual(doc.lineText(1), "hello\n") self.assertEqual(doc.lineText(2), "how are you?\n") self.assertEqual(doc.numLines(), 2)
def testInitFromNonEmptyFile(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), 'r') as f: doc.read(f) self.assertFalse(doc.isEmpty()) self.assertEqual(doc.numLines(), 2) self.assertEqual(doc.documentText(), 'hello\nhow are you?\n')
def testInitFromEmptyFile(self): doc = TextDocument() with open(fixtures.get("empty_file.txt"), "r") as f: doc.read(f) self.assertTrue(doc.isEmpty()) self.assertEqual(doc.numLines(), 1) self.assertEqual(doc.documentText(), '\n')
def testBreakLine(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), "r") as f: doc.read(f) doc.breakLine((1, 3)) self.assertEqual(doc.lineText(1), "he\n") self.assertEqual(doc.lineText(2), "llo\n")
def testLine(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), 'r') as f: doc.read(f) self.assertEqual(doc.lineText(1), 'hello\n') self.assertEqual(doc.lineText(2), 'how are you?\n') self.assertRaises(IndexError, lambda: doc.lineText(-1)) self.assertRaises(IndexError, lambda: doc.lineText(0)) self.assertRaises(IndexError, lambda: doc.lineText(5))
def testUpdateCharMeta(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), 'r') as f: doc.read(f) doc.updateCharMeta((1, 3), { "foo": ["a", "a"], "bar": ['b', None, 'b'], })
def testInitEmpty(self): doc = TextDocument() self.assertTrue(doc.isEmpty()) self.assertEqual(doc.filename(), None) self.assertFalse(doc.isModified()) self.assertEqual(doc.numLines(), 1) self.assertEqual(doc.documentText(), '\n')
def testInitFromEmptyFile(self): doc = TextDocument() with open(fixtures.get("empty_file.txt"), "r") as f: doc.read(f) self.assertTrue(doc.isEmpty()) self.assertEqual(doc.numLines(), 1) self.assertEqual(doc.documentText(), "\n")
def testInitFromNonEmptyFile(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), "r") as f: doc.read(f) self.assertFalse(doc.isEmpty()) self.assertEqual(doc.numLines(), 2) self.assertEqual(doc.documentText(), "hello\nhow are you?\n")
def testLine(self): doc = TextDocument() doc.open(fixtures.get("basic_nonempty_file.txt")) self.assertEqual(doc.lineText(1), 'hello\n') self.assertEqual(doc.lineText(2), 'how are you?\n') self.assertRaises(IndexError, lambda : doc.lineText(-1)) self.assertRaises(IndexError, lambda : doc.lineText(0)) self.assertRaises(IndexError, lambda : doc.lineText(5))
def testLine(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), "r") as f: doc.read(f) self.assertEqual(doc.lineText(1), "hello\n") self.assertEqual(doc.lineText(2), "how are you?\n") self.assertRaises(IndexError, lambda: doc.lineText(-1)) self.assertRaises(IndexError, lambda: doc.lineText(0)) self.assertRaises(IndexError, lambda: doc.lineText(5))
def testReplaceLine(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), 'r') as f: doc.read(f) doc.replaceLine(1, "babau")
def testInitEmpty(self): doc = TextDocument() self.assertTrue(doc.isEmpty()) self.assertEqual(doc.numLines(), 1) self.assertEqual(doc.documentText(), '\n')
def testHasLine(self): doc = TextDocument() doc.open(fixtures.get("basic_nonempty_file.txt")) self.assertTrue(doc.hasLine(1)) self.assertFalse(doc.hasLine(20))
def testDocumentMeta(self): doc = TextDocument() doc.open(fixtures.get("basic_nonempty_file.txt")) self.assertEqual(type(doc.documentMeta()), dict)
def createCursor(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), 'r') as f: doc.read(f) doc.createCursor()
def testInsertChars(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), 'r') as f: doc.read(f) doc.insertChars((1, 3), "babau")
def testLineMetaInfoMemento(self): doc = TextDocument() doc.createLineMetaInfo("whatever") doc.createLineMetaInfo("whatever2") meta_info1 = doc.lineMetaInfo("whatever") meta_info2 = doc.lineMetaInfo("whatever2") doc.newLineAfter(1) doc.newLine(1) meta_info1.setData("hello", 1) meta_info2.setData("byebye", 1) memento = doc.lineMemento(1) doc.deleteLine(1) self.assertEqual(doc.lineMetaInfo("whatever").data(1), None) self.assertEqual(doc.lineMetaInfo("whatever2").data(1), None) doc.insertFromMemento(1, memento) self.assertEqual(doc.lineText(1), '\n') self.assertEqual(doc.lineMetaInfo("whatever").data(1), 'hello') self.assertEqual(doc.lineMetaInfo("whatever2").data(1), 'byebye')
def testInsertLines(self): doc = TextDocument() doc.open(fixtures.get("basic_nonempty_file.txt")) doc.insertLines(2, ['foo', 'bar']) self.assertEqual(doc.numLines(), 4)
def testUpdateDocumentMeta(self): doc = TextDocument() doc.open(fixtures.get("basic_nonempty_file.txt")) doc.updateDocumentMeta({"Hello": 5}) self.assertEqual(type(doc.documentMeta()), dict) self.assertEqual(doc.documentMeta()["Hello"], 5)
def testInsertLines(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), 'r') as f: doc.read(f) doc.insertLines(2, ['foo', 'bar']) self.assertEqual(doc.numLines(), 4)
def testDeleteLines(self): doc = TextDocument() with open(fixtures.get("bigfile.py"), 'r') as f: doc.read(f) doc.deleteLines(1, 3)
def testWordAt(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), 'r') as f: doc.read(f) self.assertEqual(doc.wordAt((2, 6)), ('are', 5))
def registerCursor(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), 'r') as f: doc.read(f) cursor = TextDocumentCursor(doc)
def testChangeLineNumber(self): doc = TextDocument() doc.createLineMetaInfo("whatever") doc.createLineMetaInfo("whatever2") meta_info1 = doc.lineMetaInfo("whatever") meta_info2 = doc.lineMetaInfo("whatever2") meta_info1.setData("hello", 1) meta_info2.setData("byebye", 1) doc.newLineAfter(1) self.assertEqual(meta_info1.numLines(), 2) self.assertEqual(meta_info2.numLines(), 2) self.assertEqual(meta_info1.data(1, 2), ["hello", None]) self.assertEqual(meta_info2.data(1, 2), ["byebye", None]) doc.newLine(1) self.assertEqual(meta_info1.numLines(), 3) self.assertEqual(meta_info2.numLines(), 3) self.assertEqual(meta_info1.data(1, 3), [None, "hello", None]) self.assertEqual(meta_info2.data(1, 3), [None, "byebye", None]) doc.deleteLine(2) self.assertEqual(meta_info1.numLines(), 2) self.assertEqual(meta_info2.numLines(), 2) self.assertEqual(meta_info1.data(1, 2), [None, None]) self.assertEqual(meta_info2.data(1, 2), [None, None]) self.assertEqual(meta_info1.data(1, 1), [None]) self.assertEqual(meta_info2.data(1, 1), [None]) self.assertEqual(meta_info1.data(1), None) self.assertEqual(meta_info2.data(1), None)
def testDeleteChars(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), 'r') as f: doc.read(f) self.assertRaises(ValueError, lambda: doc.deleteChars((1, 3), -1)) d = doc.deleteChars((1, 3), 1) self.assertEqual(doc.lineText(1), 'helo\n') self.assertEqual(d[0], 'l') d = doc.deleteChars((1, 2), 100) self.assertEqual(doc.lineText(1), 'h\n') self.assertEqual(d[0], 'elo') d = doc.deleteChars((1, 2), 100) self.assertEqual(doc.lineText(1), 'h\n') self.assertEqual(d[0], '') d = doc.deleteChars((1, 1), 100) self.assertEqual(doc.lineText(1), '\n') self.assertEqual(d[0], 'h') d = doc.deleteChars((1, 1), 100) self.assertEqual(doc.lineText(1), '\n') self.assertEqual(d[0], '')
def testExtractFragment(self): doc = TextDocument() with open(fixtures.get("bigfile.py"), 'r') as f: doc.read(f) doc.createLineMetaInfo("whatever") doc.createLineMetaInfo("whatever2") fragment = doc.extractFragment(2) self.assertEqual(fragment.numLines(), 1) self.assertEqual(fragment.lineText(1), doc.lineText(2)) self.assertTrue(fragment.hasLineMetaInfo("whatever")) self.assertTrue(fragment.hasLineMetaInfo("whatever2")) fragment = doc.extractFragment(2, 3) self.assertEqual(fragment.numLines(), 3) self.assertEqual(fragment.lineText(1), doc.lineText(2)) self.assertEqual(fragment.lineText(2), doc.lineText(3)) self.assertEqual(fragment.lineText(3), doc.lineText(4)) self.assertTrue(fragment.hasLineMetaInfo("whatever")) self.assertTrue(fragment.hasLineMetaInfo("whatever2"))
def testInsertFragment(self): doc = TextDocument() with open(fixtures.get("numbers.txt"), 'r') as f: doc.read(f) doc.createLineMetaInfo("whatever") doc.createLineMetaInfo("whatever2") fragment = doc.extractFragment(2) self.assertNotEqual(fragment.lineText(1), doc.lineText(15)) doc.insertFragment(15, fragment) self.assertEqual(fragment.lineText(1), doc.lineText(15)) fragment = doc.extractFragment(2, 4) self.assertNotEqual(fragment.lineText(1), doc.lineText(10)) doc.insertFragment(10, fragment) self.assertEqual(fragment.lineText(1), doc.lineText(10)) self.assertEqual(fragment.lineText(2), doc.lineText(11)) self.assertEqual(fragment.lineText(3), doc.lineText(12)) self.assertEqual(fragment.lineText(4), doc.lineText(13))
def testChangeLineNumber(self): doc = TextDocument() doc.createLineMetaInfo("whatever") doc.createLineMetaInfo("whatever2") meta_info1 = doc.lineMetaInfo("whatever") meta_info2 = doc.lineMetaInfo("whatever2") meta_info1.setData("hello", 1) meta_info2.setData("byebye", 1) doc.newLineAfter(1) self.assertEqual(meta_info1.numLines(), 2) self.assertEqual(meta_info2.numLines(), 2) self.assertEqual(meta_info1.data(1,2), ["hello", None]) self.assertEqual(meta_info2.data(1,2), ["byebye", None]) doc.newLine(1) self.assertEqual(meta_info1.numLines(), 3) self.assertEqual(meta_info2.numLines(), 3) self.assertEqual(meta_info1.data(1,3), [None, "hello", None]) self.assertEqual(meta_info2.data(1,3), [None, "byebye", None]) doc.deleteLine(2) self.assertEqual(meta_info1.numLines(), 2) self.assertEqual(meta_info2.numLines(), 2) self.assertEqual(meta_info1.data(1,2), [None, None]) self.assertEqual(meta_info2.data(1,2), [None, None]) self.assertEqual(meta_info1.data(1,1), [None]) self.assertEqual(meta_info2.data(1,1), [None]) self.assertEqual(meta_info1.data(1), None) self.assertEqual(meta_info2.data(1), None) doc.deleteLine(1) self.assertEqual(meta_info1.numLines(), 1) self.assertEqual(meta_info2.numLines(), 1) self.assertEqual(meta_info1.data(1,1), [None]) self.assertEqual(meta_info2.data(1,1), [None]) self.assertEqual(meta_info1.data(1), None) self.assertEqual(meta_info2.data(1), None) doc.deleteLine(1) self.assertEqual(meta_info1.numLines(), 1) self.assertEqual(meta_info2.numLines(), 1) self.assertEqual(meta_info1.data(1,1), [None]) self.assertEqual(meta_info2.data(1,1), [None]) self.assertEqual(meta_info1.data(1), None) self.assertEqual(meta_info2.data(1), None)
def testHasLine(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), 'r') as f: doc.read(f) self.assertTrue(doc.hasLine(1)) self.assertFalse(doc.hasLine(20))
def testReplaceFromMemento(self): doc = TextDocument() with open(fixtures.get("basic_nonempty_file.txt"), 'r') as f: doc.read(f) doc.createLineMetaInfo("whatever") initial_text = doc.documentText() meta_info1 = doc.lineMetaInfo("whatever") meta_info1.setData("hello", 1) memento = doc.lineMemento(1) doc.insertChars((1, 1), 'gnakgnak') meta_info1.setData("byebye", 1) doc.replaceFromMemento(1, memento) self.assertEqual(doc.documentText(), initial_text) self.assertEqual(meta_info1.data(1), "hello")
def testSave(self): path = fixtures.tempFile("testSave") doc = TextDocument() with open(path, 'w') as f: doc.write(f) self.assertTrue(os.path.exists(path))