1# -*- coding: utf-8 -*-
2#  Copyright 2011 Takeshi KOMIYA
3#
4#  Licensed under the Apache License, Version 2.0 (the "License");
5#  you may not use this file except in compliance with the License.
6#  You may obtain a copy of the License at
7#
8#      http://www.apache.org/licenses/LICENSE-2.0
9#
10#  Unless required by applicable law or agreed to in writing, software
11#  distributed under the License is distributed on an "AS IS" BASIS,
12#  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13#  See the License for the specific language governing permissions and
14#  limitations under the License.
15
16from blockdiag.parser import ParseException
17from blockdiag.tests.utils import BuilderTestCase
18
19
20class TestBuilderError(BuilderTestCase):
21    def test_unknown_diagram_default_shape_diagram(self):
22        filename = 'errors/unknown_diagram_default_shape.diag'
23        with self.assertRaises(AttributeError):
24            self.build(filename)
25
26    def test_unknown_diagram_edge_layout_diagram(self):
27        filename = 'errors/unknown_diagram_edge_layout.diag'
28        with self.assertRaises(AttributeError):
29            self.build(filename)
30
31    def test_unknown_diagram_orientation_diagram(self):
32        filename = 'errors/unknown_diagram_orientation.diag'
33        with self.assertRaises(AttributeError):
34            self.build(filename)
35
36    def test_unknown_node_shape_diagram(self):
37        filename = 'errors/unknown_node_shape.diag'
38        with self.assertRaises(AttributeError):
39            self.build(filename)
40
41    def test_unknown_node_attribute_diagram(self):
42        filename = 'errors/unknown_node_attribute.diag'
43        with self.assertRaises(AttributeError):
44            self.build(filename)
45
46    def test_unknown_node_style_diagram(self):
47        filename = 'errors/unknown_node_style.diag'
48        with self.assertRaises(AttributeError):
49            self.build(filename)
50
51    def test_unknown_node_class_diagram(self):
52        filename = 'errors/unknown_node_class.diag'
53        with self.assertRaises(AttributeError):
54            self.build(filename)
55
56    def test_unknown_edge_dir_diagram(self):
57        filename = 'errors/unknown_edge_dir.diag'
58        with self.assertRaises(AttributeError):
59            self.build(filename)
60
61    def test_unknown_edge_style_diagram(self):
62        filename = 'errors/unknown_edge_style.diag'
63        with self.assertRaises(AttributeError):
64            self.build(filename)
65
66    def test_unknown_edge_hstyle_diagram(self):
67        filename = 'errors/unknown_edge_hstyle.diag'
68        with self.assertRaises(AttributeError):
69            self.build(filename)
70
71    def test_unknown_edge_class_diagram(self):
72        filename = 'errors/unknown_edge_class.diag'
73        with self.assertRaises(AttributeError):
74            self.build(filename)
75
76    def test_unknown_group_shape_diagram(self):
77        filename = 'errors/unknown_group_shape.diag'
78        with self.assertRaises(AttributeError):
79            self.build(filename)
80
81    def test_unknown_group_class_diagram(self):
82        filename = 'errors/unknown_group_class.diag'
83        with self.assertRaises(AttributeError):
84            self.build(filename)
85
86    def test_unknown_group_orientation_diagram(self):
87        filename = 'errors/unknown_group_orientation.diag'
88        with self.assertRaises(AttributeError):
89            self.build(filename)
90
91    def test_belongs_to_two_groups_diagram(self):
92        filename = 'errors/belongs_to_two_groups.diag'
93        with self.assertRaises(RuntimeError):
94            self.build(filename)
95
96    def test_unknown_plugin_diagram(self):
97        filename = 'errors/unknown_plugin.diag'
98        with self.assertRaises(AttributeError):
99            self.build(filename)
100
101    def test_node_follows_group_diagram(self):
102        filename = 'errors/node_follows_group.diag'
103        with self.assertRaises(ParseException):
104            self.build(filename)
105
106    def test_group_follows_node_diagram(self):
107        filename = 'errors/group_follows_node.diag'
108        with self.assertRaises(ParseException):
109            self.build(filename)
110
111    def test_unknown_diagram_type(self):
112        filename = 'errors/unknown_diagram_type.diag'
113        with self.assertRaises(ParseException):
114            self.build(filename)
115
116    def test_lexer_error_diagram(self):
117        filename = 'errors/lexer_error.diag'
118        with self.assertRaises(ParseException):
119            self.build(filename)
120