1
0
mirror of synced 2024-12-01 00:57:18 +01:00
bemaniutils/bemani/tests/test_ValidatedDict.py
2019-12-08 21:43:49 +00:00

257 lines
12 KiB
Python

# vim: set fileencoding=utf-8
import unittest
from bemani.common import ValidatedDict, intish
class TestIntish(unittest.TestCase):
def test_none(self) -> None:
self.assertEqual(intish(None), None)
def test_int(self) -> None:
self.assertEqual(intish('3'), 3)
def test_str(self) -> None:
self.assertEqual(intish('str'), None)
class TestValidatedDict(unittest.TestCase):
def test_empty_dict(self) -> None:
# Empty dictionary gets
validict = ValidatedDict()
self.assertEqual(validict.get_int('int'), 0)
self.assertEqual(validict.get_int('int', 2), 2)
self.assertEqual(validict.get_float('float'), 0.0)
self.assertEqual(validict.get_float('float', 2.0), 2.0)
self.assertEqual(validict.get_bool('bool'), False)
self.assertEqual(validict.get_bool('bool', True), True)
self.assertEqual(validict.get_str('str'), '')
self.assertEqual(validict.get_str('str', 'test'), 'test')
self.assertEqual(validict.get_bytes('bytes'), b'')
self.assertEqual(validict.get_bytes('bytes', b'test'), b'test')
self.assertEqual(validict.get_int_array('int_array', 3), [0, 0, 0])
self.assertEqual(validict.get_int_array('int_array', 3, [1, 2, 3]), [1, 2, 3])
self.assertEqual(validict.get_bool_array('bool_array', 2), [False, False])
self.assertEqual(validict.get_bool_array('bool_array', 2, [False, True]), [False, True])
self.assertEqual(validict.get_str_array('str_array', 3), ['', '', ''])
self.assertEqual(validict.get_str_array('str_array', 3, ['1', '2', '3']), ['1', '2', '3'])
self.assertEqual(validict.get_bytes_array('bytes_array', 3), [b'', b'', b''])
self.assertEqual(validict.get_bytes_array('bytes_array', 3, [b'1', b'2', b'3']), [b'1', b'2', b'3'])
self.assertTrue(isinstance(validict.get_dict('dict'), dict))
self.assertEqual(validict.get_dict('dict').get_int('test'), 0)
def test_normal_dict(self) -> None:
# Existing info gets
validict = ValidatedDict({
'int': 5,
'float': 5.5,
'bool': True,
'str': 'foobar',
'bytes': b'foobar',
'int_array': [3, 2, 1],
'bool_array': [True, False],
'str_array': ['3', '4', '5'],
'bytes_array': [b'3', b'5', b'7'],
'dict': {'test': 123},
})
self.assertEqual(validict.get_int('int'), 5)
self.assertEqual(validict.get_int('int', 2), 5)
self.assertEqual(validict.get_float('float'), 5.5)
self.assertEqual(validict.get_float('float', 2.0), 5.5)
self.assertEqual(validict.get_bool('bool'), True)
self.assertEqual(validict.get_bool('bool', False), True)
self.assertEqual(validict.get_str('str'), 'foobar')
self.assertEqual(validict.get_str('str', 'test'), 'foobar')
self.assertEqual(validict.get_bytes('bytes'), b'foobar')
self.assertEqual(validict.get_bytes('bytes', b'test'), b'foobar')
self.assertEqual(validict.get_int_array('int_array', 3), [3, 2, 1])
self.assertEqual(validict.get_int_array('int_array', 3, [1, 2, 3]), [3, 2, 1])
self.assertEqual(validict.get_bool_array('bool_array', 2), [True, False])
self.assertEqual(validict.get_bool_array('bool_array', 2, [False, True]), [True, False])
self.assertEqual(validict.get_str_array('str_array', 3), ['3', '4', '5'])
self.assertEqual(validict.get_str_array('str_array', 3, ['1', '2', '3']), ['3', '4', '5'])
self.assertEqual(validict.get_bytes_array('bytes_array', 3), [b'3', b'5', b'7'])
self.assertEqual(validict.get_bytes_array('bytes_array', 3, [b'1', b'2', b'3']), [b'3', b'5', b'7'])
self.assertTrue(isinstance(validict.get_dict('dict'), dict))
self.assertEqual(validict.get_dict('dict').get_int('test'), 123)
def test_default_on_invalid(self) -> None:
# Default on invalid info stored
validict = ValidatedDict({
'int': 'five',
'float': 'five',
'bool': 'true',
'str': 123,
'bytes': 'str',
'int_array': [3, 2, 1, 0],
'bool_array': [True, False],
'str_array': ['3', '2', '1', '0'],
'bytes_array': [b'3', b'2', b'1', b'0'],
'dict': 'not_a_dict',
})
self.assertEqual(validict.get_int('int'), 0)
self.assertEqual(validict.get_int('int', 2), 2)
self.assertEqual(validict.get_float('float'), 0.0)
self.assertEqual(validict.get_float('float', 2.0), 2.0)
self.assertEqual(validict.get_bool('bool'), False)
self.assertEqual(validict.get_bool('bool', True), True)
self.assertEqual(validict.get_str('str'), '')
self.assertEqual(validict.get_str('str', 'test'), 'test')
self.assertEqual(validict.get_bytes('bytes'), b'')
self.assertEqual(validict.get_bytes('bytes', b'test'), b'test')
self.assertEqual(validict.get_int_array('int_array', 3), [0, 0, 0])
self.assertEqual(validict.get_int_array('int_array', 3, [1, 2, 3]), [1, 2, 3])
self.assertEqual(validict.get_bool_array('bool_array', 3), [False, False, False])
self.assertEqual(validict.get_bool_array('bool_array', 3, [False, True, True]), [False, True, True])
self.assertEqual(validict.get_str_array('str_array', 3), ['', '', ''])
self.assertEqual(validict.get_str_array('str_array', 3, ['1', '2', '3']), ['1', '2', '3'])
self.assertEqual(validict.get_bytes_array('bytes_array', 3), [b'', b'', b''])
self.assertEqual(validict.get_bytes_array('bytes_array', 3, [b'1', b'2', b'3']), [b'1', b'2', b'3'])
self.assertTrue(isinstance(validict.get_dict('dict'), dict))
self.assertEqual(validict.get_dict('dict').get_int('test'), 0)
def test_replace_int(self) -> None:
# Verify replace int
validict = ValidatedDict({
'int': 5,
})
validict.replace_int('int', 3)
self.assertEqual(validict.get_int('int'), 3)
validict.replace_int('int', None)
self.assertEqual(validict.get_int('int'), 3)
validict.replace_int('int', 'three')
self.assertEqual(validict.get_int('int'), 3)
def test_replace_float(self) -> None:
# Verify replace float
validict = ValidatedDict({
'float': 5.0,
})
validict.replace_float('float', 3.0)
self.assertEqual(validict.get_float('float'), 3.0)
validict.replace_float('float', None)
self.assertEqual(validict.get_float('float'), 3.0)
validict.replace_float('float', 'three')
self.assertEqual(validict.get_float('float'), 3.0)
def test_replace_bool(self) -> None:
# Verify replace bool
validict = ValidatedDict({
'bool': False,
})
validict.replace_bool('bool', True)
self.assertEqual(validict.get_bool('bool'), True)
validict.replace_bool('bool', None)
self.assertEqual(validict.get_bool('bool'), True)
validict.replace_bool('bool', 'three')
self.assertEqual(validict.get_bool('bool'), True)
def test_replace_str(self) -> None:
# Verify replace str
validict = ValidatedDict({
'str': 'blah',
})
validict.replace_str('str', 'foobar')
self.assertEqual(validict.get_str('str'), 'foobar')
validict.replace_str('str', None)
self.assertEqual(validict.get_str('str'), 'foobar')
validict.replace_str('str', 5)
self.assertEqual(validict.get_str('str'), 'foobar')
def test_replace_bytes(self) -> None:
# Verify replace bytes
validict = ValidatedDict({
'bytes': 'blah',
})
validict.replace_bytes('bytes', b'foobar')
self.assertEqual(validict.get_bytes('bytes'), b'foobar')
validict.replace_bytes('bytes', None)
self.assertEqual(validict.get_bytes('bytes'), b'foobar')
validict.replace_bytes('bytes', 5)
self.assertEqual(validict.get_bytes('bytes'), b'foobar')
def test_replace_int_array(self) -> None:
# Verify replace int_array
validict = ValidatedDict({
'int_array': [1, 2, 3]
})
validict.replace_int_array('int_array', 3, [3, 2, 1])
self.assertEqual(validict.get_int_array('int_array', 3), [3, 2, 1])
validict.replace_int_array('int_array', 3, None)
self.assertEqual(validict.get_int_array('int_array', 3), [3, 2, 1])
validict.replace_int_array('int_array', 3, 'bla')
self.assertEqual(validict.get_int_array('int_array', 3), [3, 2, 1])
validict.replace_int_array('int_array', 3, [3, 2, 1, 0])
self.assertEqual(validict.get_int_array('int_array', 3), [3, 2, 1])
def test_replace_bool_array(self) -> None:
# Verify replace bool_array
validict = ValidatedDict({
'bool_array': [False, True],
})
validict.replace_bool_array('bool_array', 2, [True, False])
self.assertEqual(validict.get_bool_array('bool_array', 2), [True, False])
validict.replace_bool_array('bool_array', 2, None)
self.assertEqual(validict.get_bool_array('bool_array', 2), [True, False])
validict.replace_bool_array('bool_array', 2, 'bla')
self.assertEqual(validict.get_bool_array('bool_array', 2), [True, False])
validict.replace_bool_array('bool_array', 2, [True, True, True])
self.assertEqual(validict.get_bool_array('bool_array', 2), [True, False])
def test_replace_str_array(self) -> None:
# Verify replace str_array
validict = ValidatedDict({
'str_array': ['1', '2', '3']
})
validict.replace_str_array('str_array', 3, ['3', '2', '1'])
self.assertEqual(validict.get_str_array('str_array', 3), ['3', '2', '1'])
validict.replace_str_array('str_array', 3, None)
self.assertEqual(validict.get_str_array('str_array', 3), ['3', '2', '1'])
validict.replace_str_array('str_array', 3, 'bla')
self.assertEqual(validict.get_str_array('str_array', 3), ['3', '2', '1'])
validict.replace_str_array('str_array', 3, ['3', '2', '1', '0'])
self.assertEqual(validict.get_str_array('str_array', 3), ['3', '2', '1'])
def test_replace_bytes_array(self) -> None:
# Verify replace bytes_array
validict = ValidatedDict({
'bytes_array': [b'1', b'2', b'3']
})
validict.replace_bytes_array('bytes_array', 3, [b'3', b'2', b'1'])
self.assertEqual(validict.get_bytes_array('bytes_array', 3), [b'3', b'2', b'1'])
validict.replace_bytes_array('bytes_array', 3, None)
self.assertEqual(validict.get_bytes_array('bytes_array', 3), [b'3', b'2', b'1'])
validict.replace_bytes_array('bytes_array', 3, 'bla')
self.assertEqual(validict.get_bytes_array('bytes_array', 3), [b'3', b'2', b'1'])
validict.replace_bytes_array('bytes_array', 3, [b'3', b'2', b'1', b'0'])
self.assertEqual(validict.get_bytes_array('bytes_array', 3), [b'3', b'2', b'1'])
def test_replace_dict(self) -> None:
# Verify replace dict
validict = ValidatedDict({
'dict': {},
})
validict.replace_dict('dict', {'yay': 'bla'})
self.assertTrue(isinstance(validict.get_dict('dict'), dict))
self.assertEqual(validict.get_dict('dict').get_str('yay'), 'bla')
validict.replace_dict('dict', None)
self.assertEqual(validict.get_dict('dict').get_str('yay'), 'bla')
validict.replace_dict('dict', 'three')
self.assertEqual(validict.get_dict('dict').get_str('yay'), 'bla')
def test_increment_int(self) -> None:
# Verify increment_int
validict = ValidatedDict({
'int': 5,
'int2': 'str',
})
validict.increment_int('int')
self.assertEqual(validict.get_int('int'), 6)
validict.increment_int('int2')
self.assertEqual(validict.get_int('int2'), 1)
validict.increment_int('int3')
self.assertEqual(validict.get_int('int3'), 1)