Files @ 068be3e00177
Branch filter:

Location: Rank-Progress/test.py

Laman
ranks tracked by the RankTracker
from unittest import TestCase

from rank_progress import RankTracker


class TestRankTracker(TestCase):
	def test_no_change(self):
		t = RankTracker(1945)  # 2k
		for r in [1945, 1949, 1900, 1850]:
			self.assertFalse(t.update(r), r)

	def test_promotion(self):
		# basic
		t = RankTracker(1945)
		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_demotion(self):
		t = RankTracker(2069)
		self.assertEqual(t.update(1995), "1k")

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

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

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

		t = RankTracker(2700)
		self.assertEqual(t.rank, "7d")
		self.assertFalse(t.update(2750))
		self.assertFalse(t.update(2800))