public ShapeRecordEnumerator(ShapeFileHeader header, BinaryReader reader)
 {
     _header  = header ?? throw new ArgumentNullException(nameof(header));
     _reader  = reader ?? throw new ArgumentNullException(nameof(reader));
     _current = null;
     _state   = State.Initial;
     _length  = Length;
 }
Beispiel #2
0
        public void GreaterThanWordLengthOperatorReturnsExpectedValue(int left, int right, bool expected)
        {
            var sut   = new WordLength(left);
            var other = new WordLength(right);

            var result = sut > other;

            Assert.Equal(expected, result);
        }
Beispiel #3
0
        public void LessThanOrEqualToByteLengthOperatorReturnsExpectedValue(int left, int right, bool expected)
        {
            var sut   = new WordLength(left);
            var other = new ByteLength(right);

            var result = sut <= other;

            Assert.Equal(expected, result);
        }
Beispiel #4
0
        public void CompareToByteLengthReturnsExpectedResult(int left, int right, int expected)
        {
            var sut   = new WordLength(left);
            var other = new ByteLength(right);

            var result = sut.CompareTo(other);

            Assert.Equal(expected, result);
        }
Beispiel #5
0
        public void ToInt32ReturnsExpectedValue()
        {
            var value = Math.Abs(_fixture.Create <int>());
            var sut   = new WordLength(value);

            var result = sut.ToInt32();

            Assert.Equal(value, result);
        }
Beispiel #6
0
        public void InequalityOperatorReturnsExpectedValue(int left, int right, bool expected)
        {
            var sut   = new WordLength(left);
            var other = new WordLength(right);

            var result = sut != other;

            Assert.Equal(expected, result);
        }
        public static ShapeIndexRecord Read(BinaryReader reader)
        {
            if (reader == null)
            {
                throw new ArgumentNullException(nameof(reader));
            }

            var offset        = new WordOffset(reader.ReadInt32BigEndian());
            var contentLength = new WordLength(reader.ReadInt32BigEndian());

            return(new ShapeIndexRecord(offset, contentLength));
        }
Beispiel #8
0
        public static ShapeRecordHeader Read(BinaryReader reader)
        {
            if (reader == null)
            {
                throw new ArgumentNullException(nameof(reader));
            }

            var recordNumber  = new RecordNumber(reader.ReadInt32BigEndian());
            var contentLength = new WordLength(reader.ReadInt32BigEndian());

            return(new ShapeRecordHeader(recordNumber, contentLength));
        }
Beispiel #9
0
        public void ContentLengthReturnsExpectedValue()
        {
            var shape          = _fixture.Create <Polygon>();
            var sut            = new PolygonShapeContent(shape);
            var numberOfParts  = shape.NumberOfParts;
            var numberOfPoints = shape.NumberOfPoints;
            var contentLength  = new WordLength(
                2 + 2 + 2                // shape type, number of parts, number of points,
                + 4 * 4                  // bounding box,
                + 2 * numberOfParts      // parts
                + 4 * 2 * numberOfPoints // points
                );

            Assert.Equal(contentLength, sut.ContentLength);
        }
Beispiel #10
0
        public void ContentLengthReturnsExpectedValue()
        {
            var shape          = _fixture.Create <MultiLineString>();
            var sut            = new PolyLineMShapeContent(shape);
            var numberOfParts  = shape.NumGeometries;
            var numberOfPoints = shape.NumPoints;
            var contentLength  = new WordLength(
                2 + 2 + 2                // shape type, number of parts, number of points,
                + 4 * 4                  // bounding box,
                + 2 * numberOfParts      // parts
                + 4 * 2 * numberOfPoints // points
                + 4 * 2                  // measure range
                + 4 * numberOfPoints     // measures
                );

            Assert.Equal(contentLength, sut.ContentLength);
        }
            public bool MoveNext()
            {
                if (_state == State.Ended)
                {
                    return(false);
                }

                if (_header.FileLength == _length)
                {
                    _current = null;
                    _state   = State.Ended;
                    return(false);
                }

                if (_state == State.Initial)
                {
                    _state = State.Started;
                }

                try
                {
                    _current = ShapeRecord.Read(_reader);
                    _length  = _length.Plus(_current.Length);
                }
                catch (EndOfStreamException)
                {
                    _current = null;
                    _state   = State.Ended;
                }
                catch (Exception)
                {
                    _current = null;
                    _state   = State.Ended;
                    throw;
                }

                return(_state == State.Started);
            }
 public ShapeIndexRecord(WordOffset offset, WordLength contentLength)
 {
     Offset        = offset;
     ContentLength = contentLength;
 }
Beispiel #13
0
 public WordOffset Plus(WordLength other) => new WordOffset(_value + other.ToInt32());
Beispiel #14
0
 public ShapeRecordHeader(RecordNumber recordNumber, WordLength contentLength)
 {
     RecordNumber  = recordNumber;
     ContentLength = contentLength;
 }
Beispiel #15
0
 public ByteLength Plus(WordLength other)
 {
     return(new ByteLength(_value + other.ToByteLength().ToInt32()));
 }
 public ShapeContentUnderTest(ShapeType shapeType, WordLength contentLength)
 {
     ShapeType     = shapeType;
     ContentLength = contentLength;
 }
Beispiel #17
0
 public WordOffset Plus(WordLength other)
 {
     return(new WordOffset(_value + other.ToInt32()));
 }
 public ShapeFileHeader(WordLength fileWordLength, ShapeType shapeType, BoundingBox3D boundingBox)
 {
     FileLength  = fileWordLength;
     ShapeType   = shapeType;
     BoundingBox = boundingBox;
 }
 public ByteLength Plus(WordLength other) => new ByteLength(_value + other.ToByteLength().ToInt32());