コード例 #1
0
ファイル: test_window.py プロジェクト: ludios/Minerva
	def test_appendExtendQueue(self):
		q = Queue()
		q.append('zero')
		q.extend(['one', 'two'])
		self.assertEqual([(0, 'zero'), (1, 'one'), (2, 'two')], list(q.iterItems(start=0)))
		# iterItems is idempotent
		self.assertEqual([(0, 'zero'), (1, 'one'), (2, 'two')], list(q.iterItems(start=0)))
コード例 #2
0
ファイル: test_window.py プロジェクト: ludios/Minerva
	def test_appendExtendQueueStart3(self):
		q = Queue()
		q.append('zero')
		q.extend(['one', 'two'])
		self.assertEqual([], list(q.iterItems(start=3)))
		# iterItems is idempotent
		self.assertEqual([], list(q.iterItems(start=3)))
コード例 #3
0
ファイル: test_window.py プロジェクト: ludios/Minerva
	def test_sackNumberTooHigh(self):
		q = Queue()
		q.extend(['zero', 'one', 'two', 'three'])
		badSACK = q.handleSACK(SACK(0, (2, 5)))
		self.assertEqual(True, badSACK)
		# Items were still removed, despite it being a bad SACK
		self.assertEqual([(1, 'one'), (3, 'three')], list(q.iterItems()))
コード例 #4
0
ファイル: test_window.py プロジェクト: ludios/Minerva
	def test_handleSACKToHigherNum(self):
		q = Queue()
		q.extend(['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10'])
		self.assertEqual(False, q.handleSACK(SACK(1, ())))
		self.assertEqual(False, q.handleSACK(SACK(3, ())))

		# There should be 5 items left in the queue
		self.assertEqual([(4,'4'), (5,'5'), (6,'6'), (7,'7'), (8,'8'), (9,'9'), (10,'10')], list(q.iterItems(start=4)))
コード例 #5
0
ファイル: test_window.py プロジェクト: ludios/Minerva
	def test_handleSACKBothAckAndSackNumRemoveItems(self):
		"""
		Another handleSACK test.  This covers a wrong-variable-in-loop bug
		we had.
		"""
		q = Queue()
		q.extend(['zero', 'one', 'two', 'three', 'four'])
		self.assertEqual(False, q.handleSACK(SACK(0, (1, 3))))
		self.assertEqual([(2, 'two'), (4, 'four')], list(q.iterItems()))
コード例 #6
0
ファイル: test_window.py プロジェクト: ludios/Minerva
	def test_handleSACKOnlyAckNumber(self):
		q = Queue()
		q.append('zero')
		q.extend(['one', 'two'])

		self.assertEqual(False, q.handleSACK(SACK(0, ())))
		self.assertEqual([(1, 'one'), (2, 'two')], list(q.iterItems(start=1)))

		# Removing again is idempotent
		self.assertEqual(False, q.handleSACK(SACK(0, ())))
		self.assertEqual([(1, 'one'), (2, 'two')], list(q.iterItems(start=1)))
コード例 #7
0
ファイル: test_window.py プロジェクト: ludios/Minerva
	def test_iterItemsNoStartNumber(self):
		"""
		A L{start} for iterItems is not required.
		"""
		q = Queue()
		q.append('zero')
		q.extend(['one', 'two'])
		self.assertEqual([(0, 'zero'), (1, 'one'), (2, 'two')], list(q.iterItems()))
		self.assertEqual(False, q.handleSACK(SACK(-1, ())))
		self.assertEqual([(0, 'zero'), (1, 'one'), (2, 'two')], list(q.iterItems()))
		self.assertEqual(False, q.handleSACK(SACK(0, ())))
		self.assertEqual([(1, 'one'), (2, 'two')], list(q.iterItems()))
コード例 #8
0
ファイル: test_window.py プロジェクト: ludios/Minerva
	def test_repr(self):
		q = Queue()
		self.assertEqual('<Queue at 0x%x with 0 item(s), counter=#-1, '
			'size=0>' % (id(q),), repr(q))

		q.extend(['a', 'b'])
		self.assertEqual('<Queue at 0x%x with 2 item(s), counter=#1, '
			'size=%d>' % (id(q), totalSizeOf('a') * 2), repr(q))

		q.handleSACK(SACK(0, ()))
		self.assertEqual('<Queue at 0x%x with 1 item(s), counter=#1, '
			'size=%d>' % (id(q), totalSizeOf('a')), repr(q))
コード例 #9
0
ファイル: test_window.py プロジェクト: ludios/Minerva
	def test_getMaxConsumption(self):
		"""
		The size of the Queue increases when we extend it or append to it,
		and decreases when we give it an ackNumber or sackNum that
		causes it to remove items.
		"""
		q = Queue()
		self.assertEqual(0, q.getMaxConsumption())
		q.extend(['a', 'b'])
		self.assertEqual(totalSizeOf('a') * 2, q.getMaxConsumption())
		q.handleSACK(SACK(0, ()))
		self.assertEqual(totalSizeOf('a'), q.getMaxConsumption())
		# strange-looking SACK, but it does exercise the code we want to exercise
		q.handleSACK(SACK(0, (1,)))
		self.assertEqual(0, q.getMaxConsumption())
		q.handleSACK(SACK(1, ()))
		self.assertEqual(0, q.getMaxConsumption())
		q.append('cc')
		self.assertEqual(totalSizeOf('cc'), q.getMaxConsumption())
コード例 #10
0
ファイル: test_window.py プロジェクト: ludios/Minerva
	def test_handleSACK(self):
		"""
		handleSACK actually removes the selectively-acknowledged items from the queue 
		"""
		q = Queue()
		q.append('zero')
		q.extend(['one', 'two', 'three'])
		self.assertEqual([(0, 'zero'), (1, 'one'), (2, 'two'), (3, 'three')], list(q.iterItems()))
		self.assertEqual(False, q.handleSACK(SACK(-1, (1,))))
		self.assertEqual([(0, 'zero'), (2, 'two'), (3, 'three')], list(q.iterItems()))
		self.assertEqual(False, q.handleSACK(SACK(0, (3,))))
		self.assertEqual([(2, 'two')], list(q.iterItems()))
		q.append('four')
		self.assertEqual([(2, 'two'), (4, 'four')], list(q.iterItems()))
		# although this is a very strange SACK because it should have
		# been (4, ()), it is still legal
		self.assertEqual(False, q.handleSACK(SACK(0, (2, 4))))
		self.assertEqual([], list(q.iterItems()))
		q.append('five')
		self.assertEqual([(5, 'five')], list(q.iterItems()))