@@ -817,7 +817,8 @@ def test_sys_naming_convention(self):
817
817
ct .InputOutputSystem .idCounter = 0
818
818
sys = ct .LinearIOSystem (self .mimo_linsys1 )
819
819
self .assertEquals (sys .name , "sys[0]" )
820
-
820
+ self .assertEquals (sys .copy ().name , "copy of sys[0]" )
821
+
821
822
namedsys = ios .NonlinearIOSystem (
822
823
updfcn = lambda t , x , u , params : np .array (
823
824
np .dot (self .mimo_linsys1 .A , np .reshape (x , (- 1 , 1 ))) \
@@ -837,7 +838,6 @@ def test_sys_naming_convention(self):
837
838
unnamedsys2 = ct .NonlinearIOSystem (
838
839
None , lambda t ,x ,u ,params : u , inputs = 2 , outputs = 2
839
840
)
840
- breakpoint ()
841
841
self .assertEquals (unnamedsys2 .name , "sys[2]" )
842
842
843
843
# Unnamed/unnamed connections
@@ -852,8 +852,8 @@ def test_sys_naming_convention(self):
852
852
self .assertEquals (uu_parallel .name , "sys[4]" )
853
853
self .assertEquals (u_neg .name , "sys[5]" )
854
854
self .assertEquals (uu_feedback .name , "sys[6]" )
855
- self .assertEquals (uu_dup .name , "sys[8 ]" )
856
- self .assertEquals (uu_hierarchical .name , "sys[9 ]" )
855
+ self .assertEquals (uu_dup .name , "sys[7 ]" )
856
+ self .assertEquals (uu_hierarchical .name , "sys[8 ]" )
857
857
858
858
# Unnamed/named connections
859
859
un_series = unnamedsys1 * namedsys
@@ -862,21 +862,15 @@ def test_sys_naming_convention(self):
862
862
un_dup = unnamedsys1 * namedsys .copy ()
863
863
un_hierarchical = uu_series * unnamedsys1
864
864
865
- self .assertEquals (un_series .name , "sys[10]" )
866
- self .assertEquals (un_parallel .name , "sys[11]" )
867
- self .assertEquals (un_feedback .name , "sys[12]" )
868
- self .assertEquals (un_dup .name , "sys[14]" )
869
- self .assertEquals (un_hierarchical .name , "sys[15]" )
870
-
871
- # Name conflict (test new names are assigned)
872
- same_name_sum = unnamedsys1 + unnamedsys1 .copy (unnamedsys1 .name )
873
- self .assertEquals (same_name_sum .name , "sys[16]" )
865
+ self .assertEquals (un_series .name , "sys[9]" )
866
+ self .assertEquals (un_parallel .name , "sys[10]" )
867
+ self .assertEquals (un_feedback .name , "sys[11]" )
868
+ self .assertEquals (un_dup .name , "sys[12]" )
869
+ self .assertEquals (un_hierarchical .name , "sys[13]" )
874
870
875
871
# Same system conflict
876
872
with warnings .catch_warnings (record = True ) as warnval :
877
- # Trigger a warning
878
873
unnamedsys1 * unnamedsys1
879
- # Verify that we got a warning
880
874
self .assertEqual (len (warnval ), 1 )
881
875
882
876
def test_signals_naming_convention (self ):
@@ -945,8 +939,9 @@ def test_lineariosys_statespace(self):
945
939
np .testing .assert_array_equal (io_feedback .D , ss_feedback .D )
946
940
947
941
def test_duplicates (self ):
948
- nlios = ios .NonlinearIOSystem (None , \
949
- lambda t , x , u , params : u * u , inputs = 1 , outputs = 1 )
942
+ nlios = ios .NonlinearIOSystem (lambda t ,x ,u ,params : x , \
943
+ lambda t , x , u , params : u * u , \
944
+ inputs = 1 , outputs = 1 , states = 1 , name = "sys" )
950
945
951
946
# Turn off deprecation warnings
952
947
warnings .simplefilter ("ignore" , category = DeprecationWarning )
@@ -967,7 +962,11 @@ def test_duplicates(self):
967
962
nlios2 = nlios .copy ()
968
963
with warnings .catch_warnings (record = True ) as warnval :
969
964
ios_series = nlios1 * nlios2
970
- self .assertEqual (len (warnval ), 0 )
965
+ self .assertEquals (len (warnval ), 1 )
966
+ # when subsystems have the same name, duplicates are
967
+ # renamed <subsysname_i>
968
+ self .assertTrue ("copy of sys_1.x[0]" in ios_series .state_index .keys ())
969
+ self .assertTrue ("copy of sys.x[0]" in ios_series .state_index .keys ())
971
970
972
971
# Duplicate names
973
972
iosys_siso = ct .LinearIOSystem (self .siso_linsys )
0 commit comments