File: test_container_frozen_ordered_dict.py

package info (click to toggle)
python-dendropy 4.2.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: stretch
  • size: 68,392 kB
  • ctags: 3,947
  • sloc: python: 41,840; xml: 1,400; makefile: 15
file content (87 lines) | stat: -rw-r--r-- 2,790 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
#! /usr/bin/env python

##############################################################################
##  DendroPy Phylogenetic Computing Library.
##
##  Copyright 2010-2015 Jeet Sukumaran and Mark T. Holder.
##  All rights reserved.
##
##  See "LICENSE.rst" for terms and conditions of usage.
##
##  If you use this work or any portion thereof in published work,
##  please cite it as:
##
##     Sukumaran, J. and M. T. Holder. 2010. DendroPy: a Python library
##     for phylogenetic computing. Bioinformatics 26: 1569-1571.
##
##############################################################################

"""
ReadonlyOrdedr tests.
"""

import copy
import collections
import unittest
from dendropy.utility import container

class FrozenOrderedDictTest(unittest.TestCase):

    def setUp(self):
        self.src = collections.OrderedDict()
        self.src["a"] = 1
        self.src["b"] = 2
        self.src["c"] = 3
        self.d = container.FrozenOrderedDict(self.src)

    def test_basic_readonly_iteration_and_access(self):
        for key1, key2 in zip(self.src, self.d):
            self.assertEqual(key1, key2)
            key = key1
            self.assertTrue(key in self.d)
            self.assertEqual(self.d[key], self.src[key])

    def test_keys(self):
        k1 = list(self.src.keys())
        k2 = list(self.d.keys())
        self.assertEqual(k1, k2)

    def test_values(self):
        v1 = list(self.src.values())
        v2 = list(self.d.values())
        self.assertEqual(v1, v2)

    def test_readonly(self):
        k = list(self.d.keys())[0]
        with self.assertRaises(container.FrozenOrderedDict.ImmutableTypeError):
            self.d[k] = 1
        with self.assertRaises(container.FrozenOrderedDict.ImmutableTypeError):
            del self.d[k]
        with self.assertRaises(container.FrozenOrderedDict.ImmutableTypeError):
            self.d.pop(k)
        with self.assertRaises(container.FrozenOrderedDict.ImmutableTypeError):
            self.d.clear()
        with self.assertRaises(container.FrozenOrderedDict.ImmutableTypeError):
            self.d.update({})
        with self.assertRaises(container.FrozenOrderedDict.ImmutableTypeError):
            self.d.fromkeys([1,2,3])

    def test_deepcopy(self):
        d2 = copy.deepcopy(self.d)
        self.assertIsNot(d2, self.d)
        for key1, key2 in zip(d2, self.d):
            self.assertEqual(key1, key2)
            key = key1
            self.assertTrue(key in self.d)
            self.assertEqual(self.d[key], d2[key])

    def test_copy(self):
        d2 = copy.copy(self.d)
        self.assertEqual(d2, self.d)

    def test_copy_construction(self):
        d2 = collections.OrderedDict(self.d)
        self.assertEqual(d2, self.d)

if __name__ == "__main__":
    unittest.main()