Beispiel #1
0
class TestDatabase(unittest.TestCase):
	def setUp(self):
		self.db = Database()
		
	def test_get_and_set(self):
		self.db.set('a', 10)

		self.assertEqual(self.db.get('a'), 10)

	def test_get_null(self):
		self.assertEqual(self.db.get('nonexistant'), 'NULL')

	def test_unset(self):
		self.db.set('a', 10)

		self.db.unset('a')

		self.assertEqual(self.db.get('a'), 'NULL')

	def test_equalto(self):
		self.db.set('a', 10)
		self.db.set('c', 10)
		self.db.set('b', 10)

		self.assertEqual(self.db.equalto(10), 'a b c')

	def test_equalto_none(self):
		self.assertEqual(self.db.equalto(10), 'NONE')

	def test_equalto_unset(self):
		self.db.set('a', 10)
		self.db.set('c', 10)
		self.db.set('b', 10)

		self.db.unset('b')

		self.assertEqual(self.db.equalto(10), 'a c')

	def test_equalto_change(self):

		self.db.set('a', 10)
		self.db.set('a', 20)

		self.assertEqual(self.db.equalto(10), 'NONE')
		self.assertEqual(self.db.equalto(20), 'a')

	def test_program(self):
		"""SET a 10
		SET b 10
		EQUALTO 10
		EQUALTO 20
		UNSET a
		EQUALTO 10
		SET b 30
		EQUALTO 10"""

		self.db.set('a', 10)
		self.db.set('b', 10)

		self.assertEqual(self.db.equalto(10), 'a b')
		self.assertEqual(self.db.equalto(20), 'NONE')

		self.db.unset('a')

		self.assertEqual(self.db.equalto(10), 'b')

		self.db.set('b', 30)

		self.assertEqual(self.db.equalto(10), 'NONE')

	def test_tx_commit(self):
		self.db.set('a', 10)

		self.db.begin()

		self.assertEqual(self.db.get('a'), 10)

		self.db.set('a', 20)

		self.assertEqual(self.db.get('a'), 20)

		self.db.commit()

		self.assertEqual(self.db.get('a'), 20)

	def test_tx_full_commit(self):

		# test that commit commits *all* open transactions
		self.db.begin()
		self.db.set('a', 30)
		self.db.begin()
		self.db.set('a', 40)
		self.db.commit()
		self.assertEqual(self.db.get('a'), 40)
		self.assertEqual(self.db.rollback(), 'INVALID ROLLBACK')

	def test_tx_rollback(self):

		self.db.set('a', 10)

		self.db.begin()

		self.assertEqual(self.db.get('a'), 10)

		self.db.set('a', 20)

		self.assertEqual(self.db.get('a'), 20)

		self.db.rollback()

		self.assertEqual(self.db.get('a'), 10)

	def test_tx_invalid_rollback(self):
		self.assertEqual(self.db.rollback(), 'INVALID ROLLBACK')

	def test_tx_begin_rollback_commit(self):
		self.db.set('a', 50)
		self.db.begin()
		self.assertEqual(self.db.get('a'), 50)
		self.db.set('a', 60)
		self.db.begin()
		self.db.unset('a')
		self.assertEqual(self.db.get('a'), 'NULL')
		self.db.rollback()
		self.assertEqual(self.db.get('a'), 60)
		self.db.commit()
		self.assertEqual(self.db.get('a'), 60)