def setUp(self):
     self.TOTAL_FILTERS_VALUE = 5
     self.ppsdnPersistentStoreDict = PpsdnPersistentStoreDict(
         "GI01SUMO-00001")
 def setUp(self):
     self.TOTAL_FILTERS_VALUE = 5
     self.ppsdnPersistentStoreDict = PpsdnPersistentStoreDict("GI01SUMO-00001")
class TestPpsdnPersistentStoreDict(MiUnitTest):
    def setUp(self):
        self.TOTAL_FILTERS_VALUE = 5
        self.ppsdnPersistentStoreDict = PpsdnPersistentStoreDict(
            "GI01SUMO-00001")

    def tearDown(self):
        self.ppsdnPersistentStoreDict.clear(
        )  # NOTE: This technically assumes the delete functionality works.

    def test_initialize_success(self):
        self.assertFalse(self.ppsdnPersistentStoreDict.isInitialized())
        totalFilters = self.TOTAL_FILTERS_VALUE
        self.assertIs(type(totalFilters), int)
        self.ppsdnPersistentStoreDict.initialize(totalFilters)
        self.assertTrue(self.ppsdnPersistentStoreDict.isInitialized())

    def test_initialize_fail_badType(self):
        totalFilters = u"this will fail"
        self.assertIsNot(type(totalFilters), int)
        with self.assertRaises(TypeError) as contextManager:
            self.ppsdnPersistentStoreDict.initialize(totalFilters)
        self.assertEqual(contextManager.exception.args[0],
                         "totalFilters must be of type 'int'.")

    def test_initialize_fail_alreadyInitialized(self):
        self.test_initialize_success()
        totalFilters = self.TOTAL_FILTERS_VALUE
        self.assertIs(type(totalFilters), int)
        with self.assertRaises(Exception) as contextManager:
            self.ppsdnPersistentStoreDict.initialize(totalFilters)
        self.assertEqual(contextManager.exception.args[0],
                         "Already initialized.")

    def test_useFilter_mixed(self):
        self.test_initialize_success()
        # Success Test
        for x in range(0, self.TOTAL_FILTERS_VALUE):
            self.assertTrue(self.ppsdnPersistentStoreDict.canUseFilter())
            self.ppsdnPersistentStoreDict.useFilter()
        # Fail Test
        self.assertFalse(self.ppsdnPersistentStoreDict.canUseFilter())
        with self.assertRaises(Exception) as contextManager:
            self.ppsdnPersistentStoreDict.useFilter()
        self.assertEqual(contextManager.exception.args[0],
                         "No filters available for use.")

    def test_canUseFilter_fail_notInitialized(self):
        self.assertFalse(self.ppsdnPersistentStoreDict.isInitialized())
        with self.assertRaises(Exception) as contextManager:
            self.ppsdnPersistentStoreDict.canUseFilter()
        self.assertEqual(contextManager.exception.args[0], "Not initialized.")

    def test_useFilter_fail_notInitialized(self):
        self.assertFalse(self.ppsdnPersistentStoreDict.isInitialized())
        with self.assertRaises(Exception) as contextManager:
            self.ppsdnPersistentStoreDict.useFilter()
        self.assertEqual(contextManager.exception.args[0], "Not initialized.")
class TestPpsdnPersistentStoreDict(MiUnitTest):
    def setUp(self):
        self.TOTAL_FILTERS_VALUE = 5
        self.ppsdnPersistentStoreDict = PpsdnPersistentStoreDict("GI01SUMO-00001")

    def tearDown(self):
        self.ppsdnPersistentStoreDict.clear() # NOTE: This technically assumes the delete functionality works.

    def test_initialize_success(self):
        self.assertFalse(self.ppsdnPersistentStoreDict.isInitialized())
        totalFilters = self.TOTAL_FILTERS_VALUE
        self.assertIs(type(totalFilters), int)
        self.ppsdnPersistentStoreDict.initialize(totalFilters)
        self.assertTrue(self.ppsdnPersistentStoreDict.isInitialized())

    def test_initialize_fail_badType(self):
        totalFilters = u"this will fail"
        self.assertIsNot(type(totalFilters), int)
        with self.assertRaises(TypeError) as contextManager:
            self.ppsdnPersistentStoreDict.initialize(totalFilters)
        self.assertEqual(contextManager.exception.args[0], "totalFilters must be of type 'int'.")

    def test_initialize_fail_alreadyInitialized(self):
        self.test_initialize_success()
        totalFilters = self.TOTAL_FILTERS_VALUE
        self.assertIs(type(totalFilters), int)
        with self.assertRaises(Exception) as contextManager:
            self.ppsdnPersistentStoreDict.initialize(totalFilters)
        self.assertEqual(contextManager.exception.args[0], "Already initialized.")

    def test_useFilter_mixed(self):
        self.test_initialize_success()
        # Success Test
        for x in range(0, self.TOTAL_FILTERS_VALUE):
            self.assertTrue(self.ppsdnPersistentStoreDict.canUseFilter())
            self.ppsdnPersistentStoreDict.useFilter()
        # Fail Test
        self.assertFalse(self.ppsdnPersistentStoreDict.canUseFilter())
        with self.assertRaises(Exception) as contextManager:
            self.ppsdnPersistentStoreDict.useFilter()
        self.assertEqual(contextManager.exception.args[0], "No filters available for use.")

    def test_canUseFilter_fail_notInitialized(self):
        self.assertFalse(self.ppsdnPersistentStoreDict.isInitialized())
        with self.assertRaises(Exception) as contextManager:
            self.ppsdnPersistentStoreDict.canUseFilter()
        self.assertEqual(contextManager.exception.args[0], "Not initialized.")

    def test_useFilter_fail_notInitialized(self):
        self.assertFalse(self.ppsdnPersistentStoreDict.isInitialized())
        with self.assertRaises(Exception) as contextManager:
            self.ppsdnPersistentStoreDict.useFilter()
        self.assertEqual(contextManager.exception.args[0], "Not initialized.")