⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_corpus.py

📁 用python实现的邮件过滤器
💻 PY
字号:
# Test the Corpus module.import sysimport timeimport unittestimport sb_test_supportsb_test_support.fix_sys_path()from spambayes.Corpus import Corpus, ExpiryCorpus, MessageFactory# We borrow the test messages that test_sb_server uses.from test_sb_server import good1, spam1, malformed1class simple_msg(object):    def __init__(self, key):        self._key = key        self.creation_time = time.time()        self.loaded = False    def createTimestamp(self):        return self.creation_time    def key(self):        return self._key    def load(self):        self.loaded = Trueclass simple_observer(object):    # Just want to tell that they have been called, so raise particular    # errors.    def onAddMessage(self, msg, flags):        raise ValueError()    def onRemoveMessage(self, msg, flags):        raise TypeError()class CorpusTest(unittest.TestCase):    def setUp(self):        self.factory = MessageFactory()        self.cacheSize = 100        self.corpus = Corpus(self.factory, self.cacheSize)    def test___init__(self):        self.assertEqual(self.corpus.cacheSize, self.cacheSize)        self.assertEqual(self.corpus.msgs, {})        self.assertEqual(self.corpus.keysInMemory, [])        self.assertEqual(self.corpus.observers, [])        self.assertEqual(self.corpus.factory, self.factory)    def test_addObserver(self):        self.corpus.addObserver(simple_observer())        self.assertRaises(ValueError, self.corpus.addMessage,                          simple_msg(0))        self.assertRaises(TypeError, self.corpus.removeMessage,                          simple_msg(1))    def test_addMessage(self):        msg = simple_msg(0)        self.assertEqual(self.corpus.get(0), None)        self.corpus.addMessage(msg)        self.assertEqual(self.corpus[0], msg)    def test_removeMessage(self):        msg = simple_msg(0)        self.assertEqual(self.corpus.get(0), None)        self.corpus.addMessage(msg)        self.assertEqual(self.corpus[0], msg)        self.corpus.removeMessage(msg)        self.assertEqual(self.corpus.get(0), None)    def test_cacheMessage(self):        msg = simple_msg(0)        self.corpus.cacheMessage(msg)        self.assertEqual(self.corpus.msgs[0], msg)        self.assert_(0 in self.corpus.keysInMemory)    def test_flush_cache(self):        self.corpus.cacheSize = 1        msg = simple_msg(0)        self.corpus.cacheMessage(msg)        self.assertEqual(self.corpus.msgs[0], msg)        self.assert_(0 in self.corpus.keysInMemory)        msg = simple_msg(1)        self.corpus.cacheMessage(msg)        self.assertEqual(self.corpus.msgs[1], msg)        self.assert_(1 in self.corpus.keysInMemory)        self.assert_(0 not in self.corpus.keysInMemory)    def test_unCacheMessage(self):        msg = simple_msg(0)        self.corpus.cacheMessage(msg)        self.assertEqual(self.corpus.msgs[0], msg)        self.assert_(0 in self.corpus.keysInMemory)        self.corpus.unCacheMessage(msg)        self.assert_(0 in self.corpus.keysInMemory)    def test_takeMessage(self):        other_corpus = Corpus(self.factory, self.cacheSize)        msg = simple_msg(0)        other_corpus.addMessage(msg)        self.assertEqual(self.corpus.get(0), None)        self.corpus.takeMessage(0, other_corpus)        self.assertEqual(msg.loaded, True)        self.assertEqual(other_corpus.get(0), None)        self.assertEqual(self.corpus.get(0), msg)    def test_get(self):        ids = [0, 1, 2]        for id in ids:            self.corpus.addMessage(simple_msg(id))        self.assertEqual(self.corpus.get(0).key(), 0)    def test_get_fail(self):        ids = [0, 1, 2]        for id in ids:            self.corpus.addMessage(simple_msg(id))        self.assertEqual(self.corpus.get(4), None)    def test_get_default(self):        ids = [0, 1, 2]        for id in ids:            self.corpus.addMessage(simple_msg(id))        self.assertEqual(self.corpus.get(4, "test"), "test")    def test___getitem__(self):        ids = [0, 1, 2]        for id in ids:            self.corpus.addMessage(simple_msg(id))        self.assertEqual(self.corpus[0].key(), 0)    def test___getitem___fail(self):        ids = [0, 1, 2]        for id in ids:            self.corpus.addMessage(simple_msg(id))        self.assertRaises(KeyError, self.corpus.__getitem__, 4)    def test_keys(self):        self.assertEqual(self.corpus.keys(), [])        ids = [0, 1, 2]        for id in ids:            self.corpus.addMessage(simple_msg(id))        self.assertEqual(self.corpus.keys(), ids)    def test___iter__(self):        self.assertEqual(tuple(self.corpus), ())        msgs = (simple_msg(0), simple_msg(1), simple_msg(2))        for msg in msgs:            self.corpus.addMessage(msg)        self.assertEqual(tuple(self.corpus), msgs)    def test_makeMessage_no_content(self):        key = "testmessage"        self.assertRaises(NotImplementedError, self.corpus.makeMessage, key)    def test_makeMessage_with_content(self):        key = "testmessage"        content = good1        self.assertRaises(NotImplementedError, self.corpus.makeMessage,                          key, content)class ExpiryCorpusTest(unittest.TestCase):    def setUp(self):        class Mixed(Corpus, ExpiryCorpus):            def __init__(self, expireBefore, factory, cacheSize):                Corpus.__init__(self, factory, cacheSize)                ExpiryCorpus.__init__(self, expireBefore)        self.factory = MessageFactory()        self.cacheSize = 100        self.expireBefore = 10.0        self.corpus = Mixed(self.expireBefore, self.factory,                            self.cacheSize)    def test___init___expiry(self):        self.assertEqual(self.corpus.expireBefore, self.expireBefore)    def test_removeExpiredMessages(self):        # Put messages in to expire.        expire = [simple_msg(1), simple_msg(2)]        for msg in expire:            self.corpus.addMessage(msg)        # Ensure that we don't expire the wrong ones.        self.corpus.expireBefore = 0.25        time.sleep(0.5)        # Put messages in to not expire.        not_expire = [simple_msg(3), simple_msg(4)]        for msg in not_expire:            self.corpus.addMessage(msg)        # Run expiry.        self.corpus.removeExpiredMessages()        # Check that expired messages are gone.        for msg in expire:            self.assertEqual(msg in self.corpus, False)        # Check that not expired messages are still there.        for msg in not_expire:            self.assertEqual(msg in self.corpus, True)        def suite():    suite = unittest.TestSuite()    clses = (CorpusTest,             ExpiryCorpusTest,             )    for cls in clses:        suite.addTest(unittest.makeSuite(cls))    return suiteif __name__=='__main__':    sb_test_support.unittest_main(argv=sys.argv + ['suite'])

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -