def test_get_metrics_returns_copy(self):
     dict_manager = dictionary_manager.DictionaryMetricsManager()
     round_0_metrics = {'a': 2, 'b': 5}
     dict_manager.save_metrics(round_0_metrics, 0)
     dict_manager.metrics[1] = 'foo'
     expected_metrics = collections.OrderedDict([(0, round_0_metrics)])
     self.assertEqual(dict_manager.metrics, expected_metrics)
 def test_clear_all_metrics(self):
     dict_manager = dictionary_manager.DictionaryMetricsManager()
     dict_manager.save_metrics({'a': 1}, 0)
     dict_manager.save_metrics({'b': 2}, 5)
     dict_manager.save_metrics({'c': 3}, 10)
     dict_manager.clear_metrics(round_num=0)
     self.assertEqual(dict_manager.metrics, collections.OrderedDict())
     self.assertIsNone(dict_manager.latest_round_num)
 def test_clear_metrics_removes_rounds_equal_to_input_arg(self):
     dict_manager = dictionary_manager.DictionaryMetricsManager()
     dict_manager.save_metrics({'a': 1}, 0)
     dict_manager.save_metrics({'b': 2}, 5)
     dict_manager.save_metrics({'c': 3}, 10)
     dict_manager.clear_metrics(round_num=10)
     expected_metrics = collections.OrderedDict([(0, {
         'a': 1
     }), (5, {
         'b': 2
     })])
     self.assertEqual(dict_manager.metrics, expected_metrics)
     self.assertEqual(dict_manager.latest_round_num, 5)
    def test_metrics_are_saved(self):
        dict_manager = dictionary_manager.DictionaryMetricsManager()
        actual_metrics = dict_manager.metrics
        self.assertEqual(actual_metrics, collections.OrderedDict())
        self.assertIsNone(dict_manager.latest_round_num)

        round_0_metrics = {'a': 2, 'b': 5}
        expected_metrics = collections.OrderedDict([(0, round_0_metrics)])
        dict_manager.save_metrics(round_0_metrics, 0)
        actual_metrics = dict_manager.metrics
        self.assertEqual(actual_metrics, expected_metrics)
        self.assertEqual(dict_manager.latest_round_num, 0)

        round_5_metrics = {'c': 5}
        expected_metrics = collections.OrderedDict([(0, round_0_metrics),
                                                    (5, round_5_metrics)])
        dict_manager.save_metrics(round_5_metrics, 5)
        actual_metrics = dict_manager.metrics
        self.assertEqual(actual_metrics, expected_metrics)
        self.assertEqual(dict_manager.latest_round_num, 5)
 def test_clear_metrics_raises_if_round_num_is_negative(self):
     dict_manager = dictionary_manager.DictionaryMetricsManager()
     with self.assertRaises(ValueError):
         dict_manager.clear_metrics(round_num=-1)
 def test_save_metrics_raises_if_round_num_is_negative(self):
     dict_manager = dictionary_manager.DictionaryMetricsManager()
     with self.assertRaises(ValueError):
         dict_manager.save_metrics({'a': 1}, -1)