Beispiel #1
0
 public void Constructor_inMemory_create_test()
 {
     using (var datastore = new CruiseDatastore_V3())
     {
         ValidateDAL(datastore);
     }
 }
Beispiel #2
0
        public void TestCopyTo()
        {
            var fileToCopyPath = Path.Combine(TestTempPath, "TestCopy.crz3");
            var copiedFilePath = Path.Combine(TestTempPath, "TestCopy2.crz3");

            try
            {
                using (var dal = new CruiseDatastore_V3(fileToCopyPath, true))
                {
                    dal.CopyTo(copiedFilePath);

                    File.Exists(copiedFilePath).Should().BeTrue();
                }
            }
            finally
            {
                if (File.Exists(fileToCopyPath))
                {
                    File.Delete(fileToCopyPath);
                }
                if (File.Exists(copiedFilePath))
                {
                    File.Delete(copiedFilePath);
                }
            }
        }
Beispiel #3
0
        private (string, string, string) SetUpTestFile(string fileName, [CallerMemberName] string caller = null)
        {
            var filePath = Path.Combine(TestFilesDirectory, fileName);

            var baseFileName = Path.GetFileName(fileName);
            var orgFile      = Path.Combine(TestTempPath, fileName);
            var crz3File     = (string)null;

            // create copy of base file
            if (File.Exists(orgFile) == false)
            {
                File.Copy(filePath, orgFile);
            }
            crz3File = new Migrator().MigrateFromV2ToV3(orgFile, true);


            var v2againPath = Path.Combine(TestTempPath, caller + "_again_" + fileName);

            using (var v2again = new DAL(v2againPath, true))
                using (var v3db = new CruiseDatastore_V3(crz3File))
                {
                    var cruiseID     = v3db.ExecuteScalar <string>("SELECT CruiseID FROM Cruise;");
                    var downMigrator = new DownMigrator();
                    downMigrator.MigrateFromV3ToV2(cruiseID, v3db, v2again);
                }

            return(orgFile, crz3File, v2againPath);
        }
Beispiel #4
0
        public IEnumerable <LogConflict> GetLogConflicts(CruiseDatastore_V3 source, CruiseDatastore_V3 destination, string cruiseID)
        {
            var sourceAlias = "src";

            destination.AttachDB(source, sourceAlias);
            try
            {
                return(destination.Query <LogConflict>(
                           $@"SELECT 
    destT.CuttingUnitCode,
    destT.PlotNumber,
    destT.TreeNumber,
    destL.LogNumber,
    destL.LogID AS DestLogID,
    srcL.LogID AS SrcLogID
FROM main.Log AS destL 
    JOIN main.Tree AS destT USING (TreeID)
    JOIN {sourceAlias}.Tree AS srcT ON 
        destT.CruiseID = srcT.CruiseID
        AND destT.CuttingUnitCode = srcT.CuttingUnitCode 
        AND ifnull(destT.PlotNumber, 0) = ifnull(srcT.PlotNumber, 0)
        AND destT.TreeNumber = srcT.TreeNumber
    JOIN {sourceAlias}.Log AS srcL ON srcT.TreeID = srcL.TreeID
        AND destL.LogNumber = srcL.LogNumber
WHERE destT.CruiseID = @p1 AND destL.LogID != srcL.LogID;", cruiseID).ToArray());
            }
            finally
            {
                destination.DetachDB(sourceAlias);
            }
        }
Beispiel #5
0
        public void Sync_SampleGroup_Add()
        {
            var fromPath = base.GetTempFilePath(".crz3", "SampleGroup_Add_fromFile");
            var toPath   = base.GetTempFilePath(".crz3", "SampleGroup_Add_toFile");

            var syncOptions = new CruiseSyncOptions();

            var cruiseID = Guid.NewGuid().ToString();
            var saleID   = Guid.NewGuid().ToString();

            using var fromDb = CreateDatabaseFile(fromPath, cruiseID, saleID);

            fromDb.CopyTo(toPath, true);
            using var toDb = new CruiseDatastore_V3(toPath);

            var sampleGroupID = Guid.NewGuid().ToString();

            fromDb.Insert(new SampleGroup()
            {
                CruiseID        = cruiseID,
                SampleGroupID   = sampleGroupID,
                SampleGroupCode = "10",
                StratumCode     = Strata[0].StratumCode,
            });
            var newSampleGroup = fromDb.From <SampleGroup>().Where("SampleGroupID = @p1").Query(sampleGroupID).Single();

            var syncer = new CruiseSyncer();

            syncer.Sync(cruiseID, fromDb, toDb, syncOptions);

            var sampleGroupAgain = toDb.From <SampleGroup>().Where("SampleGroupID =  @p1")
                                   .Query(sampleGroupID).FirstOrDefault();

            sampleGroupAgain.Should().BeEquivalentTo(newSampleGroup);
        }
        public void GetPlotStrataProxies(string method)
        {
            var units          = Units;
            var unit           = units[0];
            var newStratumCode = "01";

            using (var database = new CruiseDatastore_V3())
            {
                var saleID   = SaleID;
                var cruiseID = CruiseID;

                var datastore = new CuttingUnitDatastore(database, CruiseID, TestDeviceInfoService.TEST_DEVICEID, new SamplerInfoDataservice(database, CruiseID, TestDeviceInfoService.TEST_DEVICEID));
                InitializeDatabase(database, cruiseID, saleID, units, null, null, null, null, null, null);

                datastore.GetPlotStrataProxies(unit).Should().HaveCount(0);

                var stratumID = Guid.NewGuid().ToString();
                database.Execute($"INSERT INTO Stratum (CruiseID, StratumID, StratumCode, Method) VALUES ('{cruiseID}', '{stratumID}', '{newStratumCode}', '{method}');");
                database.Execute($"INSERT INTO CuttingUnit_Stratum (CruiseID, CuttingUnitCode, StratumCode) VALUES ('{cruiseID}', '{unit}', '{newStratumCode}')");

                var result = datastore.GetPlotStrataProxies(unit).ToArray();

                result.Should().HaveCount(1);
            }
        }
Beispiel #7
0
        private void ValidateDAL(CruiseDatastore_V3 db)
        {
            var f_keys = db.ExecuteScalar <string>("PRAGMA foreign_keys;");

            f_keys.Should().BeOneOf("on", "1", "yes", "true");

            var version = db.DatabaseVersion;

            version.Should().NotBeNull();
            Version.TryParse(version, out var versionParsed).Should().BeTrue(version);

            var createdVersion = db.CreatedVersion;

            createdVersion.Should().NotBeNullOrEmpty();
            // validate that created version in in valid format
            Version.TryParse(version, out var createdVersionParsed).Should().BeTrue(createdVersion);

            db.ExecuteScalar <int>("SELECT count(*) FROM MessageLog WHERE Program IS NULL or Program = '';")
            .Should().Be(0);

            db.ExecuteScalar <string>("SELECT Message FROM MessageLog ORDER BY RowID DESC LIMIT 1;")
            .Should().Be("File Opened");

            //var timeStamp = latestMessage.Time;
            //timeStamp.Should().NotBeNullOrWhiteSpace();
            ////assert that file opened message was within the last 30 seconds
            //DateTime.Parse(timeStamp).Subtract(DateTime.Now).TotalSeconds.Should().BeLessThan(30);
        }
Beispiel #8
0
        public void Sync_UnitStratum_Add()
        {
            var fromPath = base.GetTempFilePath(".crz3", "fromFile");
            var toPath   = base.GetTempFilePath(".crz3", "toFile");

            var syncOptions = new CruiseSyncOptions()
            {
                Design = SyncFlags.Insert,
            };

            var cruiseID = Guid.NewGuid().ToString();
            var saleID   = Guid.NewGuid().ToString();

            using var fromDb = CreateDatabaseFile(fromPath, cruiseID, saleID);
            fromDb.CopyTo(toPath, true);
            using var toDb = new CruiseDatastore_V3(toPath);

            var newCUST = new CuttingUnit_Stratum()
            {
                CruiseID        = cruiseID,
                CuttingUnitCode = Units[1],
                StratumCode     = NonPlotStrata[0].StratumCode,
            };

            fromDb.Insert(newCUST);

            var syncer = new CruiseSyncer();

            syncer.Sync(cruiseID, fromDb, toDb, syncOptions);

            toDb.GetRowCount("CuttingUnit_Stratum", "WHERE CuttingUnitCode = @p1 AND StratumCode = @p2", newCUST.CuttingUnitCode, newCUST.StratumCode)
            .Should().Be(1);
        }
Beispiel #9
0
        public void Sync_SampleGroup_Delete()
        {
            var init     = new DatabaseInitializer();
            var fromPath = base.GetTempFilePath(".crz3", "Sync_SampleGroup_Delete_fromFile");
            var toPath   = base.GetTempFilePath(".crz3", "Sync_SampleGroup_Delete_toFile");

            using var fromDb = init.CreateDatabaseFile(fromPath);
            var cruiseID = init.CruiseID;
            var saleID   = init.SaleID;

            var newStratum = new Stratum
            {
                CruiseID    = cruiseID,
                StratumID   = Guid.NewGuid().ToString(),
                StratumCode = "newStratumCode1",
            };

            fromDb.Insert(newStratum);

            fromDb.CopyTo(toPath, true);
            using var toDb = new CruiseDatastore_V3(toPath);

            fromDb.Delete(newStratum);

            var syncer      = new DeleteSysncer();
            var syncOptions = new CruiseSyncOptions();

            syncer.Sync(cruiseID, fromDb, toDb, syncOptions);

            toDb.GetRowCount("Stratum", "WHERE StratumID = @p1", newStratum.StratumID)
            .Should().Be(0);
        }
Beispiel #10
0
        public void SyncStratumTemplates_Add()
        {
            var fromPath = base.GetTempFilePath(".crz3", "SyncStratumTemplates_Add_fromFile");
            var toPath   = base.GetTempFilePath(".crz3", "SyncStratumTemplates_Add_toFile");

            var syncOptions = new CruiseSyncOptions()
            {
                Processing = SyncFlags.Insert,
            };

            var init     = new DatabaseInitializer();
            var cruiseID = init.CruiseID;
            var saleID   = init.SaleID;

            using var fromDb = init.CreateDatabaseFile(fromPath);

            fromDb.CopyTo(toPath, true);
            using var toDb = new CruiseDatastore_V3(toPath);

            var st = new StratumTemplate
            {
                CruiseID            = cruiseID,
                StratumTemplateName = "something",
            };

            fromDb.Insert(st);

            var syncer = new CruiseSyncer();

            syncer.Sync(cruiseID, fromDb, toDb, syncOptions);

            toDb.From <StratumTemplate>().Count().Should().Be(1);
        }
Beispiel #11
0
 public void MigrateFromV2ToV3(string v2Path, CruiseDatastore_V3 v3db, string deviceID = null)
 {
     using (var v2Cruise = new CruiseDatastore(v2Path, false, null, new Updater_V2()))
     {
         MigrateFromV2ToV3(v2Cruise, v3db, deviceID: deviceID);
     }
 }
Beispiel #12
0
        public void Sync_Reports_Add()
        {
            var rand     = new Bogus.Randomizer();
            var fromPath = base.GetTempFilePath(".crz3", "Sync_Reports_Add_fromFile");
            var toPath   = base.GetTempFilePath(".crz3", "Sync_Reports_Add_toFile");

            var syncOptions = new CruiseSyncOptions()
            {
                Processing = SyncFlags.Insert,
            };

            var cruiseID = Guid.NewGuid().ToString();
            var saleID   = Guid.NewGuid().ToString();

            using var fromDb = CreateDatabaseFile(fromPath, cruiseID, saleID);

            fromDb.CopyTo(toPath, true);
            using var toDb = new CruiseDatastore_V3(toPath);

            var reportID = Guid.NewGuid().ToString();
            var report   = new Reports
            {
                CruiseID = cruiseID,
                ReportID = reportID,
                Title    = rand.String(),
            };

            fromDb.Insert(report);

            var syncer = new CruiseSyncer();

            syncer.Sync(cruiseID, fromDb, toDb, syncOptions);

            toDb.GetRowCount("Reports", "WHERE ReportID = @p1", reportID).Should().Be(1);
        }
Beispiel #13
0
        public void SyncVolumeEquations_Add()
        {
            var rand     = new Bogus.Randomizer();
            var fromPath = base.GetTempFilePath(".crz3", "SyncVolumeEquations_Add_fromFile");
            var toPath   = base.GetTempFilePath(".crz3", "SyncVolumeEquations_Add_toFile");

            var syncOptions = new CruiseSyncOptions()
            {
                Processing = SyncFlags.Insert,
            };

            var cruiseID = Guid.NewGuid().ToString();
            var saleID   = Guid.NewGuid().ToString();

            using var fromDb = CreateDatabaseFile(fromPath, cruiseID, saleID);

            fromDb.CopyTo(toPath, true);
            using var toDb = new CruiseDatastore_V3(toPath);

            var volEq = new VolumeEquation
            {
                CruiseID             = cruiseID,
                Species              = "sp1",
                PrimaryProduct       = "01",
                VolumeEquationNumber = "something"
            };

            fromDb.Insert(volEq);

            var syncer = new CruiseSyncer();

            syncer.Sync(cruiseID, fromDb, toDb, syncOptions);

            toDb.GetRowCount("VolumeEquation", "WHERE VolumeEquationNumber = @p1", volEq.VolumeEquationNumber).Should().Be(1);
        }
        public CruiseDatastore_V3 CreateDatabaseFile(string path, string cruiseID = null, string saleID = null, string saleNumber = null)
        {
            cruiseID   = cruiseID ?? CruiseID;
            saleID     = saleID ?? SaleID;
            saleNumber = saleNumber ?? SaleNumber;

            var units = Units;

            var strata = Strata;

            var unitStrata = UnitStrata;

            var sampleGroups = SampleGroups;

            var species = Species;

            var tdvs = TreeDefaults;

            var subPops = Subpops;

            var database = new CruiseDatastore_V3(path, true);

            InitializeDatabase(database, cruiseID, saleID, saleNumber, units, strata, unitStrata, sampleGroups, species, tdvs, subPops);

            return(database);
        }
Beispiel #15
0
        public void RunDelete_WithConvertedFile(string tableName)
        {
            var skipTables = new[]
            {
                "LK_CruiseMethod",
                "LK_Product",
                "LK_Purpose",
                "LK_Region",
                "LK_UOM",
                "LK_TallyEntryType",
                "Species",
                "TreeField",
            };

            // some tables don't have cascading deletes so we need to skip them
            Skip.If(skipTables.Contains(tableName));

            var testFile = "MultiTest.2014.10.31.cruise";

            var(orgFile, crz3) = SetUpTestFile(testFile);

            var initializer = new DatabaseInitializer();

            using (var database = new CruiseDatastore_V3(crz3))
            {
                //database.OpenConnection();
                //database.Execute("PRAGMA foreign_keys=0;");
                database.Invoking(x => x.Execute($"DELETE FROM {tableName};"))
                .Should().NotThrow();
                //var fKeyErrors = database.QueryGeneric("PRAGMA foreign_key_check;");
                //Output.WriteLine(string.Join("|\r\n",fKeyErrors.Select(x=> x.ToString()).ToArray()));
                //fKeyErrors.Should().BeEmpty();
            }
        }
Beispiel #16
0
        public void Sync_Device_Add()
        {
            var fromPath = base.GetTempFilePath(".crz3", "fromFile");
            var toPath   = base.GetTempFilePath(".crz3", "toFile");

            var syncOptions = new CruiseSyncOptions()
            {
                Design = SyncFlags.Insert,
            };

            var cruiseID = Guid.NewGuid().ToString();
            var saleID   = Guid.NewGuid().ToString();

            using var fromDb = CreateDatabaseFile(fromPath, cruiseID, saleID);
            fromDb.CopyTo(toPath, true);
            using var toDb = new CruiseDatastore_V3(toPath);

            var newDevice = new Device()
            {
                CruiseID = cruiseID,
                DeviceID = Rand.Guid().ToString(),
            };

            fromDb.Insert(newDevice);

            var syncer = new CruiseSyncer();

            syncer.Sync(cruiseID, fromDb, toDb, syncOptions);

            toDb.GetRowCount("Device", "WHERE DeviceID = @p1 AND CruiseID = @p2", newDevice.DeviceID, newDevice.CruiseID)
            .Should().Be(1);
        }
Beispiel #17
0
        public IEnumerable <TreeConflict> GetTreeConflicts(CruiseDatastore_V3 source, CruiseDatastore_V3 destination, string cruiseID)
        {
            var sourceAlias = "src";

            destination.AttachDB(source, sourceAlias);
            try
            {
                return(destination.Query <TreeConflict>(
                           $@"SELECT 
    destT.CuttingUnitCode, 
    destT.PlotNumber, 
    destT.TreeNumber,
    srcT.TreeID AS SrcTreeID, 
    destT.TreeID AS DestTreeID
FROM main.Tree AS destT
    JOIN {sourceAlias}.Tree AS srcT ON 
        destT.CruiseID = srcT.CruiseID 
        AND destT.CuttingUnitCode = srcT.CuttingUnitCode 
        AND destT.PlotNumber = srcT.PlotNumber
        AND destT.TreeNumber = srcT.TreeNumber
WHERE destT.CruiseID = @p1 AND destT.TreeID != srcT.TreeID;", cruiseID).ToArray());
            }
            finally
            {
                destination.DetachDB(sourceAlias);
            }
        }
Beispiel #18
0
        protected override void RegisterTypes(IContainerRegistry containerRegistry)
        {
            if (containerRegistry.IsRegistered <IFileDialogService>() == false)
            {
                containerRegistry.Register <IFileDialogService, XamarinFileDialogService>();
            }

            if (containerRegistry.IsRegistered <IDataserviceProvider>() == false)
            {
                var deviceInfo        = Container.Resolve <IDeviceInfoService>();
                var fileSystemService = Container.Resolve <IFileSystemService>();
                var cruiseDbPath      = fileSystemService.DefaultCruiseDatabasePath;
                if (File.Exists(cruiseDbPath) == false)
                {
                    var newDb = new CruiseDatastore_V3(cruiseDbPath, true);
                }

                _dataserviceProvider = new DataserviceProvider(cruiseDbPath, deviceInfo);
                _dataserviceProvider.RegisterDataservices(containerRegistry);

                containerRegistry.RegisterInstance <IDataserviceProvider>(_dataserviceProvider);
            }

            if (containerRegistry.IsRegistered <ICruisersDataservice>() == false)
            {
                containerRegistry.RegisterInstance <ICruisersDataservice>(_cruisersDataservice = new CruisersDataservice(this));
            }
        }
Beispiel #19
0
        public void Copy(CruiseDatastore_V3 source, CruiseDatastore_V3 destination, string cruiseID)
        {
            var srcConn = source.OpenConnection();

            try
            {
                var destConn = destination.OpenConnection();
                try
                {
                    destination.BeginTransaction();
                    try
                    {
                        Copy(srcConn, destConn, cruiseID);
                        destination.CommitTransaction();
                    }
                    catch
                    {
                        destination.RollbackTransaction();
                        throw;
                    }
                }
                finally
                {
                    destination.ReleaseConnection();
                }
            }
            finally
            {
                source.ReleaseConnection();
            }
        }
Beispiel #20
0
        public void Sync_CuttingUnit_Add()
        {
            var fromPath = base.GetTempFilePath(".crz3", "CuttingUnit_Add_fromFile");
            var toPath   = base.GetTempFilePath(".crz3", "CuttingUnit_Add_toFile");

            var syncOptions = new CruiseSyncOptions();

            var cruiseID = Guid.NewGuid().ToString();
            var saleID   = Guid.NewGuid().ToString();

            using var fromDb = CreateDatabaseFile(fromPath, cruiseID, saleID);

            fromDb.CopyTo(toPath, true);
            using var toDb = new CruiseDatastore_V3(toPath);

            var cuttingUnitID = Guid.NewGuid().ToString();

            fromDb.Insert(new CuttingUnit()
            {
                CruiseID        = cruiseID,
                CuttingUnitID   = cuttingUnitID,
                CuttingUnitCode = "10",
            });
            var newCuttingUnit = fromDb.From <CuttingUnit>().Where("CuttingUnitID = @p1").Query(cuttingUnitID).Single();

            var syncer = new CruiseSyncer();

            syncer.Sync(cruiseID, fromDb, toDb, syncOptions);

            var cuttingUnitAgain = toDb.From <CuttingUnit>().Where("CuttingUnitID =  @p1")
                                   .Query(cuttingUnitID).FirstOrDefault();

            cuttingUnitAgain.Should().BeEquivalentTo(newCuttingUnit, x => x.Excluding(y => y.Modified_TS));
        }
Beispiel #21
0
        public void Sync_BiomassEquation_Add()
        {
            var fromPath = base.GetTempFilePath(".crz3", "Sync_BiomassEquations_Add_fromFile");
            var toPath   = base.GetTempFilePath(".crz3", "Sync_BiomassEquations_Add_toFile");

            var syncOptions = new CruiseSyncOptions()
            {
                Processing = SyncFlags.InsertUpdate,
            };

            var cruiseID = Guid.NewGuid().ToString();
            var saleID   = Guid.NewGuid().ToString();

            using var fromDb = CreateDatabaseFile(fromPath, cruiseID, saleID);

            fromDb.CopyTo(toPath, true);
            using var toDb = new CruiseDatastore_V3(toPath);

            var newBiomassEquation = new BiomassEquation
            {
                CruiseID  = cruiseID,
                Component = "sfdf",
                Species   = "sp1",
                Product   = "01",
                LiveDead  = "L",
            };

            fromDb.Insert(newBiomassEquation);

            var syncer = new CruiseSyncer();

            syncer.Sync(cruiseID, fromDb, toDb, syncOptions);

            toDb.From <BiomassEquation>().Count().Should().Be(1);
        }
Beispiel #22
0
 public void MigrateFromV2ToV3(string v2Path, string newFilePath, string deviceID = null)
 {
     using (var newCruise = new CruiseDatastore_V3(newFilePath, true))
     {
         MigrateFromV2ToV3(v2Path, newCruise, deviceID: deviceID);
     }
 }
Beispiel #23
0
        public void Sync_Sale_Update()
        {
            var fromPath = base.GetTempFilePath(".crz3", "Sale_Update_fromFile");
            var toPath   = base.GetTempFilePath(".crz3", "Sale_Update_toFile");

            var syncOptions = new CruiseSyncOptions();

            var cruiseID = CruiseID;
            var saleID   = SaleID;

            using var fromDb = CreateDatabaseFile(fromPath);

            fromDb.CopyTo(toPath, true);
            using var toDb = new CruiseDatastore_V3(toPath);

            var sale = fromDb.From <Sale>()
                       .Where("SaleID = @p1")
                       .Query(saleID)
                       .FirstOrDefault();

            sale.Remarks = Rand.String();
            fromDb.Update(sale);

            var syncer = new CruiseSyncer();

            syncer.Sync(cruiseID, fromDb, toDb, syncOptions);

            var saleAgain = toDb.From <Sale>().Where("SaleID = @p1").Query(saleID).FirstOrDefault();

            saleAgain.Should().BeEquivalentTo(sale, x => x.Excluding(y => y.Modified_TS));
        }
Beispiel #24
0
        public void GetSamplerBySampleGroupCode()
        {
            var unitCode          = "u1";
            var stratumCode       = "st3";
            var sampleGroupCode   = "sg1";
            var samplingFrequency = 5;
            var insuranceFreq     = 2;
            var method            = CruiseDAL.Schema.CruiseMethods.STR;



            using (var database = new CruiseDatastore_V3())
            {
                var saleID   = SaleID;
                var cruiseID = CruiseID;

                base.InitializeDatabase(database,
                                        cruiseID,
                                        saleID,
                                        new[] { unitCode },
                                        new CruiseDAL.V3.Models.Stratum[]
                {
                    new CruiseDAL.V3.Models.Stratum()
                    {
                        StratumCode = stratumCode, Method = method
                    },
                },
                                        new CruiseDAL.V3.Models.CuttingUnit_Stratum[] {
                    new CruiseDAL.V3.Models.CuttingUnit_Stratum()
                    {
                        CuttingUnitCode = unitCode, StratumCode = stratumCode
                    },
                },
                                        new CruiseDAL.V3.Models.SampleGroup[] {
                    new CruiseDAL.V3.Models.SampleGroup()
                    {
                        StratumCode        = stratumCode,
                        SampleGroupCode    = sampleGroupCode,
                        SamplingFrequency  = samplingFrequency,
                        InsuranceFrequency = insuranceFreq,
                    },
                },
                                        new[] { "sp1", "sp2" },
                                        null, null
                                        );

                var ds   = new SamplerInfoDataservice(database, CruiseID, TestDeviceInfoService.TEST_DEVICEID);
                var repo = new SampleSelectorRepository(ds);

                var sampler = repo.GetSamplerBySampleGroupCode(stratumCode, sampleGroupCode);
                sampler.ITreeFrequency.Should().Be(insuranceFreq);
                ((FMSC.Sampling.IFrequencyBasedSelecter)sampler).Frequency.Should().Be(samplingFrequency);

                sampler.Should().NotBeNull();

                var samplerAgain = repo.GetSamplerBySampleGroupCode(stratumCode, sampleGroupCode);
                samplerAgain.Should().BeSameAs(sampler);
            }
        }
Beispiel #25
0
        public void Ctor_with_empty_path()
        {
            Action action = () =>
            {
                var db = new CruiseDatastore_V3("");
            };

            action.Should().Throw <ArgumentException>();
        }
Beispiel #26
0
        public DataserviceBase(CruiseDatastore_V3 database, string deviceID)
        {
            if (string.IsNullOrWhiteSpace(deviceID))
            {
                throw new ArgumentException($"'{nameof(deviceID)}' cannot be null or whitespace", nameof(deviceID));
            }
            DeviceID = deviceID;

            Database = database ?? throw new ArgumentNullException(nameof(database));
        }
Beispiel #27
0
        public void DumpDatabaseInfo(CruiseDatastore_V3 ds, params string[] tables)
        {
            Output.WriteLine($"DAL Version: {ds.DatabaseVersion}");

            foreach (var table in tables)
            {
                var tableSql = ds.GetTableSQL(table);
                Output.WriteLine(tableSql);
            }
        }
Beispiel #28
0
        public void Sync_Plot_Stratum_Update()
        {
            var fromPath = base.GetTempFilePath(".crz3", "Sync_Plot_Add_fromFile");
            var toPath   = base.GetTempFilePath(".crz3", "Sync_Plot_Add_toFile");

            var syncOptions = new CruiseSyncOptions()
            {
                Design    = SyncFlags.Insert,
                FieldData = SyncFlags.InsertUpdate,
            };

            var cruiseID = Guid.NewGuid().ToString();
            var saleID   = Guid.NewGuid().ToString();

            using var fromDb = CreateDatabaseFile(fromPath, cruiseID, saleID);

            var plot = new Plot()
            {
                CruiseID        = cruiseID,
                PlotID          = Guid.NewGuid().ToString(),
                CuttingUnitCode = Units[0],
                PlotNumber      = 1,
            };

            fromDb.Insert(plot);

            var plotStratum = new Plot_Stratum()
            {
                CruiseID        = cruiseID,
                PlotNumber      = plot.PlotNumber,
                CuttingUnitCode = plot.CuttingUnitCode,
                StratumCode     = PlotStrata[0].StratumCode,
            };

            fromDb.Insert(plotStratum);

            fromDb.CopyTo(toPath, true);
            using var toDb = new CruiseDatastore_V3(toPath);

            plotStratum.KPI = Rand.Double();
            plotStratum.ThreePRandomValue = Rand.Int();
            toDb.Update(plotStratum);

            var syncer = new CruiseSyncer();

            syncer.Sync(cruiseID, fromDb, toDb, syncOptions);

            var plotStratumAgain = toDb
                                   .From <Plot_Stratum>()
                                   .Where("Plot_Stratum_CN = @p1")
                                   .Query(plotStratum.Plot_Stratum_CN)
                                   .FirstOrDefault();

            plotStratumAgain.Should().BeEquivalentTo(plotStratum, config => config.Excluding(x => x.Modified_TS));
        }
Beispiel #29
0
        public void Constructor_file_create_test()
        {
            var filePath = GetTempFilePathWithExt(".crz3", "testCreate");

            Output.WriteLine(filePath);
            RegesterFileForCleanUp(filePath);
            var datastore = new CruiseDatastore_V3(filePath, true);


            ValidateDAL(datastore);
        }
Beispiel #30
0
        public void Copy()
        {
            var initializer = new DatabaseInitializer();

            using (var srcDb = initializer.CreateDatabase())
                using (var destDb = new CruiseDatastore_V3())
                {
                    var copier = new CruiseCopier();
                    copier.Copy(srcDb, destDb, initializer.CruiseID);
                }
        }