1
0
mirror of synced 2024-11-24 14:30:11 +01:00
bemaniutils/bemani/tests/test_AFPUtils.py

150 lines
4.0 KiB
Python

# vim: set fileencoding=utf-8
import unittest
from bemani.utils.afputils import parse_intlist, adjust_background_loop
class TestAFPUtils(unittest.TestCase):
def test_parse_intlist(self) -> None:
# Simple
self.assertEqual(
parse_intlist("5"),
[5],
)
# Comma separated
self.assertEqual(
parse_intlist("5,7,9"),
[5, 7, 9],
)
# Range
self.assertEqual(
parse_intlist("5-9"),
[5, 6, 7, 8, 9],
)
# Duplicate
self.assertEqual(
parse_intlist("5,7,7,9"),
[5, 7, 9],
)
# Overlapping range
self.assertEqual(
parse_intlist("5-9,8-10"),
[5, 6, 7, 8, 9, 10],
)
# Out of order
self.assertEqual(
parse_intlist("5,3,1"),
[1, 3, 5],
)
# All manner of combos
self.assertEqual(
parse_intlist("5,13-17,23,9,27-29,23,33"),
[5, 9, 13, 14, 15, 16, 17, 23, 27, 28, 29, 33],
)
def test_adjust_background_loop(self) -> None:
# No adjustment
self.assertEqual(
adjust_background_loop(
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
background_loop_start=None,
background_loop_end=None,
background_loop_offset=None,
),
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
)
# Specify start
self.assertEqual(
adjust_background_loop(
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
background_loop_start=6,
background_loop_end=None,
background_loop_offset=None,
),
[6, 7, 8, 9, 10],
)
# Specify end
self.assertEqual(
adjust_background_loop(
[1, 2, 3, 4, 5],
background_loop_start=None,
background_loop_end=5,
background_loop_offset=None,
),
[1, 2, 3, 4, 5],
)
# Specify start and end
self.assertEqual(
adjust_background_loop(
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
background_loop_start=5,
background_loop_end=9,
background_loop_offset=None,
),
[5, 6, 7, 8, 9],
)
# Specify loop offset
self.assertEqual(
adjust_background_loop(
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
background_loop_start=None,
background_loop_end=None,
background_loop_offset=7,
),
[7, 8, 9, 10, 1, 2, 3, 4, 5, 6],
)
# Specify start and loop offset
self.assertEqual(
adjust_background_loop(
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
background_loop_start=6,
background_loop_end=None,
background_loop_offset=8,
),
[8, 9, 10, 6, 7],
)
# Specify end and loop offset
self.assertEqual(
adjust_background_loop(
[1, 2, 3, 4, 5],
background_loop_start=None,
background_loop_end=5,
background_loop_offset=3,
),
[3, 4, 5, 1, 2],
)
# Specify start, end and loop offset
self.assertEqual(
adjust_background_loop(
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
background_loop_start=5,
background_loop_end=9,
background_loop_offset=6,
),
[6, 7, 8, 9, 5],
)
# Only one frame.
self.assertEqual(
adjust_background_loop(
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
background_loop_start=5,
background_loop_end=5,
background_loop_offset=None,
),
[5],
)