Files
@ 9598ea1d80e2
Branch filter:
Location: Rank-Progress/test.py - annotation
9598ea1d80e2
1.8 KiB
text/x-python
changed to report only new personal bests, no demotions, no repeated promotions
6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 9598ea1d80e2 9598ea1d80e2 9598ea1d80e2 9598ea1d80e2 9598ea1d80e2 9598ea1d80e2 9598ea1d80e2 9598ea1d80e2 9598ea1d80e2 9598ea1d80e2 9598ea1d80e2 6644c5267fb5 6644c5267fb5 9598ea1d80e2 9598ea1d80e2 6644c5267fb5 6644c5267fb5 9598ea1d80e2 9598ea1d80e2 6644c5267fb5 6644c5267fb5 6644c5267fb5 9598ea1d80e2 9598ea1d80e2 9598ea1d80e2 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 6644c5267fb5 | 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
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.assertFalse(t.update(1995)) # 1k
self.assertEqual(t.rank, "1k")
t = RankTracker(1590)
self.assertFalse(t.update(1387)) # 7k
self.assertEqual(t.rank, "7k")
t = RankTracker(1087)
self.assertFalse(t.update(995))
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)
t = RankTracker(2700)
self.assertEqual(t.rank, "7d")
self.assertFalse(t.update(2750))
self.assertFalse(t.update(2800))
|