Пример #1
0
class TestInvertedIndex(unittest.TestCase):
    def setUp(self):
        self.client = Redis(decode_responses=True)
        self.client.flushdb()

        self.laptops = InvertedIndex(self.client)

    def test_add_index(self):
        self.assertEqual(self.laptops.get_keywords("MacBook Pro MF840CH"),
                         set())

        self.laptops.add_index("MacBook Pro MF840CH", "Apple", "MacOS",
                               "13.3inch")

        self.assertNotEqual(self.laptops.get_keywords("MacBook Pro MF840CH"),
                            set())

    def test_remove_index(self):
        self.laptops.add_index("MacBook Pro MF840CH", "Apple", "MacOS",
                               "13.3inch")
        self.laptops.remove_index("MacBook Pro MF840CH", "Apple", "MacOS",
                                  "13.3inch")
        self.assertEqual(self.laptops.get_keywords("MacBook Pro MF840CH"),
                         set())

    def test_get_keywords(self):
        self.assertEqual(self.laptops.get_keywords("MacBook Pro MF840CH"),
                         set())

        self.laptops.add_index("MacBook Pro MF840CH", "Apple", "MacOS",
                               "13.3inch")

        self.assertEqual(self.laptops.get_keywords("MacBook Pro MF840CH"),
                         {"Apple", "MacOS", "13.3inch"})

    def test_get_items(self):
        self.assertEqual(self.laptops.get_items("Apple"), set())
        self.assertEqual(self.laptops.get_items("Apple", "MacOS"), set())

        self.laptops.add_index("MacBook Pro MF840CH", "Apple", "MacOS",
                               "13.3inch")
        self.laptops.add_index("MacBook Air MMGF2CH", "Apple", "MacOS",
                               "13.3inch")

        self.assertEqual(self.laptops.get_items("Apple"),
                         {"MacBook Pro MF840CH", "MacBook Air MMGF2CH"})
        self.assertEqual(self.laptops.get_items("Apple", "MacOS", "13.3inch"),
                         {"MacBook Pro MF840CH", "MacBook Air MMGF2CH"})
Пример #2
0
class TestInvertedIndex(unittest.TestCase):
    def setUp(self):
        self.client = Redis()
        self.client.flushdb()

        self.laptops = InvertedIndex(self.client)

    def test_add_index(self):
        self.assertEqual(self.laptops.get_keywords("laptop1"), set())

        self.laptops.add_index("laptop1", 10, "kw1", "kw2", "kw3")

        self.assertNotEqual(self.laptops.get_keywords("laptop1"), set())

    def test_remove_index(self):
        self.laptops.add_index("laptop1", 10, "kw1", "kw2", "kw3")
        self.laptops.remove_index("laptop1", "kw1", "kw2")
        self.assertEqual(self.laptops.get_keywords("laptop1"), {"kw3"})

    def test_get_keywords(self):
        self.assertEqual(self.laptops.get_keywords("laptop1"), set())

        self.laptops.add_index("laptop1", 10, "kw1")
        self.assertEqual(self.laptops.get_keywords("laptop1"), {"kw1"})

        self.laptops.add_index("laptop1", 10, "kw2", "kw3")
        self.assertEqual(self.laptops.get_keywords("laptop1"),
                         {"kw1", "kw2", "kw3"})

    def test_get_items_return_empty_list_when_no_related_items(self):
        self.assertEqual(self.laptops.get_items("kw1", "kw2", "kw3"), [])

    def test_get_items_only_return_items_with_give_keywords_in_orders(self):
        self.laptops.add_index("laptop1", 10, "kw1", "kw2", "kw3")
        self.laptops.add_index("laptop2", 20, "kw1", "kw2", "kw3")
        self.laptops.add_index("laptop3", 30, "kw4")

        self.assertEqual(self.laptops.get_items("kw1", "kw2", "kw3"),
                         ["laptop2", "laptop1"])

        self.assertEqual(self.laptops.get_items("kw4"), ["laptop3"])

    def test_get_items_with_weight(self):
        self.laptops.add_index("laptop1", 10, "kw1", "kw2", "kw3")
        self.laptops.add_index("laptop2", 20, "kw1", "kw2", "kw3")
        self.laptops.add_index("laptop3", 30, "kw4")

        self.assertEqual(
            self.laptops.get_items_with_weight("kw1", "kw2", "kw3"),
            [("laptop2", 20), ("laptop1", 10)])