Back to index

moin  1.9.0~rc2
test_wiki_analyzer.py
Go to the documentation of this file.
00001 # -*- coding: iso-8859-1 -*-
00002 """
00003     MoinMoin - MoinMoin.search.Xapian.tokenizer Tests
00004 
00005     @copyright: 2009 MoinMoin:DmitrijsMilajevs
00006     @license: GNU GPL, see COPYING for details.
00007 """
00008 
00009 import py
00010 from MoinMoin._tests import wikiconfig
00011 
00012 try:
00013     from MoinMoin.search.Xapian.tokenizer import WikiAnalyzer
00014 except ImportError:
00015     py.test.skip('xapian is not installed')
00016 
00017 class TestWikiAnalyzer(object):
00018 
00019     word = u'HelpOnMoinTesting'
00020     words = {word.lower(): u'',
00021              u'help': u'',
00022              u'on': u'',
00023              u'moin': u'',
00024              u'testing': u''}
00025 
00026     def setup_class(self):
00027         self.analyzer = WikiAnalyzer(request=self.request, language=self.request.cfg.language_default)
00028 
00029     def test_tokenize(self):
00030         words = self.words
00031         tokens = list(self.analyzer.tokenize(self.word))
00032 
00033         assert len(tokens) == len(words)
00034 
00035         for token, stemmed in tokens:
00036             assert token in words
00037             assert words[token] == stemmed
00038 
00039 
00040 class TestWikiAnalyzerStemmed(TestWikiAnalyzer):
00041 
00042     word = u'HelpOnMoinTesting'
00043     words = {word.lower(): u'helponmointest',
00044              u'help': u'',
00045              u'on': u'',
00046              u'moin': u'',
00047              u'testing': u'test'}
00048 
00049     class Config(wikiconfig.Config):
00050 
00051         xapian_stemming = True
00052 
00053 
00054 class TestWikiAnalyzerSeveralWords(TestWikiAnalyzer):
00055 
00056     word = u'HelpOnMoinTesting OtherWikiWord'
00057     words = {u'helponmointesting': u'',
00058              u'help': u'',
00059              u'on': u'',
00060              u'moin': u'',
00061              u'testing': u'',
00062              u'otherwikiword': u'',
00063              u'other': u'',
00064              u'wiki': u'',
00065              u'word': u''}
00066 
00067 
00068 class TestWikiAnalyzerStemmedSeveralWords(TestWikiAnalyzer):
00069 
00070     word = u'HelpOnMoinTesting OtherWikiWord'
00071     words = {u'helponmointesting': u'helponmointest',
00072              u'help': u'',
00073              u'on': u'',
00074              u'moin': u'',
00075              u'testing': u'test',
00076              u'otherwikiword': u'',
00077              u'other': u'',
00078              u'wiki': u'',
00079              u'word': u''}
00080 
00081     class Config(wikiconfig.Config):
00082 
00083         xapian_stemming = True
00084 
00085 
00086 class TestWikiAnalyzerStemmedHelpOnEditing(TestWikiAnalyzer):
00087 
00088     word = u'HelpOnEditing'
00089     words = {u'helponediting': u'helponedit',
00090              u'help': u'',
00091              u'on': u'',
00092              u'editing': u'edit'}
00093 
00094     class Config(wikiconfig.Config):
00095 
00096         xapian_stemming = True
00097 
00098 
00099 class TestWikiAnalyzerStemmedCategoryHomepage(TestWikiAnalyzer):
00100 
00101     word = u'CategoryHomepage'
00102     words = {u'categoryhomepage': u'categoryhomepag',
00103              u'category': u'categori',
00104              u'homepage': u'homepag'}
00105 
00106     class Config(wikiconfig.Config):
00107 
00108         xapian_stemming = True