49 lines
1.9 KiB
Python
49 lines
1.9 KiB
Python
# Copyright 2019 (c) Anna Schumaker.
|
|
from . import sort
|
|
import string
|
|
import unittest
|
|
|
|
class CharSort:
|
|
def __init__(self, char):
|
|
self.a = None
|
|
self.c = char
|
|
def sort_key(self, arg=None):
|
|
self.a = arg
|
|
return [ self.c ]
|
|
|
|
|
|
class TestSort(unittest.TestCase):
|
|
def test_bisect(self):
|
|
chars = [ CharSort(c) for c in string.ascii_lowercase ]
|
|
|
|
self.assertEqual(sort.bisect([ ], "a"), (0, None))
|
|
self.assertEqual(sort.bisect(chars, ["A"]), (0, None))
|
|
self.assertEqual(sort.bisect(chars, ["|"]), (26, None))
|
|
|
|
for i, c in enumerate(string.ascii_lowercase):
|
|
self.assertEqual(sort.bisect(chars, [c]), (i, chars[i]))
|
|
self.assertIsNone(chars[i].a)
|
|
|
|
for i, c in enumerate(string.ascii_lowercase):
|
|
self.assertEqual(sort.bisect(chars, [c], i), (i, chars[i]))
|
|
self.assertEqual(chars[i].a, i)
|
|
|
|
def test_key(self):
|
|
self.assertEqual(sort.key("Test Key"), [ "test", "key" ])
|
|
self.assertEqual(sort.key("Test! Key!"), [ "test", "key" ])
|
|
self.assertEqual(sort.key("Test - Key"), [ "test", "key" ])
|
|
self.assertEqual(sort.key("The Test Key"), [ "test", "key" ])
|
|
self.assertEqual(sort.key("Test The Key"), [ "test", "the", "key" ])
|
|
self.assertEqual(sort.key("A Test Key"), [ "test", "key" ])
|
|
self.assertEqual(sort.key("Test A Key"), [ "test", "a", "key" ])
|
|
self.assertEqual(sort.key("Toäst Keäy"), [ "toast", "keay" ])
|
|
|
|
def test_key_path(self):
|
|
self.assertEqual(sort.key("/a/b/c/d/"), [ "abcd" ])
|
|
self.assertEqual(sort.key("trier/Test Album"), [ "trier", "Test Album" ])
|
|
self.assertEqual(sort.key("trier/Test Album/"), [ "trier", "Test Album" ])
|
|
|
|
def test_normalize(self):
|
|
self.assertEqual(sort.normalize("Test Text"), "Test Text")
|
|
self.assertEqual(sort.normalize("Toäst Keäy"), "Toast Keay")
|