@@ -711,5 +711,109 @@ def test_create_sw_addr_method_from_string(self):
711
711
self .assertEqual (ref .dest , ar_enum .IdentifiableSubTypes .SW_ADDR_METHOD )
712
712
713
713
714
+ class TestSwcInternalBehavior (unittest .TestCase ):
715
+ """
716
+ Most elements are not implemented yet
717
+ """
718
+
719
+ def test_name_only (self ):
720
+ writer = autosar .xml .Writer ()
721
+ element = ar_element .SwcInternalBehavior ('MyName' )
722
+ xml = '''<SWC-INTERNAL-BEHAVIOR>
723
+ <SHORT-NAME>MyName</SHORT-NAME>
724
+ </SWC-INTERNAL-BEHAVIOR>'''
725
+ self .assertEqual (writer .write_str_elem (element ), xml )
726
+ reader = autosar .xml .Reader ()
727
+ elem : ar_element .SwcInternalBehavior = reader .read_str_elem (xml )
728
+ self .assertIsInstance (elem , ar_element .SwcInternalBehavior )
729
+ self .assertEqual (elem .name , 'MyName' )
730
+ self .assertEqual (elem .short_name , 'MyName' )
731
+
732
+ # Base class elements
733
+ # IMPLEMENT LATER: CONSTANT-MEMORYS
734
+ # IMPLEMENT LATER: CONSTANT-VALUE-MAPPING-REFS
735
+ # IMPLEMENT LATER: DATA-TYPE-MAPPING-REFS
736
+ # IMPLEMENT LATER: EXCLUSIVE-AREAS
737
+ # IMPLEMENT LATER: EXCLUSIVE-AREA-NESTING-ORDERS
738
+ # IMPLEMENT LATER: STATIC-MEMORYS
739
+ # Class elements
740
+ # IMPLEMENT LATER: AR-TYPED-PER-INSTANCE-MEMORYS
741
+ # IMPLEMENT LATER: EVENTS
742
+ # IMPLEMENT LATER: EXCLUSIVE-AREA-POLICYS
743
+ # IMPLEMENT LATER: EXPLICIT-INTER-RUNNABLE-VARIABLES
744
+ # IMPLEMENT LATER: HANDLE-TERMINATION-AND-RESTART
745
+ # IMPLEMENT LATER: IMPLICIT-INTER-RUNNABLE-VARIABLES
746
+ # IMPLEMENT LATER: INCLUDED-DATA-TYPE-SETS
747
+ # IMPLEMENT LATER: INCLUDED-MODE-DECLARATION-GROUP-SETS
748
+ # IMPLEMENT LATER: INSTANTIATION-DATA-DEF-PROPSS
749
+ # IMPLEMENT LATER: PER-INSTANCE-MEMORYS
750
+ # IMPLEMENT LATER: PER-INSTANCE-PARAMETERS
751
+ # IMPLEMENT LATER: PORT-API-OPTIONS
752
+
753
+ # RUNNABLES
754
+
755
+ def test_runnables_from_element (self ):
756
+ writer = autosar .xml .Writer ()
757
+ element = ar_element .SwcInternalBehavior ('MyName' , runnables = ar_element .RunnableEntity ("MyRunnable" ))
758
+ xml = '''<SWC-INTERNAL-BEHAVIOR>
759
+ <SHORT-NAME>MyName</SHORT-NAME>
760
+ <RUNNABLES>
761
+ <RUNNABLE-ENTITY>
762
+ <SHORT-NAME>MyRunnable</SHORT-NAME>
763
+ </RUNNABLE-ENTITY>
764
+ </RUNNABLES>
765
+ </SWC-INTERNAL-BEHAVIOR>'''
766
+ self .assertEqual (writer .write_str_elem (element ), xml )
767
+ reader = autosar .xml .Reader ()
768
+ elem : ar_element .SwcInternalBehavior = reader .read_str_elem (xml )
769
+ self .assertIsInstance (elem , ar_element .SwcInternalBehavior )
770
+ self .assertEqual (len (elem .runnables ), 1 )
771
+ runnable = elem .runnables [0 ]
772
+ self .assertIsInstance (runnable , ar_element .RunnableEntity )
773
+
774
+ def test_runnables_from_list (self ):
775
+ writer = autosar .xml .Writer ()
776
+ runnable1 = ar_element .RunnableEntity ("MyRunnable1" )
777
+ runnable2 = ar_element .RunnableEntity ("MyRunnable2" )
778
+ runnable3 = ar_element .RunnableEntity ("MyRunnable3" )
779
+ element = ar_element .SwcInternalBehavior ('MyName' , runnables = [runnable1 ,
780
+ runnable2 ,
781
+ runnable3 ])
782
+ xml = '''<SWC-INTERNAL-BEHAVIOR>
783
+ <SHORT-NAME>MyName</SHORT-NAME>
784
+ <RUNNABLES>
785
+ <RUNNABLE-ENTITY>
786
+ <SHORT-NAME>MyRunnable1</SHORT-NAME>
787
+ </RUNNABLE-ENTITY>
788
+ <RUNNABLE-ENTITY>
789
+ <SHORT-NAME>MyRunnable2</SHORT-NAME>
790
+ </RUNNABLE-ENTITY>
791
+ <RUNNABLE-ENTITY>
792
+ <SHORT-NAME>MyRunnable3</SHORT-NAME>
793
+ </RUNNABLE-ENTITY>
794
+ </RUNNABLES>
795
+ </SWC-INTERNAL-BEHAVIOR>'''
796
+ self .assertEqual (writer .write_str_elem (element ), xml )
797
+ reader = autosar .xml .Reader ()
798
+ elem : ar_element .SwcInternalBehavior = reader .read_str_elem (xml )
799
+ self .assertIsInstance (elem , ar_element .SwcInternalBehavior )
800
+ self .assertEqual (len (elem .runnables ), 3 )
801
+ runnable = elem .runnables [0 ]
802
+ self .assertIsInstance (runnable , ar_element .RunnableEntity )
803
+ self .assertEqual (runnable .name , "MyRunnable1" )
804
+ runnable = elem .runnables [1 ]
805
+ self .assertIsInstance (runnable , ar_element .RunnableEntity )
806
+ self .assertEqual (runnable .name , "MyRunnable2" )
807
+ runnable = elem .runnables [2 ]
808
+ self .assertIsInstance (runnable , ar_element .RunnableEntity )
809
+ self .assertEqual (runnable .name , "MyRunnable3" )
810
+
811
+ # IMPLEMENT LATER: SERVICE-DEPENDENCYS"
812
+ # IMPLEMENT LATER: SHARED-PARAMETERS
813
+ # IMPLEMENT LATER: SUPPORTS-MULTIPLE-INSTANTIATION
814
+ # NOT SUPPORTED: VARIATION-POINT-PROXYS
815
+ # NOT SUPPORTED: VARIATION-POINT
816
+
817
+
714
818
if __name__ == '__main__' :
715
819
unittest .main ()
0 commit comments