示例#1
0
        public override int Execute()
        {
            if (!System.IO.File.Exists(_path))
            {
                Echo(String.Format("Script file is not found '{0}'", _path));
                return(2);
            }

            SystemLogger.SetWriter(this);

            var hostedScript = new HostedScriptEngine();

            hostedScript.CustomConfig = ScriptFileHelper.CustomConfigPath(_path);
            ScriptFileHelper.OnBeforeScriptRead(hostedScript);
            var source = hostedScript.Loader.FromFile(_path);

            Process process;

            try
            {
                process = hostedScript.CreateProcess(this, source);
            }
            catch (Exception e)
            {
                this.ShowExceptionInfo(e);
                return(1);
            }

            var result = process.Start();

            hostedScript.Finalize();

            return(result);
        }
示例#2
0
        public void CheckUndefinedIsNull19()
        {
            SystemLogger.SetWriter(this);
            _messages.Clear();

            bool wasException = false;

            // Передача и возврат Неопределено в функцию
            try
            {
                host.RunTestString(
                    @"К = Новый ТестNullПреобразования;
                Арг = Неопределено;
                ВЗ = 5.7;
                ВЗ = К.ТестBool(Арг);");
            }
            catch (Exception)
            {
                wasException = true;
            }

            if (!wasException)
            {
                Assert.Fail("Test bool Func(bool) -> Func(Unknown): must raise exception");
            }
        }
示例#3
0
        public void TestICallGoodAndHaveNoWarning()
        {
            SystemLogger.SetWriter(this);
            _messages.Clear();
            host.RunTestString(
                @"К = Новый ТестовыйКласс;
				К.ХорошийМетод();
				К.GoodMethod();"                );

            Assert.AreEqual(0, _messages.Count, "Нет предупреждений");
        }
示例#4
0
        public void TestICallDeprecatedAliasAndHaveWarning()
        {
            SystemLogger.SetWriter(this);
            _messages.Clear();
            host.RunTestString(
                @"К = Новый ТестовыйКласс;
				К.ObsoleteAlias();"                );

            Assert.AreEqual(1, _messages.Count, "Только ОДНО предупреждение");
            Assert.IsTrue(_messages[0].IndexOf("ObsoleteAlias", StringComparison.InvariantCultureIgnoreCase) >= 0);
        }
示例#5
0
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            SaveLastCode(); // Сохраним набранный текст на случай зависания или вылета

            result.Text = "";
            var sw = new System.Diagnostics.Stopwatch();

            List <string> l_args = new List <string>();

            for (var i = 0; i < args.LineCount; i++)
            {
                string s = args.GetLineText(i);
                if (s.IndexOf('#') != 0)
                {
                    l_args.Add(s.Trim());
                }
            }

            var host = new Host(result, l_args.ToArray());

            SystemLogger.SetWriter(host);
            var hostedScript = new HostedScriptEngine();

            hostedScript.CustomConfig = CustomConfigPath(_currentDocPath);
            SetEncodingFromConfig(hostedScript);

            var src = new EditedFileSource(txtCode.Text, _currentDocPath);

            Process process = null;

            try
            {
                process = hostedScript.CreateProcess(host, src);
            }
            catch (Exception exc)
            {
                host.Echo(exc.Message);
                return;
            }

            result.AppendText("Script started: " + DateTime.Now.ToString() + "\n");
            sw.Start();
            var returnCode = process.Start();

            sw.Stop();
            if (returnCode != 0)
            {
                result.AppendText("\nError detected. Exit code = " + returnCode.ToString());
            }
            result.AppendText("\nScript completed: " + DateTime.Now.ToString());
            result.AppendText("\nDuration: " + sw.Elapsed.ToString());
        }
示例#6
0
        public void CheckUndefinedIsNull10()
        {
            SystemLogger.SetWriter(this);
            _messages.Clear();

            host.RunTestString(
                @"К = Новый ТестNullПреобразования;
                Арг = 3;
                ВЗ = 5.7;
                ВЗ = К.ТестUInt(Арг);
                Если Не ВЗ = Арг Тогда
                    ВызватьИсключение ""Test uint Func(uint) -> Func(uint): return value is not equal of argument"";
                КонецЕсли;");
        }
示例#7
0
        public void CheckUndefinedIsNull20()
        {
            SystemLogger.SetWriter(this);
            _messages.Clear();

            host.RunTestString(
                @"К = Новый ТестNullПреобразования;
                Арг = 3.5;
                К.ПIValue = Арг; 
                ВЗ = К.КПIValue;
                Если Не ВЗ = Арг Тогда
                    ВызватьИсключение ""Test IValue Prop <-> IValue: return value is not equal of argument"";
                КонецЕсли;");
        }
示例#8
0
        public void CheckUndefinedIsNull2()
        {
            SystemLogger.SetWriter(this);
            _messages.Clear();

            // Передача и возврат значения Class в функцию Class
            host.RunTestString(
                @"К = Новый ТестNullПреобразования;
                Арг = Новый ПNullClass;
                ВЗ = 5.7;
                ВЗ = К.ТестКласс(Арг);
                Если Не ВЗ = Арг Тогда
                    ВызватьИсключение ""Test Class Func(Class) -> Func(Class): return value is not equal of argument"";
                КонецЕсли;");
        }
示例#9
0
        public void CheckUndefinedIsNull1()
        {
            SystemLogger.SetWriter(this);
            _messages.Clear();

            // Передача и возврат значения в функцию IValue
            host.RunTestString(
                @"К = Новый ТестNullПреобразования;
                Арг = 7.5;
                ВЗ = 5.7;
                ВЗ = К.ТестIValue(Арг);
                Если Не ВЗ = Арг Тогда
                    ВызватьИсключение ""Test IValue Func(IValue) -> Func(IValue): return value is not equal of argument"";
                КонецЕсли;");
        }
示例#10
0
        public void CheckUndefinedIsNull24()
        {
            SystemLogger.SetWriter(this);
            _messages.Clear();

            // Передача и возврат string
            host.RunTestString(
                @"К = Новый ТестNullПреобразования;
                Арг = ""hello"";
                К.ПString = Арг; 
                ВЗ = К.ПString;
                Если Не ВЗ = Арг Тогда
                    ВызватьИсключение ""Test string Prop <-> string: return value is not equal of argument"";
                КонецЕсли;");
        }
示例#11
0
        public void CheckUndefinedIsNull0()
        {
            SystemLogger.SetWriter(this);
            _messages.Clear();

            // Передача и возврат Неопределено в функцию IValue
            host.RunTestString(
                @"К = Новый ТестNullПреобразования;
                Арг = Неопределено;
                ВЗ = 5.5;
                ВЗ = К.ТестIValueНеопределено(Арг);
                Если Не ВЗ = Неопределено Тогда
                    ВызватьИсключение ""Test IValue Func(IValue) -> Func(Unknown): return value is not equal Undefined"";
                КонецЕсли;");
        }
示例#12
0
        public void CheckUndefinedIsNull18()
        {
            SystemLogger.SetWriter(this);
            _messages.Clear();

            // Передача и возврат bool в функцию
            host.RunTestString(
                @"К = Новый ТестNullПреобразования;
                Арг = Истина;
                ВЗ = 5.7;
                ВЗ = К.ТестBool(Арг);
                Если Не ВЗ = Арг Тогда
                    ВызватьИсключение ""Test bool Func(bool) -> Func(bool): return value is not equal of argument"";
                КонецЕсли;");
        }
示例#13
0
        public void CheckUndefinedIsNull16()
        {
            SystemLogger.SetWriter(this);
            _messages.Clear();

            // Передача и возврат DateTime в функцию
            host.RunTestString(
                @"К = Новый ТестNullПреобразования;
                Арг = ТекущаяДата();
                ВЗ = 5.7;
                ВЗ = К.ТестDateTime(Арг);
                Если Не ВЗ = Арг Тогда
                    ВызватьИсключение ""Test DateTime Func(DateTime) -> Func(DateTime): return value is not equal of argument"";
                КонецЕсли;");
        }
示例#14
0
        public void CheckUndefinedIsNull25()
        {
            SystemLogger.SetWriter(this);
            _messages.Clear();

            // Передача и возврат string
            host.RunTestString(
                @"К = Новый ТестNullПреобразования;
                Арг = Неопределено;
                К.ПNullString = Арг; 
                ВЗ = К.ПNullString;
                Если Не ВЗ = Неопределено Тогда
                    ВызватьИсключение ""Test string Prop <-> Unknown: return value is not equal of Unknown"";
                КонецЕсли;");
        }
示例#15
0
        public void CheckUndefinedIsNull3()
        {
            SystemLogger.SetWriter(this);
            _messages.Clear();

            // Передача и возврат значения Неопределено в функцию Class
            host.RunTestString(
                @"К = Новый ТестNullПреобразования;
                Арг = Неопределено;
                ВЗ = 5.7;
                ВЗ = К.ТестClassНеопределено(Арг);
                Если Не ВЗ = Неопределено Тогда
                    ВызватьИсключение ""Test Class Func(Class) -> Func(Unknown): return value is not equal of Unknown"";
                КонецЕсли;");
        }
示例#16
0
        public void CheckUndefinedIsNull22()
        {
            SystemLogger.SetWriter(this);
            _messages.Clear();


            // Передача и возврат Class
            host.RunTestString(
                @"К = Новый ТестNullПреобразования;
                Арг = Новый ТестNullКласс;
                К.ПClass = Арг; 
                ВЗ = К.ПClass;
                Если Не ВЗ = Арг Тогда
                    ВызватьИсключение ""Test Class Prop <-> Class: return value is not equal of argument"";
                КонецЕсли;");
        }
示例#17
0
        public void TestICallDeprecatedAliasAndHaveException()
        {
            SystemLogger.SetWriter(this);
            _messages.Clear();
            var exceptionThrown = false;

            try
            {
                host.RunTestString(
                    @"К = Новый ТестовыйКласс;
					К.VeryObsoleteAlias();"                    );
            }
            catch (RuntimeException)
            {
                exceptionThrown = true;
            }
            Assert.IsTrue(exceptionThrown, "Безнадёжно устаревший метод должен вызвать исключение");
        }
示例#18
0
        public override int Execute()
        {
            var executor = new ExecuteScriptBehavior(_path, _args);

            SystemLogger.SetWriter(executor);
            switch (ProtocolType)
            {
            case DebugProtocolType.Wcf:
                executor.DebugController = new WcfDebugController(_port);
                break;

            case DebugProtocolType.Tcp:
            default:
                var tcpDebugServer = new BinaryTcpDebugServer(_port);
                executor.DebugController = tcpDebugServer.CreateDebugController();
                break;
            }

            return(executor.Execute());
        }