# 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("$"), "*") 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"))