151 lines
4.0 KiB
Python
151 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],
|
|
)
|