public TransactionZoneDbaseRecordsTranslatorTests()
        {
            _fixture = new Fixture();
            _fixture.CustomizeReason();
            _fixture.CustomizeOperatorName();
            _fixture.CustomizeOrganizationId();
            _fixture.Customize <TransactionZoneDbaseRecord>(
                composer => composer
                .FromFactory(random => new TransactionZoneDbaseRecord
            {
                SOURCE_ID  = { Value = random.Next(1, 9999) },
                TYPE       = { Value = random.Next(1, 9999) },
                BESCHRIJV  = { Value = _fixture.Create <Reason>().ToString() },
                OPERATOR   = { Value = _fixture.Create <OperatorName>().ToString() },
                ORG        = { Value = _fixture.Create <OrganizationId>().ToString() },
                APPLICATIE =
                {
                    Value = new string(_fixture
                                       .CreateMany <char>(TransactionZoneDbaseRecord.Schema.APPLICATIE.Length.ToInt32())
                                       .ToArray())
                }
            })
                .OmitAutoProperties());

            _sut        = new TransactionZoneDbaseRecordsTranslator();
            _enumerator = new List <TransactionZoneDbaseRecord>().ToDbaseRecordEnumerator();
            _stream     = new MemoryStream();
            _archive    = new ZipArchive(_stream, ZipArchiveMode.Create);
            _entry      = _archive.CreateEntry("transactiezone.dbf");
        }
Example #2
0
        public EuropeanRoadChangeDbaseRecordsTranslatorTests()
        {
            _fixture = new Fixture();
            _fixture.CustomizeRecordType();
            _fixture.CustomizeAttributeId();
            _fixture.CustomizeRoadSegmentId();
            _fixture.CustomizeEuropeanRoadNumber();
            _fixture.Customize <EuropeanRoadChangeDbaseRecord>(
                composer => composer
                .FromFactory(random => new EuropeanRoadChangeDbaseRecord
            {
                RECORDTYPE = { Value = (short)_fixture.Create <RecordType>().Translation.Identifier },
                TRANSACTID = { Value = (short)random.Next(1, 9999) },
                EU_OIDN    = { Value = new AttributeId(random.Next(1, int.MaxValue)) },
                WS_OIDN    = { Value = _fixture.Create <RoadSegmentId>().ToInt32() },
                EUNUMMER   = { Value = _fixture.Create <EuropeanRoadNumber>().ToString() }
            })
                .OmitAutoProperties());

            _sut        = new EuropeanRoadChangeDbaseRecordsTranslator();
            _enumerator = new List <EuropeanRoadChangeDbaseRecord>().ToDbaseRecordEnumerator();
            _stream     = new MemoryStream();
            _archive    = new ZipArchive(_stream, ZipArchiveMode.Create);
            _entry      = _archive.CreateEntry("atteuropweg_all.dbf");
        }
        public AnonymousDbaseRecordEnumeratorOverStreamWithEndOfFileTests()
        {
            var fixture = new Fixture();

            fixture.CustomizeWordLength();
            fixture.CustomizeDbaseFieldName();
            fixture.CustomizeDbaseFieldLength();
            fixture.CustomizeDbaseDecimalCount();
            fixture.CustomizeDbaseField();
            fixture.CustomizeDbaseCodePage();
            fixture.CustomizeDbaseRecordCount();
            fixture.CustomizeDbaseSchema();

            var  header = fixture.Create <DbaseFileHeader>();
            var  stream = new MemoryStream();
            long position;

            using (var writer = new BinaryWriter(stream, Encoding.UTF8, true))
            {
                header.Write(writer);
                writer.Flush();
                position = stream.Position;
                writer.Write(DbaseRecord.EndOfFile);
                writer.Flush();
            }

            stream.Position = position;
            _reader         = new DisposableBinaryReader(stream, Encoding.UTF8, false);
            _sut            = header.CreateAnonymousDbaseRecordEnumerator(_reader);
        }
        public RoadSegmentSurfaceChangeDbaseRecordsValidatorTests()
        {
            _fixture = new Fixture();
            _fixture.CustomizeAttributeId();
            _fixture.CustomizeRoadSegmentId();
            _fixture.CustomizeRoadSegmentSurfaceType();
            _fixture.CustomizeRoadSegmentPosition();
            _fixture.Customize <RoadSegmentSurfaceChangeDbaseRecord>(
                composer => composer
                .FromFactory(random => new RoadSegmentSurfaceChangeDbaseRecord
            {
                RECORDTYPE = { Value = (short)random.Next(1, 5) },
                TRANSACTID = { Value = (short)random.Next(1, 9999) },
                WV_OIDN    = { Value = new AttributeId(random.Next(1, int.MaxValue)) },
                WS_OIDN    = { Value = _fixture.Create <RoadSegmentId>().ToInt32() },
                VANPOSITIE = { Value = _fixture.Create <RoadSegmentPosition>().ToDouble() },
                TOTPOSITIE = { Value = _fixture.Create <RoadSegmentPosition>().ToDouble() },
                TYPE       = { Value = (short)_fixture.Create <RoadSegmentSurfaceType>().Translation.Identifier }
            })
                .OmitAutoProperties());

            _sut        = new RoadSegmentSurfaceChangeDbaseRecordsValidator();
            _enumerator = new List <RoadSegmentSurfaceChangeDbaseRecord>().ToDbaseRecordEnumerator();
            _stream     = new MemoryStream();
            _archive    = new ZipArchive(_stream, ZipArchiveMode.Create);
            _entry      = _archive.CreateEntry("attwegverharding_all.dbf");
        }
        public NumberedRoadChangeDbaseRecordsValidatorTests()
        {
            _fixture = new Fixture();
            _fixture.CustomizeAttributeId();
            _fixture.CustomizeRoadSegmentId();
            _fixture.CustomizeNumberedRoadNumber();
            _fixture.CustomizeRoadSegmentNumberedRoadOrdinal();
            _fixture.CustomizeRoadSegmentNumberedRoadDirection();
            _fixture.Customize <NumberedRoadChangeDbaseRecord>(
                composer => composer
                .FromFactory(random => new NumberedRoadChangeDbaseRecord
            {
                RECORDTYPE = { Value = (short)random.Next(1, 5) },
                TRANSACTID = { Value = (short)random.Next(1, 9999) },
                GW_OIDN    = { Value = new AttributeId(random.Next(1, int.MaxValue)) },
                WS_OIDN    = { Value = _fixture.Create <RoadSegmentId>().ToInt32() },
                IDENT8     = { Value = _fixture.Create <NumberedRoadNumber>().ToString() },
                RICHTING   = { Value = (short)_fixture.Create <RoadSegmentNumberedRoadDirection>().Translation.Identifier },
                VOLGNUMMER = { Value = _fixture.Create <RoadSegmentNumberedRoadOrdinal>().ToInt32() }
            })
                .OmitAutoProperties());

            _sut        = new NumberedRoadChangeDbaseRecordsValidator();
            _enumerator = new List <NumberedRoadChangeDbaseRecord>().ToDbaseRecordEnumerator();
            _stream     = new MemoryStream();
            _archive    = new ZipArchive(_stream, ZipArchiveMode.Create);
            _entry      = _archive.CreateEntry("attgenumweg_all.dbf");
        }
Example #6
0
        public GradeSeparatedJunctionChangeDbaseRecordsTranslatorTests()
        {
            _fixture = new Fixture();
            _fixture.CustomizeRecordType();
            _fixture.CustomizeRoadSegmentId();
            _fixture.CustomizeGradeSeparatedJunctionId();
            _fixture.CustomizeGradeSeparatedJunctionType();
            _fixture.Customize <GradeSeparatedJunctionChangeDbaseRecord>(
                composer => composer
                .FromFactory(random => new GradeSeparatedJunctionChangeDbaseRecord
            {
                RECORDTYPE = { Value = (short)_fixture.Create <RecordType>().Translation.Identifier },
                TRANSACTID = { Value = (short)random.Next(1, 9999) },
                OK_OIDN    = { Value = new GradeSeparatedJunctionId(random.Next(1, int.MaxValue)) },
                TYPE       = { Value = (short)_fixture.Create <GradeSeparatedJunctionType>().Translation.Identifier },
                BO_WS_OIDN = { Value = _fixture.Create <RoadSegmentId>().ToInt32() },
                ON_WS_OIDN = { Value = _fixture.Create <RoadSegmentId>().ToInt32() },
            })
                .OmitAutoProperties());

            _sut        = new GradeSeparatedJunctionChangeDbaseRecordsTranslator();
            _enumerator = new List <GradeSeparatedJunctionChangeDbaseRecord>().ToDbaseRecordEnumerator();
            _stream     = new MemoryStream();
            _archive    = new ZipArchive(_stream, ZipArchiveMode.Create);
            _entry      = _archive.CreateEntry("rltogkruising_all.dbf");
        }
Example #7
0
            public ZipArchiveProblems Validate(ZipArchiveEntry entry, IDbaseRecordEnumerator <FakeDbaseRecord> records)
            {
                var collected = new List <FakeDbaseRecord>();

                while (records.MoveNext())
                {
                    collected.Add(records.Current);
                }
                Collected = collected.ToArray();

                return(ZipArchiveProblems.None);
            }
Example #8
0
            public TranslatedChanges Translate(ZipArchiveEntry entry, IDbaseRecordEnumerator <FakeDbaseRecord> records, TranslatedChanges changes)
            {
                var collected = new List <FakeDbaseRecord>();

                while (records.MoveNext())
                {
                    collected.Add(records.Current);
                }
                Collected = collected.ToArray();

                return(changes);
            }
        public TranslatedChanges Translate(ZipArchiveEntry entry, IDbaseRecordEnumerator <RoadSegmentChangeDbaseRecord> records, TranslatedChanges changes)
        {
            if (entry == null)
            {
                throw new ArgumentNullException(nameof(entry));
            }
            if (records == null)
            {
                throw new ArgumentNullException(nameof(records));
            }
            if (changes == null)
            {
                throw new ArgumentNullException(nameof(changes));
            }

            while (records.MoveNext())
            {
                var record = records.Current;
                if (record != null)
                {
                    switch (record.RECORDTYPE.Value)
                    {
                    case RecordType.AddedIdentifier:
                        changes = changes.Append(
                            new AddRoadSegment(
                                records.CurrentRecordNumber,
                                new RoadSegmentId(record.WS_OIDN.Value),
                                new RoadNodeId(record.B_WK_OIDN.Value),
                                new RoadNodeId(record.E_WK_OIDN.Value),
                                new OrganizationId(record.BEHEERDER.Value),
                                RoadSegmentGeometryDrawMethod.ByIdentifier[record.METHODE.Value],
                                RoadSegmentMorphology.ByIdentifier[record.MORFOLOGIE.Value],
                                RoadSegmentStatus.ByIdentifier[record.STATUS.Value],
                                RoadSegmentCategory.ByIdentifier[record.WEGCAT.Value],
                                RoadSegmentAccessRestriction.ByIdentifier[record.TGBEP.Value],
                                record.LSTRNMID.Value.HasValue ? new CrabStreetnameId(record.LSTRNMID.Value.Value) : new CrabStreetnameId?(),
                                record.RSTRNMID.Value.HasValue ? new CrabStreetnameId(record.RSTRNMID.Value.Value) : new CrabStreetnameId?()
                                )
                            );
                        break;
                    }
                }
            }

            return(changes);
        }
Example #10
0
        public AnonymousDbaseRecordEnumeratorWithEmptyStreamTests()
        {
            var fixture = new Fixture();

            fixture.CustomizeWordLength();
            fixture.CustomizeDbaseFieldName();
            fixture.CustomizeDbaseFieldLength();
            fixture.CustomizeDbaseDecimalCount();
            fixture.CustomizeDbaseField();
            fixture.CustomizeDbaseCodePage();
            fixture.CustomizeDbaseRecordCount();
            fixture.CustomizeDbaseSchema();

            var header = fixture.Create <DbaseFileHeader>();

            _reader = new DisposableBinaryReader(new MemoryStream(), Encoding.UTF8, false);
            _sut    = header.CreateAnonymousDbaseRecordEnumerator(_reader);
        }
Example #11
0
        public TranslatedChanges Translate(ZipArchiveEntry entry, IDbaseRecordEnumerator <RoadSegmentLaneChangeDbaseRecord> records, TranslatedChanges changes)
        {
            if (entry == null)
            {
                throw new ArgumentNullException(nameof(entry));
            }
            if (records == null)
            {
                throw new ArgumentNullException(nameof(records));
            }
            if (changes == null)
            {
                throw new ArgumentNullException(nameof(changes));
            }

            while (records.MoveNext())
            {
                var record = records.Current;
                if (record != null)
                {
                    switch (record.RECORDTYPE.Value)
                    {
                    case RecordType.EqualIdentifier:
                    case RecordType.AddedIdentifier:
                    case RecordType.ModifiedIdentifier:
                        var segmentId = new RoadSegmentId(record.WS_OIDN.Value);
                        if (changes.TryFindAddRoadSegment(segmentId, out var change))
                        {
                            var lane = new RoadSegmentLaneAttribute(
                                new AttributeId(record.RS_OIDN.Value),
                                new RoadSegmentLaneCount(record.AANTAL.Value),
                                RoadSegmentLaneDirection.ByIdentifier[record.RICHTING.Value],
                                RoadSegmentPosition.FromDouble(record.VANPOSITIE.Value),
                                RoadSegmentPosition.FromDouble(record.TOTPOSITIE.Value)
                                );
                            changes = changes.Replace(change, change.WithLane(lane));
                        }
                        break;
                    }
                }
            }

            return(changes);
        }
Example #12
0
        public TranslatedChanges Translate(ZipArchiveEntry entry, IDbaseRecordEnumerator <RoadSegmentWidthChangeDbaseRecord> records, TranslatedChanges changes)
        {
            if (entry == null)
            {
                throw new ArgumentNullException(nameof(entry));
            }
            if (records == null)
            {
                throw new ArgumentNullException(nameof(records));
            }
            if (changes == null)
            {
                throw new ArgumentNullException(nameof(changes));
            }

            while (records.MoveNext())
            {
                var record = records.Current;
                if (record != null)
                {
                    switch (record.RECORDTYPE.Value)
                    {
                    case RecordType.EqualIdentifier:
                    case RecordType.AddedIdentifier:
                    case RecordType.ModifiedIdentifier:
                        var segmentId = new RoadSegmentId(record.WS_OIDN.Value);
                        if (changes.TryFindAddRoadSegment(segmentId, out var before))
                        {
                            var width = new RoadSegmentWidthAttribute(
                                new AttributeId(record.WB_OIDN.Value),
                                new RoadSegmentWidth(record.BREEDTE.Value),
                                RoadSegmentPosition.FromDouble(record.VANPOSITIE.Value),
                                RoadSegmentPosition.FromDouble(record.TOTPOSITIE.Value)
                                );
                            changes = changes.Replace(before, before.WithWidth(width));
                        }
                        break;
                    }
                }
            }

            return(changes);
        }
Example #13
0
        public AnonymousDbaseRecordEnumeratorOverStreamWithExpectedBytesTests()
        {
            var fixture = new Fixture();

            fixture.CustomizeWordLength();
            fixture.CustomizeDbaseFieldName();
            fixture.CustomizeDbaseFieldLength();
            fixture.CustomizeDbaseDecimalCount();
            fixture.CustomizeDbaseField();
            fixture.CustomizeDbaseCodePage();
            fixture.CustomizeDbaseRecordCount();
            fixture.CustomizeDbaseSchema();

            _record1 = new FakeDbaseRecord {
                Id = { Value = fixture.Create <int>() }
            };
            _record2 = new FakeDbaseRecord {
                Id = { Value = fixture.Create <int>() }
            };
            var header = new DbaseFileHeader(
                fixture.Create <DateTime>(),
                DbaseCodePage.Western_European_ANSI,
                new DbaseRecordCount(2),
                new FakeDbaseSchema());
            var  stream = new MemoryStream();
            long position;

            using (var writer = new BinaryWriter(stream, Encoding.UTF8, true))
            {
                header.Write(writer);
                writer.Flush();
                position = stream.Position;
                _record1.Write(writer);
                _record2.Write(writer);
                writer.Write(DbaseRecord.EndOfFile);
                writer.Flush();
            }

            stream.Position = position;

            _reader = new DisposableBinaryReader(stream, Encoding.UTF8, false);
            _sut    = header.CreateAnonymousDbaseRecordEnumerator(_reader);
        }
Example #14
0
        public DbaseRecordEnumeratorWithLongerStreamTests()
        {
            var fixture = new Fixture();

            fixture.CustomizeWordLength();
            fixture.CustomizeDbaseFieldName();
            fixture.CustomizeDbaseFieldLength();
            fixture.CustomizeDbaseDecimalCount();
            fixture.CustomizeDbaseField();
            fixture.CustomizeDbaseCodePage();
            fixture.CustomizeDbaseRecordCount();
            fixture.CustomizeDbaseSchema();

            _record = new FakeDbaseRecord {
                Id = { Value = fixture.Create <int>() }
            };
            var header = new DbaseFileHeader(
                fixture.Create <DateTime>(),
                DbaseCodePage.Western_European_ANSI,
                new DbaseRecordCount(1),
                new FakeDbaseSchema());
            var  stream = new MemoryStream();
            long position;

            using (var writer = new BinaryWriter(stream, Encoding.UTF8, true))
            {
                header.Write(writer);
                writer.Flush();
                position = stream.Position;
                _record.Write(writer);
                writer.Write(DbaseRecord.EndOfFile);
                writer.Write(fixture.CreateMany <byte>(10).ToArray());
                writer.Flush();
            }

            stream.Position = position;

            _reader = new DisposableBinaryReader(stream, Encoding.UTF8, false);
            _sut    = header.CreateDbaseRecordEnumerator <FakeDbaseRecord>(_reader);
        }
        public TranslatedChanges Translate(ZipArchiveEntry entry, IDbaseRecordEnumerator <RoadNodeChangeDbaseRecord> records, TranslatedChanges changes)
        {
            if (entry == null)
            {
                throw new ArgumentNullException(nameof(entry));
            }
            if (records == null)
            {
                throw new ArgumentNullException(nameof(records));
            }
            if (changes == null)
            {
                throw new ArgumentNullException(nameof(changes));
            }

            var recordNumber = RecordNumber.Initial;

            while (records.MoveNext())
            {
                var record = records.Current;
                if (record != null)
                {
                    switch (record.RECORDTYPE.Value)
                    {
                    case RecordType.AddedIdentifier:
                        changes = changes.Append(
                            new AddRoadNode(
                                recordNumber,
                                new RoadNodeId(record.WEGKNOOPID.Value),
                                RoadNodeType.ByIdentifier[record.TYPE.Value]
                                )
                            );
                        break;
                    }
                }
                recordNumber = recordNumber.Next();
            }

            return(changes);
        }
Example #16
0
        public TranslatedChanges Translate(ZipArchiveEntry entry, IDbaseRecordEnumerator <NumberedRoadChangeDbaseRecord> records, TranslatedChanges changes)
        {
            if (entry == null)
            {
                throw new ArgumentNullException(nameof(entry));
            }
            if (records == null)
            {
                throw new ArgumentNullException(nameof(records));
            }
            if (changes == null)
            {
                throw new ArgumentNullException(nameof(changes));
            }

            while (records.MoveNext())
            {
                var record = records.Current;
                if (record != null)
                {
                    switch (record.RECORDTYPE.Value)
                    {
                    case RecordType.AddedIdentifier:
                        changes = changes.Append(
                            new AddRoadSegmentToNumberedRoad(
                                new AttributeId(record.GW_OIDN.Value),
                                new RoadSegmentId(record.WS_OIDN.Value),
                                NumberedRoadNumber.Parse(record.IDENT8.Value),
                                RoadSegmentNumberedRoadDirection.ByIdentifier[record.RICHTING.Value],
                                new RoadSegmentNumberedRoadOrdinal(record.VOLGNUMMER.Value)
                                )
                            );
                        break;
                    }
                }
            }

            return(changes);
        }
Example #17
0
        public RoadNodeChangeDbaseRecordsValidatorTests()
        {
            _fixture = new Fixture();
            _fixture.CustomizeRoadNodeId();
            _fixture.CustomizeRoadNodeType();
            _fixture.Customize <RoadNodeChangeDbaseRecord>(
                composer => composer
                .FromFactory(random => new RoadNodeChangeDbaseRecord
            {
                RECORDTYPE = { Value = (short)random.Next(1, 5) },
                TRANSACTID = { Value = (short)random.Next(1, 9999) },
                WEGKNOOPID = { Value = new RoadNodeId(random.Next(1, int.MaxValue)) },
                TYPE       = { Value = (short)_fixture.Create <RoadNodeType>().Translation.Identifier }
            })
                .OmitAutoProperties());

            _sut        = new RoadNodeChangeDbaseRecordsValidator();
            _enumerator = new List <RoadNodeChangeDbaseRecord>().ToDbaseRecordEnumerator();
            _stream     = new MemoryStream();
            _archive    = new ZipArchive(_stream, ZipArchiveMode.Create);
            _entry      = _archive.CreateEntry("wegknoop_all.dbf");
        }
Example #18
0
        public RoadSegmentChangeDbaseRecordsTranslatorTests()
        {
            _fixture = new Fixture();
            _fixture.CustomizeRecordType();
            _fixture.CustomizeRoadNodeId();
            _fixture.CustomizeRoadSegmentId();
            _fixture.CustomizeRoadSegmentGeometryDrawMethod();
            _fixture.CustomizeOrganizationId();
            _fixture.CustomizeRoadSegmentMorphology();
            _fixture.CustomizeRoadSegmentStatus();
            _fixture.CustomizeRoadSegmentCategory();
            _fixture.CustomizeRoadSegmentAccessRestriction();
            _fixture.Customize <RoadSegmentChangeDbaseRecord>(
                composer => composer
                .FromFactory(random => new RoadSegmentChangeDbaseRecord
            {
                RECORDTYPE = { Value = (short)_fixture.Create <RecordType>().Translation.Identifier },
                TRANSACTID = { Value = (short)random.Next(1, 9999) },
                WS_OIDN    = { Value = new RoadSegmentId(random.Next(1, int.MaxValue)) },
                METHODE    = { Value = (short)_fixture.Create <RoadSegmentGeometryDrawMethod>().Translation.Identifier },
                BEHEERDER  = { Value = _fixture.Create <OrganizationId>() },
                MORFOLOGIE = { Value = (short)_fixture.Create <RoadSegmentMorphology>().Translation.Identifier },
                STATUS     = { Value = _fixture.Create <RoadSegmentStatus>().Translation.Identifier },
                WEGCAT     = { Value = _fixture.Create <RoadSegmentCategory>().Translation.Identifier },
                B_WK_OIDN  = { Value = new RoadNodeId(random.Next(1, int.MaxValue)) },
                E_WK_OIDN  = { Value = new RoadNodeId(random.Next(1, int.MaxValue)) },
                LSTRNMID   = { Value = new CrabStreetnameId(random.Next(1, int.MaxValue)) },
                RSTRNMID   = { Value = new CrabStreetnameId(random.Next(1, int.MaxValue)) },
                TGBEP      = { Value = (short)_fixture.Create <RoadSegmentAccessRestriction>().Translation.Identifier },
                EVENTIDN   = { Value = new RoadSegmentId(random.Next(1, int.MaxValue)) }
            })
                .OmitAutoProperties());

            _sut        = new RoadSegmentChangeDbaseRecordsTranslator();
            _enumerator = new List <RoadSegmentChangeDbaseRecord>().ToDbaseRecordEnumerator();
            _stream     = new MemoryStream();
            _archive    = new ZipArchive(_stream, ZipArchiveMode.Create);
            _entry      = _archive.CreateEntry("wegsegment_all.dbf");
        }
        public TranslatedChanges Translate(ZipArchiveEntry entry, IDbaseRecordEnumerator <GradeSeparatedJunctionChangeDbaseRecord> records, TranslatedChanges changes)
        {
            if (entry == null)
            {
                throw new ArgumentNullException(nameof(entry));
            }
            if (records == null)
            {
                throw new ArgumentNullException(nameof(records));
            }
            if (changes == null)
            {
                throw new ArgumentNullException(nameof(changes));
            }

            while (records.MoveNext())
            {
                var record = records.Current;
                if (record != null)
                {
                    switch (record.RECORDTYPE.Value)
                    {
                    case RecordType.AddedIdentifier:
                        changes = changes.Append(
                            new AddGradeSeparatedJunction(
                                new GradeSeparatedJunctionId(record.OK_OIDN.Value),
                                GradeSeparatedJunctionType.ByIdentifier[record.TYPE.Value],
                                new RoadSegmentId(record.BO_WS_OIDN.Value),
                                new RoadSegmentId(record.ON_WS_OIDN.Value)
                                )
                            );
                        break;
                    }
                }
            }

            return(changes);
        }
        public RoadSegmentLaneChangeDbaseRecordsTranslatorTests()
        {
            _fixture = new Fixture();
            _fixture.CustomizeRecordType();
            _fixture.CustomizeRoadNodeId();
            _fixture.CustomizeRoadSegmentId();
            _fixture.CustomizeRoadSegmentGeometryDrawMethod();
            _fixture.CustomizeOrganizationId();
            _fixture.CustomizeRoadSegmentMorphology();
            _fixture.CustomizeRoadSegmentStatus();
            _fixture.CustomizeRoadSegmentCategory();
            _fixture.CustomizeRoadSegmentAccessRestriction();
            _fixture.CustomizeAttributeId();
            _fixture.CustomizeRoadSegmentLaneCount();
            _fixture.CustomizeRoadSegmentLaneDirection();
            _fixture.CustomizeRoadSegmentPosition();
            _fixture.Customize <RoadSegmentLaneChangeDbaseRecord>(
                composer => composer
                .FromFactory(random => new RoadSegmentLaneChangeDbaseRecord
            {
                RECORDTYPE = { Value = (short)_fixture.Create <RecordType>().Translation.Identifier },
                TRANSACTID = { Value = (short)random.Next(1, 9999) },
                RS_OIDN    = { Value = new AttributeId(random.Next(1, int.MaxValue)) },
                WS_OIDN    = { Value = _fixture.Create <RoadSegmentId>().ToInt32() },
                VANPOSITIE = { Value = _fixture.Create <RoadSegmentPosition>().ToDouble() },
                TOTPOSITIE = { Value = _fixture.Create <RoadSegmentPosition>().ToDouble() },
                AANTAL     = { Value = (short)_fixture.Create <RoadSegmentLaneCount>().ToInt32() },
                RICHTING   = { Value = (short)_fixture.Create <RoadSegmentLaneDirection>().Translation.Identifier }
            })
                .OmitAutoProperties());

            _sut        = new RoadSegmentLaneChangeDbaseRecordsTranslator();
            _enumerator = new List <RoadSegmentLaneChangeDbaseRecord>().ToDbaseRecordEnumerator();
            _stream     = new MemoryStream();
            _archive    = new ZipArchive(_stream, ZipArchiveMode.Create);
            _entry      = _archive.CreateEntry("attrijstroken_all.dbf");
        }
        public TranslatedChanges Translate(ZipArchiveEntry entry, IDbaseRecordEnumerator <EuropeanRoadChangeDbaseRecord> records, TranslatedChanges changes)
        {
            if (entry == null)
            {
                throw new ArgumentNullException(nameof(entry));
            }
            if (records == null)
            {
                throw new ArgumentNullException(nameof(records));
            }
            if (changes == null)
            {
                throw new ArgumentNullException(nameof(changes));
            }

            while (records.MoveNext())
            {
                var record = records.Current;
                if (record != null)
                {
                    switch (record.RECORDTYPE.Value)
                    {
                    case RecordType.AddedIdentifier:
                        changes = changes.Append(
                            new AddRoadSegmentToEuropeanRoad(
                                new AttributeId(record.EU_OIDN.Value),
                                new RoadSegmentId(record.WS_OIDN.Value),
                                EuropeanRoadNumber.Parse(record.EUNUMMER.Value)
                                )
                            );
                        break;
                    }
                }
            }

            return(changes);
        }
        public NationalRoadChangeDbaseRecordsValidatorTests()
        {
            _fixture = new Fixture();
            _fixture.CustomizeAttributeId();
            _fixture.CustomizeRoadSegmentId();
            _fixture.CustomizeNationalRoadNumber();
            _fixture.Customize <NationalRoadChangeDbaseRecord>(
                composer => composer
                .FromFactory(random => new NationalRoadChangeDbaseRecord
            {
                RECORDTYPE = { Value = (short)random.Next(1, 5) },
                TRANSACTID = { Value = (short)random.Next(1, 9999) },
                NW_OIDN    = { Value = new AttributeId(random.Next(1, int.MaxValue)) },
                WS_OIDN    = { Value = _fixture.Create <RoadSegmentId>().ToInt32() },
                IDENT2     = { Value = _fixture.Create <NationalRoadNumber>().ToString() }
            })
                .OmitAutoProperties());

            _sut        = new NationalRoadChangeDbaseRecordsValidator();
            _enumerator = new List <NationalRoadChangeDbaseRecord>().ToDbaseRecordEnumerator();
            _stream     = new MemoryStream();
            _archive    = new ZipArchive(_stream, ZipArchiveMode.Create);
            _entry      = _archive.CreateEntry("attnationweg_all.dbf");
        }
        public TranslatedChanges Translate(ZipArchiveEntry entry, IDbaseRecordEnumerator <TransactionZoneDbaseRecord> records, TranslatedChanges changes)
        {
            if (entry == null)
            {
                throw new ArgumentNullException(nameof(entry));
            }
            if (records == null)
            {
                throw new ArgumentNullException(nameof(records));
            }
            if (changes == null)
            {
                throw new ArgumentNullException(nameof(changes));
            }

            if (records.MoveNext() && records.Current != null)
            {
                return(changes
                       .WithReason(new Reason(records.Current.BESCHRIJV.Value))
                       .WithOperatorName(new OperatorName(records.Current.OPERATOR.Value))
                       .WithOrganization(new OrganizationId(records.Current.ORG.Value)));
            }
            return(changes);
        }
Example #24
0
        public ZipArchiveProblems Validate(ZipArchiveEntry entry, IDbaseRecordEnumerator <RoadSegmentChangeDbaseRecord> records)
        {
            if (entry == null)
            {
                throw new ArgumentNullException(nameof(entry));
            }
            if (records == null)
            {
                throw new ArgumentNullException(nameof(records));
            }

            var problems = ZipArchiveProblems.None;

            try
            {
                var identifiers = new Dictionary <RoadSegmentId, RecordNumber>();
                var moved       = records.MoveNext();
                if (moved)
                {
                    while (moved)
                    {
                        var recordContext = entry.AtDbaseRecord(records.CurrentRecordNumber);
                        var record        = records.Current;
                        if (record != null)
                        {
                            if (!record.RECORDTYPE.HasValue)
                            {
                                problems += recordContext.RequiredFieldIsNull(record.RECORDTYPE.Field);
                            }
                            else
                            {
                                if (!RecordType.ByIdentifier.ContainsKey(record.RECORDTYPE.Value))
                                {
                                    problems += recordContext.RecordTypeMismatch(record.RECORDTYPE.Value);
                                }
                            }
                            if (record.WS_OIDN.HasValue)
                            {
                                if (record.WS_OIDN.Value == 0)
                                {
                                    problems += recordContext.IdentifierZero();
                                }
                                else
                                {
                                    var identifier = new RoadSegmentId(record.WS_OIDN.Value);
                                    if (identifiers.TryGetValue(identifier, out var takenByRecordNumber))
                                    {
                                        problems += recordContext.IdentifierNotUnique(
                                            identifier,
                                            takenByRecordNumber
                                            );
                                    }
                                    else
                                    {
                                        identifiers.Add(identifier, records.CurrentRecordNumber);
                                    }
                                }
                            }
                            else
                            {
                                problems += recordContext.RequiredFieldIsNull(record.WS_OIDN.Field);
                            }

                            if (!record.TGBEP.HasValue)
                            {
                                problems += recordContext.RequiredFieldIsNull(record.TGBEP.Field);
                            }
                            else if (!RoadSegmentAccessRestriction.ByIdentifier.ContainsKey(record.TGBEP.Value))
                            {
                                problems += recordContext.RoadSegmentAccessRestrictionMismatch(record.TGBEP.Value);
                            }

                            if (!record.STATUS.HasValue)
                            {
                                problems += recordContext.RequiredFieldIsNull(record.STATUS.Field);
                            }
                            else if (!RoadSegmentStatus.ByIdentifier.ContainsKey(record.STATUS.Value))
                            {
                                problems += recordContext.RoadSegmentStatusMismatch(record.STATUS.Value);
                            }

                            if (!record.WEGCAT.HasValue)
                            {
                                problems += recordContext.RequiredFieldIsNull(record.WEGCAT.Field);
                            }
                            else if (!RoadSegmentCategory.ByIdentifier.ContainsKey(record.WEGCAT.Value))
                            {
                                problems += recordContext.RoadSegmentCategoryMismatch(record.WEGCAT.Value);
                            }

                            if (!record.METHODE.HasValue)
                            {
                                problems += recordContext.RequiredFieldIsNull(record.METHODE.Field);
                            }
                            else if (!RoadSegmentGeometryDrawMethod.ByIdentifier.ContainsKey(record.METHODE.Value))
                            {
                                problems += recordContext.RoadSegmentGeometryDrawMethodMismatch(record.METHODE.Value);
                            }

                            if (!record.MORFOLOGIE.HasValue)
                            {
                                problems += recordContext.RequiredFieldIsNull(record.MORFOLOGIE.Field);
                            }
                            else if (!RoadSegmentMorphology.ByIdentifier.ContainsKey(record.MORFOLOGIE.Value))
                            {
                                problems += recordContext.RoadSegmentMorphologyMismatch(record.MORFOLOGIE.Value);
                            }

                            if (!record.B_WK_OIDN.HasValue)
                            {
                                problems += recordContext.RequiredFieldIsNull(record.B_WK_OIDN.Field);
                            }
                            else if (!RoadNodeId.Accepts(record.B_WK_OIDN.Value))
                            {
                                problems += recordContext.BeginRoadNodeIdOutOfRange(record.B_WK_OIDN.Value);
                            }

                            if (!record.E_WK_OIDN.HasValue)
                            {
                                problems += recordContext.RequiredFieldIsNull(record.E_WK_OIDN.Field);
                            }
                            else if (!RoadNodeId.Accepts(record.E_WK_OIDN.Value))
                            {
                                problems += recordContext.EndRoadNodeIdOutOfRange(record.E_WK_OIDN.Value);
                            }

                            if (!record.BEHEERDER.HasValue)
                            {
                                problems += recordContext.RequiredFieldIsNull(record.BEHEERDER.Field);
                            }
                        }
                        moved = records.MoveNext();
                    }
                }
                else
                {
                    problems += entry.HasNoDbaseRecords(false);
                }
            }
            catch (Exception exception)
            {
                problems += entry.AtDbaseRecord(records.CurrentRecordNumber).HasDbaseRecordFormatError(exception);
            }

            return(problems);
        }
Example #25
0
 public TranslatedChanges Translate(ZipArchiveEntry entry, IDbaseRecordEnumerator <FakeDbaseRecord> records, TranslatedChanges changes)
 {
     return(_translation(changes));
 }
        public ZipArchiveProblems Validate(ZipArchiveEntry entry, IDbaseRecordEnumerator <NationalRoadChangeDbaseRecord> records)
        {
            if (entry == null)
            {
                throw new ArgumentNullException(nameof(entry));
            }
            if (records == null)
            {
                throw new ArgumentNullException(nameof(records));
            }

            var problems = ZipArchiveProblems.None;

            try
            {
                var identifiers = new Dictionary <AttributeId, RecordNumber>();
                var moved       = records.MoveNext();
                if (moved)
                {
                    while (moved)
                    {
                        var recordContext = entry.AtDbaseRecord(records.CurrentRecordNumber);
                        var record        = records.Current;
                        if (record != null)
                        {
                            if (!record.RECORDTYPE.HasValue)
                            {
                                problems += recordContext.RequiredFieldIsNull(record.RECORDTYPE.Field);
                            }
                            else
                            {
                                if (!RecordType.ByIdentifier.ContainsKey(record.RECORDTYPE.Value))
                                {
                                    problems += recordContext.RecordTypeMismatch(record.RECORDTYPE.Value);
                                }
                            }
                            if (record.NW_OIDN.HasValue)
                            {
                                if (record.NW_OIDN.Value == 0)
                                {
                                    problems += recordContext.IdentifierZero();
                                }
                                else
                                {
                                    var identifier = new AttributeId(record.NW_OIDN.Value);
                                    if (identifiers.TryGetValue(identifier, out var takenByRecordNumber))
                                    {
                                        problems += recordContext.IdentifierNotUnique(
                                            identifier,
                                            takenByRecordNumber
                                            );
                                    }
                                    else
                                    {
                                        identifiers.Add(identifier, records.CurrentRecordNumber);
                                    }
                                }
                            }
                            else
                            {
                                problems += recordContext.RequiredFieldIsNull(record.NW_OIDN.Field);
                            }

                            if (record.IDENT2.Value == null)
                            {
                                problems += recordContext.RequiredFieldIsNull(record.IDENT2.Field);
                            }
                            else if (!NationalRoadNumber.CanParse(record.IDENT2.Value))
                            {
                                problems += recordContext.NotNationalRoadNumber(record.IDENT2.Value);
                            }

                            if (!record.WS_OIDN.HasValue)
                            {
                                problems += recordContext.RequiredFieldIsNull(record.WS_OIDN.Field);
                            }
                            else if (!RoadSegmentId.Accepts(record.WS_OIDN.Value))
                            {
                                problems += recordContext.RoadSegmentIdOutOfRange(record.WS_OIDN.Value);
                            }

                            moved = records.MoveNext();
                        }
                    }
                }
                else
                {
                    problems += entry.HasNoDbaseRecords(true);
                }
            }
            catch (Exception exception)
            {
                problems += entry.AtDbaseRecord(records.CurrentRecordNumber).HasDbaseRecordFormatError(exception);
            }

            return(problems);
        }
        public ZipArchiveProblems Validate(ZipArchiveEntry entry, IDbaseRecordEnumerator <TransactionZoneDbaseRecord> records)
        {
            if (entry == null)
            {
                throw new ArgumentNullException(nameof(entry));
            }
            if (records == null)
            {
                throw new ArgumentNullException(nameof(records));
            }

            var problems = ZipArchiveProblems.None;

            try
            {
                var count = 0;
                var moved = records.MoveNext();
                if (moved)
                {
                    while (moved)
                    {
                        var recordContext = entry.AtDbaseRecord(records.CurrentRecordNumber);
                        var record        = records.Current;
                        if (record != null)
                        {
                            if (!record.BESCHRIJV.HasValue)
                            {
                                problems += recordContext.RequiredFieldIsNull(record.BESCHRIJV.Field);
                            }
                            if (!record.OPERATOR.HasValue)
                            {
                                problems += recordContext.RequiredFieldIsNull(record.OPERATOR.Field);
                            }
                            if (!record.ORG.HasValue)
                            {
                                problems += recordContext.RequiredFieldIsNull(record.ORG.Field);
                            }
                            else if (!OrganizationId.AcceptsValue(record.ORG.Value))
                            {
                                problems += recordContext.OrganizationIdOutOfRange(record.ORG.Value);
                            }

                            count++;
                            moved = records.MoveNext();
                        }
                    }

                    if (count != 1)
                    {
                        problems += entry.HasTooManyDbaseRecords(1, count);
                    }
                }
                else
                {
                    problems += entry.HasNoDbaseRecords(true);
                }
            }
            catch (Exception exception)
            {
                problems += entry.AtDbaseRecord(records.CurrentRecordNumber).HasDbaseRecordFormatError(exception);
            }

            return(problems);
        }
Example #28
0
 public ZipArchiveProblems Validate(ZipArchiveEntry entry, IDbaseRecordEnumerator <FakeDbaseRecord> records)
 {
     return(ZipArchiveProblems.None.AddRange(_problems));
 }
        public ZipArchiveProblems Validate(ZipArchiveEntry entry, IDbaseRecordEnumerator <RoadSegmentLaneChangeDbaseRecord> records)
        {
            if (entry == null)
            {
                throw new ArgumentNullException(nameof(entry));
            }
            if (records == null)
            {
                throw new ArgumentNullException(nameof(records));
            }

            var problems = ZipArchiveProblems.None;

            try
            {
                var identifiers = new Dictionary <AttributeId, RecordNumber>();
                var moved       = records.MoveNext();
                if (moved)
                {
                    while (moved)
                    {
                        var recordContext = entry.AtDbaseRecord(records.CurrentRecordNumber);
                        var record        = records.Current;
                        if (record != null)
                        {
                            if (!record.RECORDTYPE.HasValue)
                            {
                                problems += recordContext.RequiredFieldIsNull(record.RECORDTYPE.Field);
                            }
                            else
                            {
                                if (!RecordType.ByIdentifier.ContainsKey(record.RECORDTYPE.Value))
                                {
                                    problems += recordContext.RecordTypeMismatch(record.RECORDTYPE.Value);
                                }
                            }
                            if (record.RS_OIDN.HasValue)
                            {
                                if (record.RS_OIDN.Value == 0)
                                {
                                    problems += recordContext.IdentifierZero();
                                }
                                else
                                {
                                    var identifier = new AttributeId(record.RS_OIDN.Value);
                                    if (identifiers.TryGetValue(identifier, out var takenByRecordNumber))
                                    {
                                        problems += recordContext.IdentifierNotUnique(
                                            identifier,
                                            takenByRecordNumber
                                            );
                                    }
                                    else
                                    {
                                        identifiers.Add(identifier, records.CurrentRecordNumber);
                                    }
                                }
                            }
                            else
                            {
                                problems += recordContext.RequiredFieldIsNull(record.RS_OIDN.Field);
                            }

                            if (!record.AANTAL.HasValue)
                            {
                                problems += recordContext.RequiredFieldIsNull(record.AANTAL.Field);
                            }
                            else if (!RoadSegmentLaneCount.Accepts(record.AANTAL.Value))
                            {
                                problems += recordContext.LaneCountOutOfRange(record.AANTAL.Value);
                            }

                            if (!record.RICHTING.HasValue)
                            {
                                problems += recordContext.RequiredFieldIsNull(record.RICHTING.Field);
                            }
                            else if (!RoadSegmentLaneDirection.ByIdentifier.ContainsKey(record.RICHTING.Value))
                            {
                                problems += recordContext.LaneDirectionMismatch(record.RICHTING.Value);
                            }

                            if (!record.VANPOSITIE.HasValue)
                            {
                                problems += recordContext.RequiredFieldIsNull(record.VANPOSITIE.Field);
                            }
                            else if (!RoadSegmentPosition.Accepts(record.VANPOSITIE.Value))
                            {
                                problems += recordContext.FromPositionOutOfRange(record.VANPOSITIE.Value);
                            }

                            if (!record.TOTPOSITIE.HasValue)
                            {
                                problems += recordContext.RequiredFieldIsNull(record.TOTPOSITIE.Field);
                            }
                            else if (!RoadSegmentPosition.Accepts(record.TOTPOSITIE.Value))
                            {
                                problems += recordContext.ToPositionOutOfRange(record.TOTPOSITIE.Value);
                            }

                            if (!record.WS_OIDN.HasValue)
                            {
                                problems += recordContext.RequiredFieldIsNull(record.WS_OIDN.Field);
                            }
                            else if (!RoadSegmentId.Accepts(record.WS_OIDN.Value))
                            {
                                problems += recordContext.RoadSegmentIdOutOfRange(record.WS_OIDN.Value);
                            }
                        }
                        moved = records.MoveNext();
                    }
                }
                else
                {
                    problems += entry.HasNoDbaseRecords(false);
                }
            }
            catch (Exception exception)
            {
                problems += entry.AtDbaseRecord(records.CurrentRecordNumber).HasDbaseRecordFormatError(exception);
            }

            return(problems);
        }