public void CheckIfState2ReturnsBadStateWhenBadChar()
        {
            // arrange
            var fsm = new Fsm(true);

            // act
            var res = fsm.CheckIfState2('w');

            // assert
            Console.Out.WriteLine((res == -1) + " -> result of CheckIfState2ReturnsBadStateWhenBadChar");
        }
        public void CheckIfState1ReturnsState2WhenC1Char()
        {
            // arrange
            var fsm = new Fsm(true);

            // act
            var res = fsm.CheckIfState1(C1Char);

            // assert
            Console.Out.WriteLine((res == 2) + " -> result of CheckIfState1ReturnsState2WhenC1Char");
        }
        public static void Main(string[] args)
        {
            Console.OutputEncoding = System.Text.Encoding.UTF8;
            // run tests if anything here
            if(args != null && args.Length > 0 && args[0] == "test")
            {
                var tests = new Tests();
                tests.RunTests();
            }
            else
            {
                var fsm = new Fsm();
                Console.Out.WriteLine("<html><meta http-equiv='Content-Type' content='text/html; charset=UTF-8' /><body>");

                string line;
                while ((line = Console.In.ReadLine()) != null) {
                    Console.Out.Write(fsm.Process(line));
                    Console.Out.WriteLine("<br/>");
                }

                Console.Out.WriteLine("</body></html>");
            }
        }
        public void InputLine46()
        {
            // ช่วยย้ายกล่องนี้ไปไว้ที่ห้องนั้นหน่อย
            // arrange
            const string input = "ช่วยย้ายกล่องนี้ไปไว้ที่ห้องนั้นหน่อย";
            const string expectedOutput = "ช่วย ย้าย กล่อง นี้ ไป ไว้ ที่ ห้อง นั้น หน่อย ";
            var fsm = new Fsm(true);

            // act
            var res = fsm.Process(input);

            // assert
            Console.Out.WriteLine(expectedOutput);
            Console.Out.WriteLine((res == expectedOutput) + " -> InputLine2");
        }
        public void InputLine2()
        {
            // arrange
            const string input = "เขาเงียบไปครู่หนึ่งแล้วพูดขึ้น";
            const string expectedOutput = "เขา เงียบ ไป ครู่ หนึ่ง แล้ว พูด ขึ้น ";
            var fsm = new Fsm(true);

            // act
            var res = fsm.Process(input);

            // assert
            Console.Out.WriteLine(expectedOutput);
            Console.Out.WriteLine((res == expectedOutput) + " -> InputLine2");
        }
        public void InitialState()
        {
            // arrange
            const string input = "คู่แข่งขันต่างก็คุมเชิงกัน";
            const string expectedOutput = "คู่ แข่ง ขัน ต่าง ก็ คุม เชิง กัน ";
            var fsm = new Fsm(true);

            // act
            var res = fsm.Process(input);

            // assert
            Console.Out.WriteLine(expectedOutput);
            Console.Out.WriteLine((res == expectedOutput) + " -> InitialState");
        }
        public void CheckIfState4ReturnsState6WhenV3Char()
        {
            // arrange
            var fsm = new Fsm(true);

            // act
            var res = fsm.CheckIfState4(V3Char);

            // assert
            Console.Out.WriteLine((res == 6) + " -> result of CheckIfState4ReturnsState6WhenV3Char");
        }