def testWordsHtml2(self): from statistics.pagestat import PageStat HtmlPageFactory().create(self.wikiroot, u"Страница 1", []) testPage = self.wikiroot[u"Страница 1"] testPage.content = u"""Бла бла бла. Еще одна строка111 222 333 И еще строка ... ... ;;; @#$%#$ Последняя строка """ pageStat = PageStat(testPage) self.assertEqual(pageStat.words, 13)
def testWordsHtml1(self): from statistics.pagestat import PageStat HtmlPageFactory().create(self.wikiroot, "Страница 1", []) testPage = self.wikiroot["Страница 1"] testPage.content = """Бла бла бла Еще одна строка И еще строка Последняя строка """ pageStat = PageStat(testPage) self.assertEqual(pageStat.words, 11)
def testLinesHtml2(self): from statistics.pagestat import PageStat HtmlPageFactory().create(self.wikiroot, u"Страница 1", []) testPage = self.wikiroot[u"Страница 1"] testPage.content = u"""Бла бла бла Еще одна строка И еще строка Последняя строка """ pageStat = PageStat(testPage) self.assertEqual(pageStat.lines, 4)
def testTypeCreation(self): textPage = TextPageFactory().create(self.wikiroot, "Текстовая страница", []) self.assertEqual(TextWikiPage, type(textPage)) wikiPage = WikiPageFactory().create(self.wikiroot, "Вики-страница", []) self.assertEqual(WikiWikiPage, type(wikiPage)) htmlPage = HtmlPageFactory().create(self.wikiroot, "HTML-страница", []) self.assertEqual(HtmlWikiPage, type(htmlPage)) searchPage = SearchPageFactory().create(self.wikiroot, "Поисковая страница", []) self.assertEqual(SearchWikiPage, type(searchPage))
def testMultitype_01 (self): WikiPageFactory().create (self.wikiroot, u"Викистраница", []) page = self.wikiroot[u"Викистраница"] path = os.path.join (page.path, self.styleFile) TextPageFactory().create (page, u"Текстовая страница", []) SearchPageFactory().create (page, u"Страница поиска", []) HtmlPageFactory().create (page, u"HTML-страница", []) Application.wikiroot = self.wikiroot Application.selectedPage = None Tester.dialogTester.append (self.__selectSecond) Application.actionController.getAction(SetStyleToBranchAction.stringId).run(None) self.assertEqual(Tester.dialogTester.count, 0) self.assertTrue(os.path.exists (path)) self.assertTrue(os.path.exists (page.getHtmlPath()))
def setUp(self): # Количество срабатываний особытий при обновлении страницы self._pageUpdateCount = 0 self._pageUpdateSender = None # Здесь будет создаваться вики self.path = mkdtemp(prefix='Абырвалг абыр') self.eventcount = 0 self.wikiroot = WikiDocument.create(self.path) WikiPageFactory().create(self.wikiroot, "Викистраница 1", []) HtmlPageFactory().create(self.wikiroot, "Html-страница 2", []) self._styleFname = "__style.html" self._styleDir = "__style" self._exampleStyleDir = "../test/styles/example_jblog/example_jblog" self._exampleStyleDir2 = "../test/styles/example_jnet/example_jnet" self._invalidStyleDir = "../styles/invalid" self._testStylePath = os.path.join(self._exampleStyleDir, self._styleFname) Application.wikiroot = self.wikiroot Application.onPageUpdate += self.onPageUpdate
def __createWiki(self): # Здесь будет создаваться вики WikiPageFactory().create(self.wikiroot, u"Викистраница", []) TextPageFactory().create(self.wikiroot, u"Текст", []) HtmlPageFactory().create(self.wikiroot, u"HTML", []) SearchPageFactory().create(self.wikiroot, u"Search", [])
class FactorySelector(object): """ Класс, который выбирает нужную фабрику для каждой страницы """ _defaultFactory = TextPageFactory() _factories = { factory.getTypeString(): factory for factory in [ WikiPageFactory(), HtmlPageFactory(), TextPageFactory(), SearchPageFactory() ] } @staticmethod def getFactories(): return sorted(FactorySelector._factories.values(), cmp=lambda x, y: cmp(x.title, y.title)) @staticmethod def getFactory(pageType): """ Найти фабрику, которая работает с переданным типом страницы (со страницей данного типа). Или вернуть фабрику по умолчанию """ return FactorySelector._factories.get(pageType, FactorySelector._defaultFactory) @staticmethod def reset(): """ Установить словарь фабрик в первоначальное состояние. Используется для тестирования. Это не конструктор. В случае изменения списка фабрик, установленных по умолчанию, нужно изменять этот метод. """ FactorySelector._factories = { factory.getTypeString(): factory for factory in [ WikiPageFactory(), HtmlPageFactory(), TextPageFactory(), SearchPageFactory() ] } @staticmethod def addFactory(newFactory): """ Добавить новую фабрику. При этом у фабрики может быть новый создаваемый тип страниц, в то же время фабрика может заменить существующую фабрику. """ FactorySelector._factories[newFactory.getTypeString()] = newFactory @staticmethod def removeFactory(typeString): """ Удаляет фабрику из словаря """ FactorySelector._factories.pop(typeString, None)
def _createPage(self): return HtmlPageFactory().create(self.wikiroot, u"HTML-страница", [])