def runTest(self): attrib = {'aligns': 'left,left', 'wraps': '0,0'} preferences = {} for headers, rows in ( ( # Two simple rows ['C1', 'C2'], [['a', 'b'], ['q', 'x']]), ( # Some empty fields ['C1', 'C2'], [['a', ' '], ['q', ' '], [' ', ' ']]), ): obj = TableViewObject(attrib, headers, rows, preferences) data = obj.get_data() self.assertEqual(data, (headers, rows, attrib)) widget = obj.get_widget() data = obj.get_data() self.assertEqual(data, (headers, rows, attrib)) # put object in pageview and serialize pageview = setUpPageView() pageview.insert_object(obj) tree = pageview.get_parsetree() #~ print tree.tostring() # re-construct from serialized version newpageview = setUpPageView() newpageview.set_parsetree(tree) buffer = newpageview.view.get_buffer() buffer.place_cursor(buffer.get_iter_at_offset(1)) newobj = buffer.get_object_at_cursor() self.assertIsInstance(newobj, TableViewObject) data = newobj.get_data() self.assertEqual(data, (headers, rows, attrib))
def __init__(self): tests.MockObject.__init__(self) self.preferences = ConfigDict() self.uistate = ConfigDict() self.mainwindow = tests.MockObject() self.mainwindow.pageview = setUpPageView() self.windows = []
def setUp(self): plugin = LineSorterPlugin() window = tests.MockObject() window.pageview = setUpPageView() window.uimanager = tests.MockObject() self.extension = MainWindowExtension(plugin, window) self.buffer = window.pageview.view.get_buffer()
def testWidget(self): pageview = setUpPageView( self.setUpNotebook(), text='''\ {{{code: lang="python" linenumbers="true" def dump(): for i in range(1, 5): print i }}} ''' ) # test widget loaded objects = list(pageview.textview._object_widgets) # XXX self.assertIsInstance(objects[0], SourceViewWidget) # test modify widget = objects[0] self.assertFalse(pageview.textview.get_buffer().get_modified()) widget.buffer.set_text('some new code') self.assertTrue(pageview.textview.get_buffer().get_modified()) # test modification ends up in page tree = pageview.get_parsetree() #print(tree.tostring()) elt = tree.find('object') self.assertIsNotNone(elt) self.assertEqual(elt.attrib['type'], 'code') self.assertEqual(elt.gettext(), 'some new code\n')
def runTest(self): plugin = PluginManager.load_plugin('inlinecalculator') notebook = self.setUpNotebook() pageview = setUpPageView(notebook) extension = find_extension(pageview, InlineCalculatorPageViewExtension) buffer = pageview.textview.get_buffer() def get_text(): start, end = buffer.get_bounds() return start.get_text(end) # Simple case buffer.set_text('1 + 1 =\n') buffer.place_cursor(buffer.get_iter_at_offset(7)) extension.eval_math() self.assertEqual(get_text(), '1 + 1 = 2\n') # Looks back to previous line buffer.set_text('1 + 1 =\n\n') buffer.place_cursor(buffer.get_iter_at_offset(8)) extension.eval_math() self.assertEqual(get_text(), '1 + 1 = 2\n\n') # Multi-line example buffer.set_text('1\n2\n3\n--- +\n') buffer.place_cursor(buffer.get_iter_at_offset(6)) extension.eval_math() self.assertEqual(get_text(), '1\n2\n3\n--- +\n6\n')
def testWidget(self): pageview = setUpPageView(self.setUpNotebook(), text='''\ | H1 <| H2 h2 | H3 <| |:----------------:|--------------:|:-----------------------| | Column A1 | Column A2 | a | | a very long cell | **bold text** | b | | hyperlinks | [[wp?wiki]] | [[http://x.org\|Xorg]] | ''') # test widget loaded objects = list(pageview.textview._object_widgets) # XXX self.assertIsInstance(objects[0], TableViewWidget) # test modify #widget = objects[0] #self.assertFalse(pageview.textview.get_buffer().get_modified()) # FIXME: change content via widget #self.assertTrue(pageview.textview.get_buffer().get_modified()) # test modification ends up in page tree = pageview.get_parsetree() #print(tree.tostring()) elt = tree.find('table') self.assertIsNotNone(elt)
def runTest(self): window = tests.MockObject() window.pageview = setUpPageView() window.ui = tests.MockObject() window.ui.uimanager = tests.MockObject() window.ui.uistate = ConfigDict() window.ui.mainwindow = window # XXX plugin = TableEditorPlugin() extension = MainWindowExtension(plugin, window) with tests.DialogContext(self.checkInsertTableDialog): extension.insert_table() tree = window.pageview.get_parsetree() #~ print tree.tostring() obj = tree.find('table') self.assertTrue(obj.attrib['aligns'] == 'left') self.assertTrue(obj.attrib['wraps'] == '0') # Parses tree to a table object tabledata = tree.tostring().replace("<?xml version='1.0' encoding='utf-8'?>", '')\ .replace('<zim-tree>', '').replace('</zim-tree>', '')\ .replace('<td> </td>', '<td>text</td>') table = plugin.create_table({'type': 'table'}, ElementTree.fromstring(tabledata)) self.assertTrue(isinstance(table, TableViewObject))
def __init__(self): tests.MockObject.__init__(self) self.pageview = setUpPageView() self.uimanager = tests.MockObject() self.ui = tests.MockObject() self.ui.uistate = ConfigDict()
def testLoadAndDump(self): pageview = setUpPageView( self.setUpNotebook(), text=TABLE_WIKI_TEXT, ) pageview.textview.get_buffer().set_modified(True) # Force re-interpretation of the buffer tree = pageview.get_parsetree() self.assertEquals(list(tree.iter_tokens()), TABLE_TOKENS)
def testDumpWiki(self): attachment_dir = self.setUpFolder(mock=tests.MOCK_ALWAYS_REAL) LocalFolder(tests.ZIM_DATADIR).file('zim.png').copyto(attachment_dir.file('test.png')) notebook = self.setUpNotebook() notebook.get_attachments_dir = lambda *a: attachment_dir pageview = setUpPageView(notebook, text='{{./test.png?type=equation}}') pageview.textview.get_buffer().set_modified(True) tree = pageview.get_parsetree() text = WikiDumper().dump(tree) self.assertEquals(text, ['{{./test.png?type=equation}}\n'])
def setUp(self): notebook = self.setUpNotebook() pageview = setUpPageView(notebook) def raise_error(*a): raise AssertionError notebook.store_page = raise_error pageview.textview.get_buffer().set_text('Editing ...\n') assert pageview.page.modified self.page = pageview.page self.pageview = pageview self.handler = SavePageHandler(pageview, notebook, pageview.get_page)
def runTest(self): window = tests.MockObject() window.pageview = setUpPageView() window.ui = tests.MockObject() window.ui.uimanager = tests.MockObject() window.ui.uistate = ConfigDict() window.ui.mainwindow = window # XXX plugin = SourceViewPlugin() extension = MainWindowExtension(plugin, window) with tests.DialogContext(self.checkInsertCodeBlockDialog): extension.insert_sourceview() tree = window.pageview.get_parsetree() #~ print tree.tostring() obj = tree.find('object') self.assertTrue(obj.attrib['type'] == 'code')
def runTest(self): notebook = self.setUpNotebook(content={'test': 'test123\n'}) pageview = setUpPageView(notebook) # Install wrapper with events orig = notebook._store_page_async_thread_main start_thread_event = threading.Event() thread_done_event = threading.Event() def wrapper(*a): start_thread_event.wait() orig(*a) thread_done_event.set() notebook._store_page_async_thread_main = wrapper # Test1 - normal scenario page = notebook.get_page(Path('Test')) pageview.set_page(page) pageview.readonly = False pageview.textview.get_buffer().set_text('foo') self.assertTrue(page.modified) pageview._save_page_handler.try_save_page() self.assertTrue(page.modified) start_thread_event.set() thread_done_event.wait() with NotebookState(notebook): self.assertFalse(page.modified) # Test2 - with race condition start_thread_event.clear() thread_done_event.clear() pageview.textview.get_buffer().set_text('bar') self.assertTrue(page.modified) pageview._save_page_handler.try_save_page() self.assertTrue(page.modified) pageview.textview.get_buffer().set_text( 'dusss') # edit while save ongoing start_thread_event.set() thread_done_event.wait() with NotebookState(notebook): self.assertTrue( page.modified) # page must still show modified is True
def testWidget(self): pageview = setUpPageView( self.setUpNotebook(), text=TABLE_WIKI_TEXT, ) # test widget loaded objects = list(pageview.textview._object_widgets) # XXX self.assertIsInstance(objects[0], TableViewWidget) # test modify #widget = objects[0] #self.assertFalse(pageview.textview.get_buffer().get_modified()) # FIXME: change content via widget #self.assertTrue(pageview.textview.get_buffer().get_modified()) # test modification ends up in page tree = pageview.get_parsetree() #print(tree.tostring()) elt = tree.find('table') self.assertIsNotNone(elt)
def testEditObjectDialog(self): attachment_dir = self.setUpFolder(mock=tests.MOCK_ALWAYS_REAL) LocalFolder(tests.ZIM_DATADIR).file('zim.png').copyto(attachment_dir.file('test.png')) notebook = self.setUpNotebook() notebook.get_attachments_dir = lambda *a: attachment_dir pageview = setUpPageView(notebook, text='{{./test.png?type=equation}}') def edit_dialog(dialog): self.assertIsInstance(dialog, ImageGeneratorDialog) dialog.set_text(r'c = \sqrt{ a^2 + b^2 }') dialog.update_image() dialog.assert_response_ok() with tests.DialogContext(edit_dialog): pageview.edit_object() self.assertEquals(attachment_dir.file('test.tex').read(), r'c = \sqrt{ a^2 + b^2 }') assertIsPNG(attachment_dir.file('test.png'))
def runTest(self): plugin = InsertSymbolPlugin(ConfigManager()) pageview = setUpPageView() textview = pageview.view buffer = textview.get_buffer() pageview.undostack = UndoStackManager(buffer) mainwindow = tests.MockObject() mainwindow.pageview = pageview mainwindow.ui = tests.MockObject() # XXX mainwindow.ui.uimanager = tests.MockObject() # XXX mainwindow.ui.uistate = SectionedConfigDict() plugin.extend(mainwindow, 'MainWindow') print '\n!! Two GtkWarnings expected here for gdk display !!' # Need a window to get the widget realized window = gtk.Window() window.add(pageview) pageview.realize() textview.realize() # insert on end-of-word with space press(textview, r'\alpha ') text = buffer.get_text(*buffer.get_bounds()) self.assertEqual(text, ALPHA + ' ') # Check undo - first undo replace, then the insert space pageview.undo() text = buffer.get_text(*buffer.get_bounds()) self.assertEqual(text, r'\alpha ') pageview.undo() text = buffer.get_text(*buffer.get_bounds()) self.assertEqual(text, r'\alpha') # no trailing space # insert on end-of-word with ; buffer.clear() press(textview, r'\alpha;') text = buffer.get_text(*buffer.get_bounds()) self.assertEqual(text, ALPHA) # no trailing space # no insert in code or pre section buffer.clear() pageview.toggle_format(VERBATIM) press(textview, r'\alpha ') text = buffer.get_text(*buffer.get_bounds()) self.assertEqual(text, r'\alpha ') # no replace # test dialog def check_dialog(dialog): self.assertIsInstance(dialog, InsertSymbolDialog) dialog.iconview.item_activated((9,)) # path for 10th item in symbol list dialog.iconview.item_activated((10,)) # path for 11th item in symbol list dialog.iconview.item_activated((11,)) # path for 12th item in symbol list dialog.assert_response_ok() buffer.clear() mainwindow_ext = plugin.get_extension(MainWindowExtension) with tests.DialogContext(check_dialog): mainwindow_ext.insert_symbol() text = buffer.get_text(*buffer.get_bounds()) self.assertEqual(text, EACUTE + ECIRC + EGRAVE)
def runTest(self): plugin = InsertSymbolPlugin(ConfigManager()) pageview = setUpPageView() textview = pageview.view buffer = textview.get_buffer() pageview.undostack = UndoStackManager(buffer) mainwindow = tests.MockObject() mainwindow.pageview = pageview mainwindow.ui = tests.MockObject() # XXX mainwindow.ui.uimanager = tests.MockObject() # XXX mainwindow.ui.uistate = SectionedConfigDict() plugin.extend(mainwindow, 'MainWindow') print '\n!! Two GtkWarnings expected here for gdk display !!' # Need a window to get the widget realized window = gtk.Window() window.add(pageview) pageview.realize() textview.realize() # insert on end-of-word with space press(textview, r'\alpha ') text = buffer.get_text(*buffer.get_bounds()) self.assertEqual(text, ALPHA + ' ') # Check undo - first undo replace, then the insert space pageview.undo() text = buffer.get_text(*buffer.get_bounds()) self.assertEqual(text, r'\alpha ') pageview.undo() text = buffer.get_text(*buffer.get_bounds()) self.assertEqual(text, r'\alpha') # no trailing space # insert on end-of-word with ; buffer.clear() press(textview, r'\alpha;') text = buffer.get_text(*buffer.get_bounds()) self.assertEqual(text, ALPHA) # no trailing space # no insert in code or pre section buffer.clear() pageview.toggle_format(VERBATIM) press(textview, r'\alpha ') text = buffer.get_text(*buffer.get_bounds()) self.assertEqual(text, r'\alpha ') # no replace # test dialog def check_dialog(dialog): self.assertIsInstance(dialog, InsertSymbolDialog) dialog.iconview.item_activated( (9, )) # path for 10th item in symbol list dialog.iconview.item_activated( (10, )) # path for 11th item in symbol list dialog.iconview.item_activated( (11, )) # path for 12th item in symbol list dialog.assert_response_ok() buffer.clear() mainwindow_ext = plugin.get_extension(MainWindowExtension) with tests.DialogContext(check_dialog): mainwindow_ext.insert_symbol() text = buffer.get_text(*buffer.get_bounds()) self.assertEqual(text, EACUTE + ECIRC + EGRAVE)