示例#1
0
        public void NextReturnsExpectedValue(int value, int expected)
        {
            var sut = new RecordNumber(value);

            var result = sut.Next();

            Assert.Equal(new RecordNumber(expected), result);
        }
 public DbaseRecordEnumerator(DbaseFileHeader header, BinaryReader reader)
 {
     _header  = header ?? throw new ArgumentNullException(nameof(header));
     _reader  = reader ?? throw new ArgumentNullException(nameof(reader));
     _current = null;
     _state   = State.Initial;
     _number  = RecordNumber.Initial;
 }
示例#3
0
        public void ToStringReturnsExpectedValue()
        {
            var value = _fixture.Create <int>().AsRecordNumberValue();
            var sut   = new RecordNumber(value);

            var result = sut.ToString();

            Assert.Equal(value.ToString(), result);
        }
示例#4
0
        public void Write(BinaryWriter writer)
        {
            if (writer == null)
            {
                throw new ArgumentNullException(nameof(writer));
            }

            writer.WriteInt32BigEndian(RecordNumber.ToInt32());
            writer.WriteInt32BigEndian(ContentLength.ToInt32());
        }
示例#5
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));
        }
            public bool MoveNext()
            {
                if (_state == State.Ended)
                {
                    return(false);
                }

                if (_state == State.Initial)
                {
                    _state = State.Started;
                }
                else
                {
                    if (_header.RecordCount == _number)
                    {
                        _current = null;
                        _state   = State.Ended;
                        return(false);
                    }

                    _number = _number.Next();
                }

                try
                {
                    var record = new TDbaseRecord();
                    if (record.TryRead(_reader))
                    {
                        _current = record;
                    }
                    else
                    {
                        _current = null;
                        _state   = State.Ended;
                    }
                }
                catch (Exception)
                {
                    _current = null;
                    _state   = State.Ended;
                    throw;
                }

                return(_state == State.Started);
            }
示例#7
0
 public ShapeRecord RecordAs(RecordNumber number)
 {
     return(new ShapeRecord(new ShapeRecordHeader(number, ContentLength), this));
 }
示例#8
0
        public void NextOfIntMaxValueThrows()
        {
            var sut = new RecordNumber(int.MaxValue);

            Assert.Throws <InvalidOperationException>(() => sut.Next());
        }
 public int CompareTo(RecordNumber other)
 {
     return(_value.CompareTo(other.ToInt32()));
 }
 public bool Equals(RecordNumber other) => _value.Equals(other.ToInt32());
示例#11
0
 public ShapeRecordHeader(RecordNumber recordNumber, WordLength contentLength)
 {
     RecordNumber  = recordNumber;
     ContentLength = contentLength;
 }
示例#12
0
 public override int GetHashCode() => RecordNumber.GetHashCode() ^ ContentLength.GetHashCode();
示例#13
0
 public bool Equals(ShapeRecordHeader other) =>
 other != null &&
 RecordNumber.Equals(other.RecordNumber) &&
 ContentLength.Equals(other.ContentLength);