@@ -867,7 +867,73 @@ public void Can_Call_Member_Procedures()
867867
868868 array . Should ( ) . HaveCount ( 2 ) ;
869869 }
870-
870+
871+ [ Theory ]
872+ [ InlineData ( "Объект.Процедура0();" ) ]
873+ [ InlineData ( "Объект.Процедура0СПроцессом();" ) ]
874+ [ InlineData ( "Объект.Процедура1(1);" ) ]
875+ [ InlineData ( "Объект.Процедура1СПроцессом(1);" ) ]
876+ [ InlineData ( "Объект.Процедура1СУмолчанием();" ) ]
877+ [ InlineData ( "Объект.Процедура1СУмолчаниемСПроцессом();" ) ]
878+ [ InlineData ( "Объект.Процедура1СУмолчанием(1);" ) ]
879+ [ InlineData ( "Объект.Процедура1СУмолчаниемСПроцессом(1);" ) ]
880+ public void Can_Call_Member_ProceduresWithBslProcess ( string code )
881+ {
882+ var tm = new DefaultTypeManager ( ) ;
883+ var testType = tm . RegisterClass ( typeof ( TestContextClass ) ) ;
884+
885+ var block = new CompiledBlock ( default ) ;
886+ block . Parameters . Insert ( "Объект" , new BslTypeValue ( testType ) ) ;
887+ block . CodeBlock = code ;
888+
889+ var method = block . CreateDelegate < Func < TestContextClass , BslValue > > ( ) ;
890+ var testValue = new TestContextClass ( ) ;
891+ method ( testValue ) ;
892+ }
893+
894+ [ Theory ]
895+ [ InlineData ( "Объект.Функция0()" ) ]
896+ [ InlineData ( "Объект.Функция0СПроцессом()" ) ]
897+ [ InlineData ( "Объект.Функция1(1)" ) ]
898+ [ InlineData ( "Объект.Функция1СПроцессом(1)" ) ]
899+ [ InlineData ( "Объект.Функция1СУмолчанием()" ) ]
900+ [ InlineData ( "Объект.Функция1СУмолчаниемСПроцессом()" ) ]
901+ [ InlineData ( "Объект.Функция1СУмолчанием(1)" ) ]
902+ [ InlineData ( "Объект.Функция1СУмолчаниемСПроцессом(1)" ) ]
903+ public void Can_Call_Member_FunctionsWithBslProcess ( string code )
904+ {
905+ var tm = new DefaultTypeManager ( ) ;
906+ var testType = tm . RegisterClass ( typeof ( TestContextClass ) ) ;
907+
908+ var block = new CompiledBlock ( default ) ;
909+ block . Parameters . Insert ( "Объект" , new BslTypeValue ( testType ) ) ;
910+ block . CodeBlock = $ "Результат = { code } ;";
911+
912+ var method = block . CreateDelegate < Func < TestContextClass , BslValue > > ( ) ;
913+ var testValue = new TestContextClass ( ) ;
914+ method ( testValue ) ;
915+ }
916+
917+ [ Theory ]
918+ [ InlineData ( "Объект.Процедура0СПроцессом(1)" ) ]
919+ [ InlineData ( "Объект.Функция0СПроцессом(1)" ) ]
920+ [ InlineData ( "Объект.Функция1СУмолчаниемСПроцессом(1, 2)" ) ]
921+ [ InlineData ( "Объект.Процедура1СУмолчаниемСПроцессом(1, 2, 3);" ) ]
922+ public void Cannot_Call_Member_Procedures_With_Wrong_Argument_Count ( string code )
923+ {
924+ var tm = new DefaultTypeManager ( ) ;
925+ var testType = tm . RegisterClass ( typeof ( TestContextClass ) ) ;
926+
927+ var block = new CompiledBlock ( default ) ;
928+ block . Parameters . Insert ( "Объект" , new BslTypeValue ( testType ) ) ;
929+ block . CodeBlock = code ;
930+
931+ var runtimeException = Assert . ThrowsAny < RuntimeException > ( ( ) => {
932+ var method = block . CreateDelegate < Func < TestContextClass , BslValue > > ( ) ;
933+ } ) ;
934+ Assert . Contains ( "Слишком много фактических параметров" , runtimeException . Message ) ;
935+ }
936+
871937 [ Fact ]
872938 public void Can_Call_Member_Procedures_On_Dynamics ( )
873939 {
0 commit comments