emmental/curds/test_sort.py

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")