public void WriteString_SameContent_DoNotWritesAgain()
        {
            var testWriter   = new TestSsdWriter();
            var testSelector = new TestSelector();
            var stringWriter = new StringSsdWriter(testWriter,
                                                   (Glyph g) => (byte)g.Character, testSelector);

            var str      = "123";
            var tickable = stringWriter.Write(str).Tick(0);

            testWriter.Reset();
            tickable = tickable.Tick(0);
            testWriter.TestUnwritten();
        }
        public void WriteString_WritesAndTicks()
        {
            var testWriter   = new TestSsdWriter();
            var testSelector = new TestSelector();
            var stringWriter = new StringSsdWriter(testWriter,
                                                   (Glyph g) => (byte)g.Character, testSelector);

            var str = "123";

            testSelector.CreateNew = true;
            var tickable = stringWriter.Write(str).Tick(0);

            testWriter.TestValues(ImmutableList <byte> .Empty
                                  .Add((byte)'1').Add((byte)'2').Add((byte)'3'));
            testWriter.TestTime(0);
        }
        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);
        }
示例#7
0
        public static void HelloWorld()
        {
            var gpioHandler  = new GpioHandler();
            var segment_pins = ImmutableList <Pin> .Empty
                               .Add(new Pin(21, false)).Add(new Pin(20, false))
                               .Add(new Pin(16, false)).Add(new Pin(12, false))
                               .Add(new Pin(7, false)).Add(new Pin(8, false))
                               .Add(new Pin(25, false)).Add(new Pin(24, false));

            var digit_pins = ImmutableList <Pin> .Empty
                             .Add(new Pin(26, false)).Add(new Pin(19, false))
                             .Add(new Pin(13, false)).Add(new Pin(6, false))
                             .Add(new Pin(5, false)).Add(new Pin(11, false))
                             .Add(new Pin(9, false)).Add(new Pin(10, false));

            var directWriter =
                new SimplerDirectSsdWriter(segment_pins, digit_pins, gpioHandler);

            var converter = new SegmentsConverter();

            var selector = new ScrollingGlyphSelector(1000000, 2000000, digit_pins.Count);

            ISsdWriter <string> stringWriter =
                new StringSsdWriter(directWriter, converter.GetSegments, selector);

            stringWriter = stringWriter.Write("Hello world please work");

            uint millis = 0;
            uint step   = 800;

            while (true)
            {
                stringWriter = stringWriter.Tick(millis);

                gpioHandler.SleepMicros(step);
                millis += step;
            }
        }