Example #1
0
        private void TestSmallIntegerItems(NonIndexedArraySegment segment)
        {
            // first item
            var item1 = segment.Items[0];

            Assert.IsInstanceOf <SmallIntegerSegment>(item1);
            Assert.AreEqual(SegmentType.SmallInteger, item1.Type);
            Assert.AreEqual(ValueType.PosOneInt, item1.ValueType);

            // second item
            var item2 = segment.Items[1];

            Assert.IsInstanceOf <SmallIntegerSegment>(item2);
            Assert.AreEqual(SegmentType.SmallInteger, item2.Type);
            Assert.AreEqual(ValueType.PosTwoInt, item2.ValueType);

            // third item
            var item3 = segment.Items[2];

            Assert.IsInstanceOf <SmallIntegerSegment>(item3);
            Assert.AreEqual(SegmentType.SmallInteger, item3.Type);
            Assert.AreEqual(ValueType.PosThreeInt, item3.ValueType);
        }
Example #2
0
        public static Segment ToSegment(byte[] data, int startIndex)
        {
            var     segmentType = TypeConverter.ToSegmentType(data[startIndex]);
            Segment segment     = null;

            switch (segmentType)
            {
            case SegmentType.None:
                segment = new NoneSegment();
                break;

            case SegmentType.EmptyArray:
                segment = new EmptyArraySegment();
                break;

            case SegmentType.NonIndexedArray:
                segment = new NonIndexedArraySegment();
                break;

            case SegmentType.CompactArray:
                segment = new CompactArraySegment();
                break;

            case SegmentType.Illegal:
                segment = new IllegalSegment();
                break;

            case SegmentType.Null:
                segment = new NullSegment();
                break;

            case SegmentType.Boolean:
                segment = new BooleanSegment();
                break;

            case SegmentType.Float:
                segment = new FloatSegment();
                break;

            case SegmentType.Double:
                segment = new DoubleSegment();
                break;

            case SegmentType.NonSensical:
                segment = new NonSensicalSegment();
                break;

            case SegmentType.SmallInteger:
                segment = new SmallIntegerSegment();
                break;

            case SegmentType.SignedInteger:
                segment = new SignedIntegerSegment();
                break;

            case SegmentType.UnsignedInteger:
                segment = new UnsignedIntegerSegment();
                break;

            default:
                // TODO: throw custom exception
                throw new Exception("Segment type is not implemented.");
            }

            segment.ParseValue(data, startIndex);

            return(segment);
        }