2022-08-19 15:14:38 -04:00
|
|
|
|
# Copyright 2022 (c) Anna Schumaker
|
|
|
|
|
"""Tests our string formatting functions."""
|
|
|
|
|
import unittest
|
|
|
|
|
from emmental import format
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class TestFormatter(unittest.TestCase):
|
|
|
|
|
"""Tests our formatting functions."""
|
|
|
|
|
|
|
|
|
|
def test_search(self):
|
|
|
|
|
"""Test formatting a case-insensitive search query."""
|
|
|
|
|
self.assertIsNone(format.search(""))
|
|
|
|
|
self.assertIsNone(format.search(" "))
|
|
|
|
|
self.assertEqual(format.search(" TeSt "), "*test*")
|
|
|
|
|
self.assertEqual(format.search("*Test*"), "*test*")
|
|
|
|
|
self.assertEqual(format.search("^Test*"), "test*")
|
|
|
|
|
self.assertEqual(format.search("^*Test*"), "*test*")
|
|
|
|
|
self.assertEqual(format.search("*Test$"), "*test")
|
|
|
|
|
self.assertEqual(format.search("^"), "*")
|
|
|
|
|
self.assertEqual(format.search("$"), "*")
|
2022-08-10 12:22:30 -04:00
|
|
|
|
|
|
|
|
|
def test_ignore_words(self):
|
|
|
|
|
"""Test words that aren't included at the start of the sort key."""
|
|
|
|
|
self.assertSetEqual(format.IGNORE_WORDS, set(["a", "an", "the", ""]))
|
|
|
|
|
|
|
|
|
|
def test_sort_key(self):
|
|
|
|
|
"""Test translating a string into a sort key."""
|
|
|
|
|
self.assertEqual(format.sort_key(""), ())
|
|
|
|
|
self.assertEqual(format.sort_key("Test Text"), ("test", "text"))
|
|
|
|
|
self.assertEqual(format.sort_key("Tést Téxt"), ("tést", "téxt"))
|
|
|
|
|
self.assertEqual(format.sort_key("A Test"), ("test",))
|
|
|
|
|
self.assertEqual(format.sort_key("A"), ("a",))
|
|
|
|
|
self.assertEqual(format.sort_key("An Extra Test"), ("extra", "test",))
|
|
|
|
|
self.assertEqual(format.sort_key("An"), ("an",))
|
|
|
|
|
self.assertEqual(format.sort_key("The Test"), ("test",))
|
|
|
|
|
self.assertEqual(format.sort_key("The"), ("the",))
|
|
|
|
|
self.assertEqual(format.sort_key("Test The"), ("test", "the"))
|
|
|
|
|
self.assertEqual(format.sort_key("Test-Text"), ("test", "text"))
|
|
|
|
|
self.assertEqual(format.sort_key("Test_Text"), ("test", "text"))
|
|
|
|
|
self.assertEqual(format.sort_key("\"Test\" Text"), ("test", "text"))
|
|
|
|
|
self.assertEqual(format.sort_key("“Test” Text"), ("test", "text"))
|
|
|
|
|
self.assertEqual(format.sort_key("'Test' Text"), ("test", "text"))
|
|
|
|
|
self.assertEqual(format.sort_key("Fish N’ Chips"),
|
|
|
|
|
("fish", "n", "chips"))
|
|
|
|
|
self.assertEqual(format.sort_key("ac/dc"), ("ac", "dc"))
|
|
|
|
|
self.assertEqual(format.sort_key("/a/B/c/D"),
|
|
|
|
|
("a", "b", "c", "d"))
|