def setUp(self):
		self.stack = HStack()
		self.stack10 = HStack(10)
		self.stack1 = HStack(1)
class TestHStackFunctions(unittest.TestCase):

	def setUp(self):
		self.stack = HStack()
		self.stack10 = HStack(10)
		self.stack1 = HStack(1)

	def test_push(self):
		self.stack.push(1)
		self.assertEqual(self.stack._contents[0], 1)

	def test_push_on_max(self):
		self.stack1.push(1)
		with self.assertRaises(IndexError):
			self.stack1.push(1)

	def test_pop(self):
		self.stack.push(1)
		self.stack.push(2)
		self.assertEqual(self.stack.pop(), 2)

	def test_pop_on_empty(self):
		with self.assertRaises(IndexError):
			self.stack.pop()
	def test_pop_and_push_maintains_order(self):
		self.stack.push(1)
		self.stack.push(2)
		self.stack.pop()
		self.stack.push(3)
		self.assertEqual(self.stack._contents, [1, 3])

	def test_length(self):
		self.stack.push(1)
		self.stack.push("a")
		self.assertEqual(self.stack.length, 2)

	def test_max(self):
		self.assertEqual(self.stack._max, 20)
		self.assertEqual(self.stack10._max, 10)