public void ValidateWithRecordsThatHaveTheirRecordTypeMismatchReturnsExpectedResult()
        {
            var records = _fixture
                          .CreateMany <NumberedRoadChangeDbaseRecord>(2)
                          .Select((record, index) =>
            {
                record.GW_OIDN.Value    = index + 1;
                record.RECORDTYPE.Value = -1;
                return(record);
            })
                          .ToDbaseRecordEnumerator();

            var result = _sut.Validate(_entry, records);

            Assert.Equal(
                ZipArchiveProblems.Many(
                    _entry
                    .AtDbaseRecord(new RecordNumber(1))
                    .RecordTypeMismatch(-1),
                    _entry
                    .AtDbaseRecord(new RecordNumber(2))
                    .RecordTypeMismatch(-1)
                    ),
                result);
        }
        public void ValidateWithEmptyPolyLineMRecordsReturnsExpectedResult()
        {
            var records = Enumerable.Range(0, 2)
                          .Select(index =>
                                  new PolyLineMShapeContent(
                                      GeometryTranslator.FromGeometryMultiLineString(
                                          new MultiLineString(
                                              new[]
            {
                new LineString(
                    new CoordinateArraySequence(new[]
                {
                    NetTopologySuite.Geometries.Point.Empty.Coordinate,
                    NetTopologySuite.Geometries.Point.Empty.Coordinate
                }),
                    GeometryConfiguration.GeometryFactory)
            }))).RecordAs(new RecordNumber(index + 1)))
                          .GetEnumerator();

            var result = _sut.Validate(_entry, records);

            Assert.Equal(
                ZipArchiveProblems.Many(
                    _entry.AtShapeRecord(new RecordNumber(1)).ShapeRecordGeometryMismatch(),
                    _entry.AtShapeRecord(new RecordNumber(2)).ShapeRecordGeometryMismatch()
                    ),
                result);
        }
Esempio n. 3
0
        public void ValidateReturnsExpectedResultFromEntryValidators()
        {
            using (var archive = CreateArchiveWithEmptyFiles())
            {
                var sut = new ZipArchiveValidator(Encoding.UTF8);

                var result = sut.Validate(archive);

                Assert.Equal(
                    ZipArchiveProblems.Many(
                        archive.Entries.Select(entry => entry.Name.EndsWith(".SHP") ? entry.HasNoShapeRecords() : entry.HasNoDbaseRecords(false))
                        ),
                    result);
            }
        }
        public void ValidateWithEmptyPointRecordsReturnsExpectedResult()
        {
            var records = Enumerable.Range(0, 2)
                          .Select(index =>
                                  new PointShapeContent(GeometryTranslator.FromGeometryPoint(NetTopologySuite.Geometries.Point.Empty))
                                  .RecordAs(new RecordNumber(index + 1)))
                          .GetEnumerator();

            var result = _sut.Validate(_entry, records);

            Assert.Equal(
                ZipArchiveProblems.Many(
                    _entry.AtShapeRecord(new RecordNumber(1)).ShapeRecordGeometryMismatch(),
                    _entry.AtShapeRecord(new RecordNumber(2)).ShapeRecordGeometryMismatch()
                    ),
                result);
        }
        public void ValidateWithTooLittleOrTooManyLinesPolyLineMRecordsReturnsExpectedResult()
        {
            var records = Enumerable.Range(0, 2)
                          .Select(index =>
            {
                if (index == 0)
                {
                    return(new PolyLineMShapeContent(
                               GeometryTranslator.FromGeometryMultiLineString(new MultiLineString(new LineString[0]))
                               ).RecordAs(new RecordNumber(index + 1)));
                }

                return(new PolyLineMShapeContent(
                           GeometryTranslator.FromGeometryMultiLineString(
                               new MultiLineString(new[]
                {
                    new LineString(
                        new CoordinateArraySequence(new[]
                    {
                        new Coordinate(index * 2.0, index * 2.0),
                        new Coordinate(index * 2.0 + 1.0, index * 2.0 + 1.0)
                    }),
                        GeometryConfiguration.GeometryFactory),
                    new LineString(
                        new CoordinateArraySequence(new[]
                    {
                        new Coordinate(index * 4.0, index * 4.0),
                        new Coordinate(index * 4.0 + 1.0, index * 4.0 + 1.0)
                    }),
                        GeometryConfiguration.GeometryFactory)
                }))
                           ).RecordAs(new RecordNumber(index + 1)));
            })
                          .GetEnumerator();

            var result = _sut.Validate(_entry, records);

            Assert.Equal(
                ZipArchiveProblems.Many(
                    _entry.AtShapeRecord(new RecordNumber(1)).ShapeRecordGeometryLineCountMismatch(1, 0),
                    _entry.AtShapeRecord(new RecordNumber(2)).ShapeRecordGeometryLineCountMismatch(1, 2)
                    ),
                result);
        }
        public void ValidateWithRecordsThatHaveZeroAsAttributeIdentifierReturnsExpectedResult()
        {
            var records = _fixture
                          .CreateMany <NumberedRoadChangeDbaseRecord>(2)
                          .Select(record =>
            {
                record.GW_OIDN.Value = 0;
                return(record);
            })
                          .ToDbaseRecordEnumerator();

            var result = _sut.Validate(_entry, records);

            Assert.Equal(
                ZipArchiveProblems.Many(
                    _entry.AtDbaseRecord(new RecordNumber(1)).IdentifierZero(),
                    _entry.AtDbaseRecord(new RecordNumber(2)).IdentifierZero()
                    ),
                result);
        }
        public void ValidateWithRecordsThatHaveNullAsEuropeanRoadNumbersReturnsExpectedResult()
        {
            var records = _fixture
                          .CreateMany <EuropeanRoadChangeDbaseRecord>(2)
                          .Select((record, index) =>
            {
                record.EU_OIDN.Value  = index + 1;
                record.EUNUMMER.Value = null;
                return(record);
            })
                          .ToDbaseRecordEnumerator();

            var result = _sut.Validate(_entry, records);

            Assert.Equal(
                ZipArchiveProblems.Many(
                    _entry.AtDbaseRecord(new RecordNumber(1)).RequiredFieldIsNull(EuropeanRoadChangeDbaseRecord.Schema.EUNUMMER),
                    _entry.AtDbaseRecord(new RecordNumber(2)).RequiredFieldIsNull(EuropeanRoadChangeDbaseRecord.Schema.EUNUMMER)
                    ),
                result);
        }
        public void ValidateWithRecordsThatDoNotHaveEuropeanRoadNumbersReturnsExpectedResult(string number)
        {
            var records = _fixture
                          .CreateMany <EuropeanRoadChangeDbaseRecord>(2)
                          .Select((record, index) =>
            {
                record.EU_OIDN.Value  = index + 1;
                record.EUNUMMER.Value = number;
                return(record);
            })
                          .ToDbaseRecordEnumerator();

            var result = _sut.Validate(_entry, records);

            Assert.Equal(
                ZipArchiveProblems.Many(
                    _entry.AtDbaseRecord(new RecordNumber(1)).NotEuropeanRoadNumber(number),
                    _entry.AtDbaseRecord(new RecordNumber(2)).NotEuropeanRoadNumber(number)
                    ),
                result);
        }