public void WriteString_Writes()
        {
            var  testWriter   = new SsdWriterStub <byte>();
            ISsd stringWriter = new StringSsdWriter(testWriter,
                                                    (Glyph g) => (byte)g.Character,
                                                    (arg1, arg2) => new SelectorStub <byte> {
                Text = arg1
            });

            var str = "123";

            stringWriter = stringWriter.Write(str);

            Assert.IsTrue(testWriter.LastValues.SequenceEqual(ImmutableList <byte> .Empty
                                                              .Add((byte)'1').Add((byte)'2').Add((byte)'3')));
        }
        public void Write_NotEnoughSpace_WritesFirsts()
        {
            var  testWriter   = new SsdWriterStub <byte>();
            ISsd stringWriter = new StringSsdWriter(testWriter,
                                                    (Glyph g) => (byte)g.Character,
                                                    (arg1, arg2) => new SelectorStub <byte> {
                Text = arg1
            });

            var strs = ImmutableList <(string, uint)> .Empty
                       .Add(("1", 1)).Add(("2", 1)).Add(("3", 1)).Add(("4", 1));

            stringWriter = stringWriter.Write(strs);

            Assert.IsTrue(testWriter.LastValues.SequenceEqual(ImmutableList <byte> .Empty
                                                              .Add((byte)'1').Add((byte)'2').Add((byte)'3')));
        }
        public void ReceiveInterrupt_OnSelector_Writes()
        {
            var  testWriter   = new SsdWriterStub <byte>();
            var  testSelector = new SelectorStub <byte>();
            ISsd stringWriter = new StringSsdWriter(testWriter,
                                                    (Glyph g) => (byte)g.Character,
                                                    (arg1, arg2) => { testSelector.Text = arg1; return(testSelector); });

            var str = "123";

            stringWriter = stringWriter.Write(str);

            testSelector.NewText = ImmutableList <byte> .Empty.Add(100);

            stringWriter = stringWriter.Tick(1);

            Assert.IsTrue(testWriter.LastValues.SequenceEqual(testSelector.NewText));
        }
        public void ReceiveInterrupt_onWriter_ReceivesIt()
        {
            var  testWriter   = new SsdWriterStub <byte>();
            ISsd stringWriter = new StringSsdWriter(testWriter,
                                                    (Glyph g) => (byte)g.Character,
                                                    (arg1, arg2) => new SelectorStub <byte> {
                Text = arg1
            });

            var str = "123";

            stringWriter = stringWriter.Write(str);

            testWriter.NextTickTime = 0;

            stringWriter = stringWriter.Tick(1);

            Assert.AreEqual(1, testWriter.TickTime);
        }