Changeset - 9598ea1d80e2
[Not reviewed]
default
0 2 0
Laman - 7 months ago 2024-09-19 11:18:50

changed to report only new personal bests, no demotions, no repeated promotions
2 files changed with 23 insertions and 7 deletions:
0 comments (0 inline, 0 general)
rank_progress.py
Show inline comments
 
@@ -74,15 +74,17 @@ class RankTracker:
 
			# 150 points for the others
 
			elif self._rounded_rating - rating > 150:
 
				self._rounded_rating = rounded_rating+100
 
			else:
 
				pass
 

	
 
		self._best = max(self._best, self._rounded_rating)
 
		new_rank = self.rank
 
		return new_rank if new_rank != old_rank else False
 
		if self._rounded_rating > self._best and self.rank != old_rank:
 
			self._best = self._rounded_rating
 
			return self.rank
 
		else:
 
			return False
 

	
 

	
 
def parse_record(record):
 
	types = [int, str, str, str, str, str, int, int, int, int]
 
	columns = [f(token) for (f, token) in zip(types, record)] + [datetime.strptime(record[5][1:7], "%y%m%d")]
 
	return tuple(columns)
test.py
Show inline comments
 
@@ -15,35 +15,49 @@ class TestRankTracker(TestCase):
 
		for (rating, rank) in [(1950, "1k"), (1945, False), (2000, False), (2049, False), (2051, "1d")]:
 
			self.assertEqual(t.update(rating), rank, (rating, rank))
 

	
 
		# 2+ ranks leaps
 

	
 
		# limited when pushing the personal best
 
		# self.skipTest("not yet implemented")
 
		t = RankTracker(1100)
 
		self.assertEqual(t.update(1299), "9k")
 
		self.assertEqual(t.update(1250), "8k")
 
		self.assertEqual(t.update(1500), "6k")
 

	
 
		# regular below the personal best
 
		t = RankTracker(1201)  # 9k
 
		t.update(1000)
 
		t.update(900)
 
		t.update(849)  # 11k
 
		self.assertEqual(t.update(1250), "8k")
 

	
 
	def test_repeated_promotion(self):
 
		t = RankTracker(1945)
 

	
 
		self.assertEqual(t.update(1950), "1k")
 
		self.assertFalse(t.update(1895))
 
		self.assertEqual(t.rank, "2k")
 
		self.assertFalse(t.update( 1951))
 
		self.assertEqual(t.rank, "1k")
 
		self.assertFalse(t.update(2049))
 
		self.assertEqual(t.update(2051), "1d")
 

	
 
	def test_demotion(self):
 
		t = RankTracker(2069)
 
		self.assertEqual(t.update(1995), "1k")
 
		self.assertFalse(t.update(1995))  # 1k
 
		self.assertEqual(t.rank, "1k")
 

	
 
		t = RankTracker(1590)
 
		self.assertEqual(t.update(1387), "7k")
 
		self.assertFalse(t.update(1387))  # 7k
 
		self.assertEqual(t.rank, "7k")
 

	
 
		t = RankTracker(1087)
 
		self.assertFalse(t.update(995))
 
		self.assertEqual(t.update(940), "11k")
 
		self.assertEqual(t.rank, "10k")
 
		self.assertFalse(t.update(940))  # 11k
 
		self.assertEqual(t.rank, "11k")
 

	
 
	def test_edges_cases(self):
 
		t = RankTracker(-900)
 
		self.assertEqual(t.rank, "30k")
 
		with self.assertRaises(AssertionError):
 
			t.update(-901)
0 comments (0 inline, 0 general)