예제 #1
0
    def test_override(self):
        metrics = MetricDict()
        key = {'a': 1}

        for i in range(100):
            metrics[key] = i
            self.assertEqual(i, metrics[key])

        self.assertEqual(1, len(metrics))
예제 #2
0
    def test_empty_key(self):
        metrics = MetricDict()
        iterations = 100

        for i in range(iterations):
            metrics[None] = i
            self.assertEqual(metrics[None], i)

        # Last check (different empty)
        self.assertEqual(iterations - 1, metrics[""])
        self.assertEqual(iterations - 1, metrics[{}])
예제 #3
0
    def test_all(self):
        metrics = MetricDict()
        data = (
            ({
                'd': 4,
                'e': 5,
                'f': 6
            }, 3000),
            ({
                'e': 5,
                'd': 4,
                'f': 6
            }, 4000),
            ({
                'd': 4,
                'f': 6,
                'e': 5
            }, 5000),
            ({
                'd': 41,
                'f': 61,
                'e': 51
            }, 6000),
            ({
                'd': 41,
                'e': 51,
                'f': 61
            }, 7000),
            ({
                'f': 61,
                'e': 51,
                'd': 41
            }, 8000),
        )

        for i in data:
            metrics[i[0]] = i[1]

        self.assertEqual(2, len(metrics))

        self.assertEqual(5000, metrics[{'d': 4, 'e': 5, 'f': 6}])
        self.assertEqual(8000, metrics[{'d': 41, 'f': 61, 'e': 51}])
예제 #4
0
    def test_all(self):
        metrics = MetricDict()
        data = (
            ({
                "d": 4,
                "e": 5,
                "f": 6
            }, 3000),
            ({
                "e": 5,
                "d": 4,
                "f": 6
            }, 4000),
            ({
                "d": 4,
                "f": 6,
                "e": 5
            }, 5000),
            ({
                "d": 41,
                "f": 61,
                "e": 51
            }, 6000),
            ({
                "d": 41,
                "e": 51,
                "f": 61
            }, 7000),
            ({
                "f": 61,
                "e": 51,
                "d": 41
            }, 8000),
        )

        for i in data:
            metrics[i[0]] = i[1]

        self.assertEqual(2, len(metrics))

        self.assertEqual(5000, metrics[{"d": 4, "e": 5, "f": 6}])
        self.assertEqual(8000, metrics[{"d": 41, "f": 61, "e": 51}])
예제 #5
0
    def test_delete(self):
        metrics = MetricDict()
        data = (
            ({
                'd': 4,
                'e': 5,
                'f': 6
            }, 3000),
            ({
                'e': 5,
                'd': 4,
                'f': 6
            }, 4000),
            ({
                'd': 4,
                'f': 6,
                'e': 5
            }, 5000),
            ({
                'd': 41,
                'f': 61,
                'e': 51
            }, 6000),
            ({
                'd': 41,
                'e': 51,
                'f': 61
            }, 7000),
            ({
                'f': 61,
                'e': 51,
                'd': 41
            }, 8000),
        )

        for i in data:
            metrics[i[0]] = i[1]

        del metrics[i[0]]

        self.assertEqual(1, len(metrics))
예제 #6
0
    def test_delete(self):
        metrics = MetricDict()
        data = (
            ({
                "d": 4,
                "e": 5,
                "f": 6
            }, 3000),
            ({
                "e": 5,
                "d": 4,
                "f": 6
            }, 4000),
            ({
                "d": 4,
                "f": 6,
                "e": 5
            }, 5000),
            ({
                "d": 41,
                "f": 61,
                "e": 51
            }, 6000),
            ({
                "d": 41,
                "e": 51,
                "f": 61
            }, 7000),
            ({
                "f": 61,
                "e": 51,
                "d": 41
            }, 8000),
        )

        for i in data:
            metrics[i[0]] = i[1]

        del metrics[i[0]]

        self.assertEqual(1, len(metrics))
예제 #7
0
    def test_set(self):
        metrics = MetricDict()
        data = (
            ({
                'a': 1
            }, 1000),
            ({
                'b': 2,
                'c': 3
            }, 2000),
            ({
                'd': 4,
                'e': 5,
                'f': 6
            }, 3000),
        )

        for i in data:
            metrics[i[0]] = i[1]

        self.assertEqual(len(data), len(metrics))
예제 #8
0
    def test_set(self):
        metrics = MetricDict()
        data = (
            ({
                "a": 1
            }, 1000),
            ({
                "b": 2,
                "c": 3
            }, 2000),
            ({
                "d": 4,
                "e": 5,
                "f": 6
            }, 3000),
        )

        for i in data:
            metrics[i[0]] = i[1]

        self.assertEqual(len(data), len(metrics))
예제 #9
0
    def test_access_by_str(self):
        label = {'b': 2, 'c': 3, 'a': 1}
        access_key = '{"a": 1, "b": 2, "c": 3}'
        bad_access_key = '{"b": 2, "c": 3, "a": 1}'
        value = 100

        metrics = MetricDict()
        metrics[label] = 100

        # Wrong string
        with self.assertRaises(TypeError) as context:
            metrics['dasdasd']
        self.assertEqual('Only accepts dicts as keys', str(context.exception))

        # Access ok with string
        self.assertEqual(value, metrics[access_key])

        # Access ok but wrong key by order
        with self.assertRaises(KeyError) as context:
            metrics[bad_access_key]
        self.assertEqual("'{0}'".format(bad_access_key),
                         str(context.exception))
예제 #10
0
    def test_get(self):
        metrics = MetricDict()
        data = (
            ({
                'a': 1
            }, 1000),
            ({
                'b': 2,
                'c': 3
            }, 2000),
            ({
                'd': 4,
                'e': 5,
                'f': 6
            }, 3000),
        )

        for i in data:
            metrics[i[0]] = i[1]

        for i in data:
            self.assertEqual(i[1], metrics[i[0]])
예제 #11
0
    def test_get(self):
        metrics = MetricDict()
        data = (
            ({
                "a": 1
            }, 1000),
            ({
                "b": 2,
                "c": 3
            }, 2000),
            ({
                "d": 4,
                "e": 5,
                "f": 6
            }, 3000),
        )

        for i in data:
            metrics[i[0]] = i[1]

        for i in data:
            self.assertEqual(i[1], metrics[i[0]])
예제 #12
0
    def test_similar(self):
        metrics = MetricDict()
        data = (
            ({
                'd': 4,
                'e': 5,
                'f': 6
            }, 3000),
            ({
                'e': 5,
                'd': 4,
                'f': 6
            }, 4000),
            ({
                'd': 4,
                'f': 6,
                'e': 5
            }, 5000),
        )

        for i in data:
            metrics[i[0]] = i[1]

        self.assertEqual(1, len(metrics))
예제 #13
0
    def test_similar(self):
        metrics = MetricDict()
        data = (
            ({
                "d": 4,
                "e": 5,
                "f": 6
            }, 3000),
            ({
                "e": 5,
                "d": 4,
                "f": 6
            }, 4000),
            ({
                "d": 4,
                "f": 6,
                "e": 5
            }, 5000),
        )

        for i in data:
            metrics[i[0]] = i[1]

        self.assertEqual(1, len(metrics))
예제 #14
0
    def test_bad_keys(self):
        with self.assertRaises(TypeError) as context:
            metrics = MetricDict()
            metrics['not_valid'] = "value"

        self.assertEqual('Only accepts dicts as keys', str(context.exception))