10a8c90248264a8b26970b4473770bcc3df8515fJosh Gao""" 20a8c90248264a8b26970b4473770bcc3df8515fJosh GaoTestCases for checking set_get_returns_none. 30a8c90248264a8b26970b4473770bcc3df8515fJosh Gao""" 40a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 50a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoimport os, string 60a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoimport unittest 70a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 80a8c90248264a8b26970b4473770bcc3df8515fJosh Gaofrom test_all import db, verbose, get_new_database_path 90a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 100a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 110a8c90248264a8b26970b4473770bcc3df8515fJosh Gao#---------------------------------------------------------------------- 120a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 130a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoclass GetReturnsNoneTestCase(unittest.TestCase): 140a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def setUp(self): 150a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.filename = get_new_database_path() 160a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 170a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def tearDown(self): 180a8c90248264a8b26970b4473770bcc3df8515fJosh Gao try: 190a8c90248264a8b26970b4473770bcc3df8515fJosh Gao os.remove(self.filename) 200a8c90248264a8b26970b4473770bcc3df8515fJosh Gao except os.error: 210a8c90248264a8b26970b4473770bcc3df8515fJosh Gao pass 220a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 230a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 240a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test01_get_returns_none(self): 250a8c90248264a8b26970b4473770bcc3df8515fJosh Gao d = db.DB() 260a8c90248264a8b26970b4473770bcc3df8515fJosh Gao d.open(self.filename, db.DB_BTREE, db.DB_CREATE) 270a8c90248264a8b26970b4473770bcc3df8515fJosh Gao d.set_get_returns_none(1) 280a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 290a8c90248264a8b26970b4473770bcc3df8515fJosh Gao for x in string.letters: 300a8c90248264a8b26970b4473770bcc3df8515fJosh Gao d.put(x, x * 40) 310a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 320a8c90248264a8b26970b4473770bcc3df8515fJosh Gao data = d.get('bad key') 330a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(data, None) 340a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 350a8c90248264a8b26970b4473770bcc3df8515fJosh Gao data = d.get(string.letters[0]) 360a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(data, string.letters[0]*40) 370a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 380a8c90248264a8b26970b4473770bcc3df8515fJosh Gao count = 0 390a8c90248264a8b26970b4473770bcc3df8515fJosh Gao c = d.cursor() 400a8c90248264a8b26970b4473770bcc3df8515fJosh Gao rec = c.first() 410a8c90248264a8b26970b4473770bcc3df8515fJosh Gao while rec: 420a8c90248264a8b26970b4473770bcc3df8515fJosh Gao count = count + 1 430a8c90248264a8b26970b4473770bcc3df8515fJosh Gao rec = c.next() 440a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 450a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(rec, None) 460a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(count, len(string.letters)) 470a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 480a8c90248264a8b26970b4473770bcc3df8515fJosh Gao c.close() 490a8c90248264a8b26970b4473770bcc3df8515fJosh Gao d.close() 500a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 510a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 520a8c90248264a8b26970b4473770bcc3df8515fJosh Gao def test02_get_raises_exception(self): 530a8c90248264a8b26970b4473770bcc3df8515fJosh Gao d = db.DB() 540a8c90248264a8b26970b4473770bcc3df8515fJosh Gao d.open(self.filename, db.DB_BTREE, db.DB_CREATE) 550a8c90248264a8b26970b4473770bcc3df8515fJosh Gao d.set_get_returns_none(0) 560a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 570a8c90248264a8b26970b4473770bcc3df8515fJosh Gao for x in string.letters: 580a8c90248264a8b26970b4473770bcc3df8515fJosh Gao d.put(x, x * 40) 590a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 600a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertRaises(db.DBNotFoundError, d.get, 'bad key') 610a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertRaises(KeyError, d.get, 'bad key') 620a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 630a8c90248264a8b26970b4473770bcc3df8515fJosh Gao data = d.get(string.letters[0]) 640a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(data, string.letters[0]*40) 650a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 660a8c90248264a8b26970b4473770bcc3df8515fJosh Gao count = 0 670a8c90248264a8b26970b4473770bcc3df8515fJosh Gao exceptionHappened = 0 680a8c90248264a8b26970b4473770bcc3df8515fJosh Gao c = d.cursor() 690a8c90248264a8b26970b4473770bcc3df8515fJosh Gao rec = c.first() 700a8c90248264a8b26970b4473770bcc3df8515fJosh Gao while rec: 710a8c90248264a8b26970b4473770bcc3df8515fJosh Gao count = count + 1 720a8c90248264a8b26970b4473770bcc3df8515fJosh Gao try: 730a8c90248264a8b26970b4473770bcc3df8515fJosh Gao rec = c.next() 740a8c90248264a8b26970b4473770bcc3df8515fJosh Gao except db.DBNotFoundError: # end of the records 750a8c90248264a8b26970b4473770bcc3df8515fJosh Gao exceptionHappened = 1 760a8c90248264a8b26970b4473770bcc3df8515fJosh Gao break 770a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 780a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertNotEqual(rec, None) 790a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertTrue(exceptionHappened) 800a8c90248264a8b26970b4473770bcc3df8515fJosh Gao self.assertEqual(count, len(string.letters)) 810a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 820a8c90248264a8b26970b4473770bcc3df8515fJosh Gao c.close() 830a8c90248264a8b26970b4473770bcc3df8515fJosh Gao d.close() 840a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 850a8c90248264a8b26970b4473770bcc3df8515fJosh Gao#---------------------------------------------------------------------- 860a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 870a8c90248264a8b26970b4473770bcc3df8515fJosh Gaodef test_suite(): 880a8c90248264a8b26970b4473770bcc3df8515fJosh Gao return unittest.makeSuite(GetReturnsNoneTestCase) 890a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 900a8c90248264a8b26970b4473770bcc3df8515fJosh Gao 910a8c90248264a8b26970b4473770bcc3df8515fJosh Gaoif __name__ == '__main__': 920a8c90248264a8b26970b4473770bcc3df8515fJosh Gao unittest.main(defaultTest='test_suite') 93