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); }
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); }