public void PersistenceToWriteLineActivity()
        {
            TestProductWriteline writeLine1 = new TestProductWriteline("writeLine1");

            writeLine1.TextExpressionActivity = new TestExpressionEvaluatorWithBody <string>()
            {
                Body             = (new TestBlockingActivity("BlockingActivity")),
                ExpressionResult = "This should be displayed after the bookmark"
            };

            using (StreamWriter writer = new StreamWriter(new FileStream(_tempFilePath, FileMode.Create, FileAccess.Write)))
            {
                Console.SetOut(writer);

                TestBlockingActivity blocking = new TestBlockingActivity("BlockingActivity");

                JsonFileInstanceStore.FileInstanceStore jsonStore = new JsonFileInstanceStore.FileInstanceStore(".\\~");

                using (TestWorkflowRuntime workflow = TestRuntime.CreateTestWorkflowRuntime(writeLine1, null, jsonStore, PersistableIdleAction.None))
                {
                    workflow.ExecuteWorkflow();
                    workflow.WaitForActivityStatusChange("BlockingActivity", TestActivityInstanceState.Executing);
                    workflow.PersistWorkflow();
                    workflow.ResumeBookMark("BlockingActivity", null);
                    workflow.WaitForCompletion();
                }
            }
        }
        public void AddTextWriterExtensionToRuntimeAndUseWriteLineWithTextWriter()
        {
            string stringToWrite = "Writing text to  a file with StreamWriter object";

            using (StreamWriter streamWriter1 = new StreamWriter(new MemoryStream()))
            {
                using (StreamWriter streamWriter2 = new StreamWriter(new FileStream(_tempFilePath, FileMode.Create, FileAccess.Write)))
                {
                    TestProductWriteline writeline = new TestProductWriteline("Write with StreamWriter")
                    {
                        Text = stringToWrite,
                        TextWriterExpression = context => streamWriter2,
                    };

                    using (TestWorkflowRuntime runtime = TestRuntime.CreateTestWorkflowRuntime(writeline))
                    {
                        runtime.CreateWorkflow();
                        runtime.Extensions.Add(streamWriter1);
                        runtime.ResumeWorkflow();
                        runtime.WaitForCompletion();
                    }
                }
            }

            VerifyTextOfWriteLine(_tempFilePath, stringToWrite);
        }
        public void VerifyNullTextAndNullTextWriter()
        {
            using (StreamWriter streamWriter = ConsoleSetOut())
            {
                TestProductWriteline writeline = new TestProductWriteline("Null Text and Null TextWriter")
                {
                    Text = null,
                    TextWriterExpression = context => null
                };

                TestRuntime.RunAndValidateWorkflow(writeline);
            }

            VerifyTextOfWriteLine(_tempFilePath, string.Empty);
        }
        public void WriteSpecialCharsOnConsole()
        {
            string stringToWrite = "@ ;=#$%^&*()_+!";

            using (StreamWriter streamWriter = ConsoleSetOut())
            {
                TestProductWriteline writeline = new TestProductWriteline("Write Special Characters")
                {
                    Text = stringToWrite
                };

                TestRuntime.RunAndValidateWorkflow(writeline);
            }

            VerifyTextOfWriteLine(_tempFilePath, stringToWrite);
        }
        public void WriteLineWithWorkflowInvoker()
        {
            string stringToWrite = "Hello World";

            using (StreamWriter streamWriter = ConsoleSetOut())
            {
                {
                    TestProductWriteline        writeline = new TestProductWriteline("Write Hello");
                    Dictionary <string, object> dic       = new Dictionary <string, object>();
                    dic.Add("Text", stringToWrite);
                    TestRuntime.RunAndValidateUsingWorkflowInvoker(writeline, dic, null, null);
                }
            }

            VerifyTextOfWriteLine(_tempFilePath, stringToWrite);
        }
        public void WriteNewLineCharsToConsole()
        {
            string stringToWrite = "Take it easy";

            using (StreamWriter streamWriter = ConsoleSetOut())
            {
                TestProductWriteline writeline = new TestProductWriteline("Write Special Characters")
                {
                    Text = "\n\n" + stringToWrite
                };

                TestRuntime.RunAndValidateWorkflow(writeline);
            }

            VerifyTextOfWriteLine(_tempFilePath, string.Empty, string.Empty, stringToWrite);
        }
        public void WriteInTextFileWithStreamWriter()
        {
            string stringToWrite = "Writing text to  a file with StreamWriter object";

            using (StreamWriter streamWriter = new StreamWriter(new FileStream(_tempFilePath, FileMode.Create, FileAccess.Write)))
            {
                Dictionary <string, object> inputs = new Dictionary <string, object>();
                inputs.Add("Text", stringToWrite);
                inputs.Add("TextWriter", streamWriter);
                TestProductWriteline writeline = new TestProductWriteline("Write with StreamWriter");

                TestRuntime.RunAndValidateUsingWorkflowInvoker(writeline, inputs, null, null);
            }

            VerifyTextOfWriteLine(_tempFilePath, stringToWrite);
        }
        public void WriteNullOnConsole()
        {
            using (StreamWriter streamWriter = ConsoleSetOut())
            {
                {
                    TestProductWriteline writeline = new TestProductWriteline("Write Null on Console")

                    {
                        Text = null
                    };

                    TestRuntime.RunAndValidateWorkflow(writeline);
                }
            }

            VerifyTextOfWriteLine(_tempFilePath, String.Empty);
        }
        public void WriteArabicText()
        {
            string stringToWrite = "\u062A\u0639\u0644\u0645 \u0627\u0644\u0644\u063A\u0629 \u0627\u0644\u0639\u0631\u0628\u064A\u0629 \u062A\u0639\u0644\u0645 \u0627\u0644\u0644\u063A\u0629 \u0627\u0644\u0639\u0631\u0628\u064A\u0629";

            using (StreamWriter sw = new StreamWriter(new FileStream(_tempFilePath, FileMode.Create, FileAccess.Write), Encoding.Unicode))
            {
                TestProductWriteline writeline = new TestProductWriteline("Write Chinese Big5 chars to file")
                {
                    Text = stringToWrite,
                    TextWriterExpression = context => sw
                };

                TestRuntime.RunAndValidateWorkflow(writeline);
            }

            VerifyTextOfWriteLine(_tempFilePath, stringToWrite);
        }
        public void WriteChineseBig5CharsToFile()
        {
            string stringToWrite = "\u507D \u505C \u5047 \u5043 \u504C \u505A \u5049 \u5065 \u5076 \u504E \u5055 \u5075 \u5074 ";

            using (StreamWriter sw = new StreamWriter(new FileStream(_tempFilePath, FileMode.Create, FileAccess.Write), Encoding.Unicode))
            {
                TestProductWriteline writeline = new TestProductWriteline("Write Chinese Big5 chars to file")
                {
                    Text = stringToWrite,
                    TextWriterExpression = context => sw
                };

                TestRuntime.RunAndValidateWorkflow(writeline);
            }

            VerifyTextOfWriteLine(_tempFilePath, stringToWrite);
        }
        public void WriteTextExplicitPassConsole()
        {
            string stringToWrite = "@ ;=#$%^&*()_+!    ";

            using (StreamWriter writer = ConsoleSetOut())
            {
                TestProductWriteline writeline = new TestProductWriteline("Write Special Characters")
                {
                    Text = stringToWrite,
                    TextWriterExpression = context => Console.Out
                };

                TestRuntime.RunAndValidateWorkflow(writeline);
            }

            VerifyTextOfWriteLine(_tempFilePath, stringToWrite);
        }
        public void VerifyWriteTextOnConsole()
        {
            string stringToWrite = "Hello World";

            using (StreamWriter streamWriter = ConsoleSetOut())
            {
                {
                    TestProductWriteline writeline = new TestProductWriteline("Write Hello")
                    {
                        Text = stringToWrite
                    };

                    TestRuntime.RunAndValidateWorkflow(writeline);
                }
            }

            VerifyTextOfWriteLine(_tempFilePath, stringToWrite);
        }
        public void WriteChineseAndEnglishConsole()
        {
            string stringToWrite = "\u9D1B\u9ED8\u9ED4\u9F8D\u9F9C\u512A\u511F\u5121 \u52F5 \u568E \u5680 \u5690 \u5685 \u5687 hello how are you";

            TestProductWriteline writeline = new TestProductWriteline("Write Chinese Big5 chars to file")
            {
                Text = stringToWrite
            };

            using (StreamWriter streamWriter = new StreamWriter(new FileStream(_tempFilePath, FileMode.Create, FileAccess.Write), Encoding.Unicode))
            {
                Console.SetOut(streamWriter);


                TestRuntime.RunAndValidateWorkflow(writeline);
            }

            VerifyTextOfWriteLine(_tempFilePath, stringToWrite);
        }
        public void WriteChineseGBToConsole()
        {
            string stringToWrite = "\u00E9\u00A6\u02C6 \u00E6\u201E\u00A7 \u00E6\u00BA\u0192 \u00E5\u009D\u00A4 \u00E6\u02DC\u2020 \u00E6\u008D\u2020 \u00E5\u203A\u00B0 \u00E6\u2039\u00AC \u00E6\u2030\u00A9 \u00E5\u00BB\u201C \u00E9\u02DC\u201D \u00E5\u017E\u0192 \u00E6\u2039\u2030 \u00E5\u2013\u2021 \u00E8\u0153\u00A1 ";

            using (StreamWriter streamWriter = new StreamWriter(new FileStream(_tempFilePath, FileMode.Create, FileAccess.Write), Encoding.Unicode))
            {
                Console.SetOut(streamWriter);
                streamWriter.AutoFlush = true;

                TestProductWriteline writeline = new TestProductWriteline("Write Chinese Big5 chars to file")
                {
                    Text = stringToWrite
                };

                TestRuntime.RunAndValidateWorkflow(writeline);
            }

            VerifyTextOfWriteLine(_tempFilePath, stringToWrite);
        }
        public void WriteFileByReadingOther()
        {
            string stringToWrite = "Writing to this file for a test case, so we can read from this file";

            using (StreamWriter writer = new StreamWriter(new FileStream(_tempFile1Path, FileMode.Create, FileAccess.Write)))
            {
                using (StreamWriter streamWriter = new StreamWriter(new FileStream(_tempFilePath, FileMode.Create, FileAccess.Write)))
                {
                    streamWriter.WriteLine(stringToWrite);
                }

                TestProductWriteline writeline = new TestProductWriteline("Write with StreamWriter")
                {
                    Text = File.ReadAllLines(_tempFilePath)[0],
                    TextWriterExpression = context => writer
                };

                TestRuntime.RunAndValidateWorkflow(writeline);
            }

            VerifyTextOfWriteLine(_tempFile1Path, stringToWrite);
        }
        public void SetTextWriterToNullAndUseATextWriterExtension()
        {
            string stringToWrite = "Writing text to  a file with StreamWriter object";

            using (StreamWriter streamWriter = new StreamWriter(new FileStream(_tempFilePath, FileMode.Create, FileAccess.Write)))
            {
                TestProductWriteline writeline = new TestProductWriteline("Write with StreamWriter")
                {
                    Text = stringToWrite,
                };
                writeline.ProductWriteLine.TextWriter = null;

                using (TestWorkflowRuntime runtime = TestRuntime.CreateTestWorkflowRuntime(writeline))
                {
                    runtime.CreateWorkflow();
                    runtime.Extensions.Add(streamWriter);
                    runtime.ResumeWorkflow();
                    runtime.WaitForCompletion();
                }
            }

            VerifyTextOfWriteLine(_tempFilePath, stringToWrite);
        }