<reponame>Garmelon/bowl
import unittest

from bowl import Element, RenderedElementCache

__all__ = ["TestRenderedElementCache"]

class TestRenderedElementCache(unittest.TestCase):

    def setUp(self):
        self.cache = RenderedElementCache()
        self.e1 = Element("e1", None)
        self.e2 = Element("e2", "e1")
        self.e3 = Element("e3", "xyz")
        self.e1_2 = Element("e1", "bla")

    def test_adding_and_getting(self):
        self.assertEqual(self.cache.get("e1"), None)
        self.assertEqual(self.cache.get("e2"), None)

        self.cache.add(self.e1)
        self.assertEqual(self.cache.get("e1"), self.e1)

        self.cache.add(self.e2)
        self.assertEqual(self.cache.get("e2"), self.e2)

        self.cache.add(self.e1_2)
        self.assertEqual(self.cache.get("e1"), self.e1_2)

        self.assertEqual(self.cache.get("e3"), None)
        self.cache.add(self.e3)
        self.assertEqual(self.cache.get("e3"), self.e3)

    def test_invalidating(self):
        self.assertEqual(self.cache.get("e1"), None)
        self.assertEqual(self.cache.get("e2"), None)
        self.cache.add(self.e1)
        self.cache.add(self.e2)
        self.assertEqual(self.cache.get("e1"), self.e1)
        self.assertEqual(self.cache.get("e2"), self.e2)

        self.cache.invalidate("e1")

        self.assertEqual(self.cache.get("e1"), None)
        self.assertEqual(self.cache.get("e2"), self.e2)

        self.cache.add(self.e1)
        self.cache.invalidate_all()

        self.assertEqual(self.cache.get("e1"), None)
        self.assertEqual(self.cache.get("e2"), None)

import unittest

from bowl import Element, RenderedElementCache

__all__ = ["TestRenderedElementCache"]

class TestRenderedElementCache(unittest.TestCase):

    def setUp(self):
        self.cache = RenderedElementCache()
        self.e1 = Element("e1", None)
        self.e2 = Element("e2", "e1")
        self.e3 = Element("e3", "xyz")
        self.e1_2 = Element("e1", "bla")

    def test_adding_and_getting(self):
        self.assertEqual(self.cache.get("e1"), None)
        self.assertEqual(self.cache.get("e2"), None)

        self.cache.add(self.e1)
        self.assertEqual(self.cache.get("e1"), self.e1)

        self.cache.add(self.e2)
        self.assertEqual(self.cache.get("e2"), self.e2)

        self.cache.add(self.e1_2)
        self.assertEqual(self.cache.get("e1"), self.e1_2)

        self.assertEqual(self.cache.get("e3"), None)
        self.cache.add(self.e3)
        self.assertEqual(self.cache.get("e3"), self.e3)

    def test_invalidating(self):
        self.assertEqual(self.cache.get("e1"), None)
        self.assertEqual(self.cache.get("e2"), None)
        self.cache.add(self.e1)
        self.cache.add(self.e2)
        self.assertEqual(self.cache.get("e1"), self.e1)
        self.assertEqual(self.cache.get("e2"), self.e2)

        self.cache.invalidate("e1")

        self.assertEqual(self.cache.get("e1"), None)
        self.assertEqual(self.cache.get("e2"), self.e2)

        self.cache.add(self.e1)
        self.cache.invalidate_all()

        self.assertEqual(self.cache.get("e1"), None)
        self.assertEqual(self.cache.get("e2"), None)