"""
Cooldowns tests.
"""
from mock import patch
from evennia.utils.test_resources import BaseEvenniaTest
from . import cooldowns
[docs]@patch("evennia.contrib.game_systems.cooldowns.cooldowns.time.time", return_value=0.0)
class TestCooldowns(BaseEvenniaTest):
[docs] def setUp(self):
super().setUp()
self.handler = cooldowns.CooldownHandler(self.char1)
[docs] def test_empty(self, mock_time):
self.assertEqual(self.handler.all, [])
self.assertTrue(self.handler.ready("a", "b", "c"))
self.assertEqual(self.handler.time_left("a", "b", "c"), 0)
[docs] def test_add(self, mock_time):
self.assertEqual(self.handler.add, self.handler.set)
self.handler.add("a", 10)
self.assertFalse(self.handler.ready("a"))
self.assertEqual(self.handler.time_left("a"), 10)
mock_time.return_value = 9.0
self.assertFalse(self.handler.ready("a"))
self.assertEqual(self.handler.time_left("a"), 1)
mock_time.return_value = 10.0
self.assertTrue(self.handler.ready("a"))
self.assertEqual(self.handler.time_left("a"), 0)
[docs] def test_add_float(self, mock_time):
self.assertEqual(self.handler.time_left("a"), 0)
self.assertEqual(self.handler.time_left("a", use_int=False), 0)
self.assertEqual(self.handler.time_left("a", use_int=True), 0)
self.handler.add("a", 5.5)
self.assertEqual(self.handler.time_left("a"), 5.5)
self.assertEqual(self.handler.time_left("a", use_int=False), 5.5)
self.assertEqual(self.handler.time_left("a", use_int=True), 6)
[docs] def test_add_multi(self, mock_time):
self.handler.add("a", 10)
self.handler.add("b", 5)
self.handler.add("c", 3)
self.assertFalse(self.handler.ready("a", "b", "c"))
self.assertEqual(self.handler.time_left("a", "b", "c"), 10)
self.assertEqual(self.handler.time_left("a", "b"), 10)
self.assertEqual(self.handler.time_left("a", "c"), 10)
self.assertEqual(self.handler.time_left("b", "c"), 5)
self.assertEqual(self.handler.time_left("c", "c"), 3)
[docs] def test_add_none(self, mock_time):
self.handler.add("a", None)
self.assertTrue(self.handler.ready("a"))
self.assertEqual(self.handler.time_left("a"), 0)
[docs] def test_add_negative(self, mock_time):
self.handler.add("a", -5)
self.assertTrue(self.handler.ready("a"))
self.assertEqual(self.handler.time_left("a"), 0)
[docs] def test_add_overwrite(self, mock_time):
self.handler.add("a", 5)
self.handler.add("a", 10)
self.handler.add("a", 3)
self.assertFalse(self.handler.ready("a"))
self.assertEqual(self.handler.time_left("a"), 3)
[docs] def test_extend(self, mock_time):
self.assertEqual(self.handler.extend("a", 10), 10)
self.assertFalse(self.handler.ready("a"))
self.assertEqual(self.handler.time_left("a"), 10)
self.assertEqual(self.handler.extend("a", 10), 20)
self.assertFalse(self.handler.ready("a"))
self.assertEqual(self.handler.time_left("a"), 20)
[docs] def test_extend_none(self, mock_time):
self.assertEqual(self.handler.extend("a", None), 0)
self.assertTrue(self.handler.ready("a"))
self.assertEqual(self.handler.time_left("a"), 0)
self.handler.add("a", 10)
self.assertEqual(self.handler.extend("a", None), 10)
self.assertEqual(self.handler.time_left("a"), 10)
[docs] def test_extend_negative(self, mock_time):
self.assertEqual(self.handler.extend("a", -5), 0)
self.assertTrue(self.handler.ready("a"))
self.assertEqual(self.handler.time_left("a"), 0)
self.handler.add("a", 10)
self.assertEqual(self.handler.extend("a", -5), 5)
self.assertEqual(self.handler.time_left("a"), 5)
[docs] def test_extend_float(self, mock_time):
self.assertEqual(self.handler.extend("a", -5.5), 0)
self.assertTrue(self.handler.ready("a"))
self.assertEqual(self.handler.time_left("a"), 0.0)
self.assertEqual(self.handler.time_left("a", use_int=False), 0.0)
self.assertEqual(self.handler.time_left("a", use_int=True), 0)
self.handler.add("a", 10.5)
self.assertEqual(self.handler.extend("a", -5.25), 5.25)
self.assertEqual(self.handler.time_left("a"), 5.25)
self.assertEqual(self.handler.time_left("a", use_int=False), 5.25)
self.assertEqual(self.handler.time_left("a", use_int=True), 6)
[docs] def test_reset_non_existent(self, mock_time):
self.handler.reset("a")
self.assertTrue(self.handler.ready("a"))
self.assertEqual(self.handler.time_left("a"), 0)
[docs] def test_reset(self, mock_time):
self.handler.set("a", 10)
self.handler.reset("a")
self.assertTrue(self.handler.ready("a"))
self.assertEqual(self.handler.time_left("a"), 0)
[docs] def test_clear(self, mock_time):
self.handler.add("a", 10)
self.handler.add("b", 10)
self.handler.add("c", 10)
self.handler.clear()
self.assertTrue(self.handler.ready("a", "b", "c"))
self.assertEqual(self.handler.time_left("a", "b", "c"), 0)
[docs] def test_cleanup(self, mock_time):
self.handler.add("a", 10)
self.handler.add("b", 5)
self.handler.add("c", 5)
self.handler.add("d", 3.5)
mock_time.return_value = 6.0
self.handler.cleanup()
self.assertEqual(self.handler.time_left("b", "c", "d"), 0)
self.assertEqual(self.handler.time_left("a"), 4)
self.assertEqual(list(self.handler.data.keys()), ["a"])
[docs] def test_cleanup_doesnt_delete_anything(self, mock_time):
self.handler.add("a", 10)
self.handler.add("b", 5)
self.handler.add("c", 5)
self.handler.add("d", 3.5)
mock_time.return_value = 1.0
self.handler.cleanup()
self.assertEqual(self.handler.time_left("d"), 2.5)
self.assertEqual(self.handler.time_left("b", "c"), 4)
self.assertEqual(self.handler.time_left("a"), 9)
self.assertEqual(list(self.handler.data.keys()), ["a", "b", "c", "d"])