Esempio n. 1
0
        public static void AnsiParser_Print_ConfigureCharSet_ShiftIn_ShiftOut()
        {
            const string Case        = "Hello 😁 world a ";
            const string SpecialCase = "H\n┌┌⎺ 😁 ┬⎺⎼┌\r ▒ ";

            var sb      = new StringBuilder();
            var ix      = 0;
            var current = Case;
            var events  = new AnsiParserEvents()
            {
                Input = (characters) =>
                {
                    sb.Append(new string(characters));
                    ix = (ix + characters.Length) % Case.Length;
                }
            };

            var chars = CharacterParser.Create();
            var sut   = new AnsiParser(events: events, utf8: chars.TryParseUtf8);

            sut.OnPrint(Case);
            sut.OnPrint(Case);
            Assert.Equal(current + current, sb.ToString());

            // SET G0

            sut.OnEscapeSequence(EscapeCommand.ConfigureSpecialCharSet, new[] { (byte)'(' });
            sb.Clear();
            ix      = 0;
            current = SpecialCase;

            sut.OnPrint(Case);
            sut.OnPrint(Case);
            Assert.Equal(current + current, sb.ToString());

            // Shift

            sut.OnExecute(ControlCode.ShiftOut);
            sb.Clear();
            ix      = 0;
            current = Case;

            sut.OnPrint(Case);
            sut.OnPrint(Case);
            Assert.Equal(current + current, sb.ToString());

            // Reset G0 and Shift
            sut.OnEscapeSequence(EscapeCommand.ConfigureAsciiCharSet, new[] { (byte)'(' });
            sut.OnExecute(ControlCode.ShiftIn);
            sb.Clear();
            ix      = 0;
            current = Case;

            sut.OnPrint(Case);
            sut.OnPrint(Case);
            Assert.Equal(current + current, sb.ToString());
        }
Esempio n. 2
0
        public static void AnsiParser_Execute_FormFeed()
        {
            var dispatched = 0;
            var events     = new AnsiParserEvents
            {
                LineFeed = () =>
                {
                    dispatched++;
                }
            };

            var sut = new AnsiParser(events: events);

            sut.OnExecute(ControlCode.FormFeed);
            sut.OnExecute(ControlCode.VerticalTabulation);
            sut.OnExecute(ControlCode.LineFeed);
            Assert.Equal(3, dispatched);
        }
Esempio n. 3
0
        public static void AnsiParser_Execute_CarriageReturn()
        {
            var dispatched = 0;
            var events     = new AnsiParserEvents
            {
                CarriageReturn = () =>
                {
                    dispatched++;
                }
            };

            var sut = new AnsiParser(events: events);

            sut.OnExecute(ControlCode.CarriageReturn);
            Assert.Equal(1, dispatched);
        }
Esempio n. 4
0
        public static void AnsiParser_Execute_SingleCharacterIntroducer()
        {
            var dispatched = 0;
            var events     = new AnsiParserEvents
            {
                IdentifyTerminal = () =>
                {
                    dispatched++;
                }
            };

            var sut = new AnsiParser(events: events);

            sut.OnExecute(ControlCode.SingleCharacterIntroducer);
            Assert.Equal(1, dispatched);
        }
Esempio n. 5
0
        public static void AnsiParser_Execute_HorizontalTabulationSet()
        {
            var dispatched = 0;
            var events     = new AnsiParserEvents
            {
                SetHorizontalTabStop = () =>
                {
                    dispatched++;
                }
            };

            var sut = new AnsiParser(events: events);

            sut.OnExecute(ControlCode.HorizontalTabulationSet);
            Assert.Equal(1, dispatched);
        }
Esempio n. 6
0
        public static void AnsiParser_Execute_Bell()
        {
            var dispatched = 0;
            var events     = new AnsiParserEvents
            {
                Bell = () =>
                {
                    dispatched++;
                }
            };

            var sut = new AnsiParser(events: events);

            sut.OnExecute(ControlCode.Bell);
            Assert.Equal(1, dispatched);
        }
Esempio n. 7
0
        public static void AnsiParser_Execute_HorizontalTabulation()
        {
            var dispatched = 0;
            var events     = new AnsiParserEvents
            {
                PutTab = (count) =>
                {
                    dispatched++;
                    Assert.Equal(1, count);
                }
            };

            var sut = new AnsiParser(events: events);

            sut.OnExecute(ControlCode.HorizontalTabulation);
            Assert.Equal(1, dispatched);
        }