Пример #1
0
    public void FixedListByte128ToFixedListByte32()
    {
        var a = new FixedListByte128();

        for (var i = 0; i < 126; ++i)
        {
            a.Add((byte)i);
        }
        Assert.Throws <IndexOutOfRangeException> (() => { var b = new FixedListByte32(a); });
    }
Пример #2
0
    public void FixedListByte32HasExpectedCapacity()
    {
        var list             = new FixedListByte32();
        var expectedCapacity = 30;

        for (int i = 0; i < expectedCapacity; ++i)
        {
            list.Add((byte)i);
        }
        Assert.Throws <IndexOutOfRangeException> (() => { list.Add((byte)expectedCapacity); });
    }
Пример #3
0
    public void FixedListByte32Sort()
    {
        var list = new FixedListByte32();

        for (var i = 0; i < 5; ++i)
        {
            list.Add((byte)(4 - i));
        }
        list.Sort();
        for (var i = 0; i < 5; ++i)
        {
            Assert.AreEqual(i, list[i]);
        }
    }
Пример #4
0
    public void FixedListByte32RemoveRange()
    {
        var list = new FixedListByte32();

        list.Add(0);
        list.Add(3);
        list.Add(3);
        list.Add(1);
        list.Add(2);
        list.RemoveRange(1, 2);
        for (var i = 0; i < 3; ++i)
        {
            Assert.AreEqual(i, list[i]);
        }
    }
Пример #5
0
    public void FixedListByte32InsertRange()
    {
        var list = new FixedListByte32();

        list.Add(0);
        list.Add(3);
        list.Add(4);
        list.InsertRange(1, 2);
        list[1] = 1;
        list[2] = 2;
        for (var i = 0; i < 5; ++i)
        {
            Assert.AreEqual(i, list[i]);
        }
    }
Пример #6
0
    public void FixedListByte32ToFixedListByte128()
    {
        var a = new FixedListByte32();

        for (var i = 0; i < 30; ++i)
        {
            a.Add((byte)i);
        }
        var b = new FixedListByte128(a);

        for (var i = 0; i < 30; ++i)
        {
            Assert.AreEqual((byte)i, b[i]);
        }
    }
        void ParseAnsi(ref FixedListByte32 escape, ref ColorIndex fg, ref ColorIndex bg)
        {
            if (escape.Length < 4)
            {
                return;
            }
            if (escape[0] != 0x1b || escape[1] != '[')
            {
                return;
            }
            int            offset  = 2;
            FixedListInt64 numbers = default;
            int            number  = 0;

            while (offset < escape.Length)
            {
                switch ((char)escape[offset])
                {
                case '0':
                case '1':
                case '2':
                case '3':
                case '4':
                case '5':
                case '6':
                case '7':
                case '8':
                case '9':
                    number *= 10;
                    number += escape[offset] - '0';
                    break;

                case ';':
                    numbers.Add(number);
                    number = 0;
                    break;

                case 'm':
                    numbers.Add(number);
                    ParseAnsiColor(ref numbers, ref fg, ref bg);
                    return;
                }
                ++offset;
            }
        }
Пример #8
0
    public void FixedListByte32HasExpectedLayout()
    {
        var actual = new FixedListByte32();

        for (var i = 0; i < 30; ++i)
        {
            actual.Add((byte)i);
        }
        unsafe
        {
            var e = stackalloc byte[32];
            e[0] = (byte)((30 >> 0) & 0xFF);
            e[1] = (byte)((30 >> 8) & 0xFF);
            for (var i = 0; i < 30; ++i)
            {
                var s = (byte)i;
                UnsafeUtility.MemCpy(e + 2 + sizeof(byte) * i, &s, sizeof(byte));
            }
            Assert.AreEqual(0, UnsafeUtility.MemCmp(e, &actual.length, 32));
        }
    }