1#!/usr/bin/env python 2# -*- coding: utf-8 -*- 3 4# 5# Copyright 2017, Data61 6# Commonwealth Scientific and Industrial Research Organisation (CSIRO) 7# ABN 41 687 119 230. 8# 9# This software may be distributed and modified according to the terms of 10# the BSD 2-Clause license. Note that NO WARRANTY is provided. 11# See "LICENSE_BSD2.txt" for details. 12# 13# @TAG(DATA61_BSD) 14# 15 16from __future__ import absolute_import, division, print_function, \ 17 unicode_literals 18 19import os, six, sys, unittest 20 21ME = os.path.abspath(__file__) 22 23# Make CAmkES importable 24sys.path.append(os.path.join(os.path.dirname(ME), '../../..')) 25 26from camkes.internal.tests.utils import CAmkESTest 27from camkes.ast import ASTError 28from camkes.parser import ParseError 29from camkes.parser.stage0 import Reader 30from camkes.parser.stage1 import Parse1 31from camkes.parser.stage2 import Parse2 32from camkes.parser.stage3 import Parse3 33from camkes.parser.stage4 import Parse4 34from camkes.parser.stage5 import Parse5 35from camkes.parser.stage6 import Parse6 36from camkes.parser.stage7 import Parse7 37from camkes.parser.stage8 import Parse8 38from camkes.parser.stage9 import Parse9 39from camkes.parser.stage10 import Parse10 40 41class TestStage9(CAmkESTest): 42 def setUp(self): 43 super(TestStage9, self).setUp() 44 r = Reader() 45 s1 = Parse1(r) 46 s2 = Parse2(s1) 47 s3 = Parse3(s2, debug=True) 48 s4 = Parse4(s3) 49 s5 = Parse5(s4) 50 s6 = Parse6(s5) 51 s7 = Parse7(s6) 52 s8 = Parse8(s7) 53 self.parser = Parse9(s8) 54 55 def test_multiple_connectors(self): 56 with six.assertRaisesRegex(self, ParseError, 'Multiple connectors used in connections'): 57 self.parser.parse_string(''' 58 connector C1 { 59 from Dataports; 60 to Dataports; 61 } 62 connector C2 { 63 from Dataports; 64 to Dataports; 65 } 66 component Foo { 67 dataport Buf p1; 68 } 69 component Baz { 70 dataport Buf p1; 71 dataport Buf p2; 72 } 73 assembly { 74 composition { 75 component Foo f; 76 component Baz b; 77 connection C1 c1(from b.p1, to f.p1); 78 connection C2 c2(from b.p2, to f.p1); 79 } 80 } 81 ''') 82 83if __name__ == '__main__': 84 unittest.main() 85