Example #1
0
        public static void VerifyBoundary(List <FieldBoundary> catalogFieldBoundaries, List <Field> catalogFields, List <Farm> catalogFarms, List <Grower> catalogGrowers,
                                          string expectedGuid, string expectedGrowerName, string expectedGrowerGuid, string expectedFarmDescription, string expectedFarmGuid,
                                          string expectedFieldDescription, string expectedFieldGuid, double expectedFieldArea, string expectedFieldAreaUnit,
                                          GpsSourceEnum expectedGpsSourceEnum, List <string> expectedInteriorBoundaries, int expectedPolygonCount)
        {
            var boundary = catalogFieldBoundaries.Find(x => x.Id.UniqueIds.Exists(id => id.Id == expectedGuid));

            Assert.IsNotNull(boundary);

            AssertLogistics.VerifyClient(catalogGrowers, expectedGrowerName, expectedGrowerGuid);
            AssertLogistics.VerifyFarm(catalogFarms, catalogGrowers, expectedFarmDescription, expectedFarmGuid, expectedGrowerName);
            AssertLogistics.VerifyField(catalogFields, catalogFarms, expectedFieldDescription, expectedFieldGuid, expectedFarmDescription, expectedFieldArea, expectedFieldAreaUnit);

            Assert.AreEqual(expectedGpsSourceEnum, boundary.GpsSource.SourceType);

            var interiorBoundaryVerified = true;

            foreach (var expectedInteriorBoundary in expectedInteriorBoundaries)
            {
                interiorBoundaryVerified &= boundary.InteriorBoundaryAttributes.Exists(x => x.Description == expectedInteriorBoundary);
            }

            Assert.IsTrue(interiorBoundaryVerified);

            Assert.IsNotNull(boundary.SpatialData);
            Assert.AreEqual(ShapeTypeEnum.MultiPolygon, boundary.SpatialData.Type);
            Assert.IsNotNull(boundary.SpatialData.Polygons);
            Assert.AreEqual(boundary.SpatialData.Polygons.Count, expectedPolygonCount);
        }
Example #2
0
        private static GuidancePattern VerifyGuidancePattern(List <GuidancePattern> catalogGuidancePattern, List <Grower> catalogGrowers, List <Farm> catalogFarms,
                                                             List <Field> catalogFields, string expectedDescription, string expectedGuid, string expectedGrowerName,
                                                             string expectedGrowerGuid, string expectedFarmDescription, string expectedFarmGuid, string expectedFieldDescription,
                                                             string expectedFieldGuid, double expectedFieldArea, string expectedFieldAreaUnit)
        {
            var guidancePattern = catalogGuidancePattern.Find(x => x.Id.UniqueIds.Exists(id => id.Id == expectedGuid));

            Assert.IsNotNull(guidancePattern);

            Assert.AreEqual(expectedDescription, guidancePattern.Description);

            AssertLogistics.VerifyClient(catalogGrowers, expectedGrowerName, expectedGrowerGuid);
            AssertLogistics.VerifyFarm(catalogFarms, catalogGrowers, expectedFarmDescription, expectedFarmGuid,
                                       expectedGrowerName);
            AssertLogistics.VerifyField(catalogFields, catalogFarms, expectedFieldDescription, expectedFieldGuid,
                                        expectedFarmDescription, expectedFieldArea, expectedFieldAreaUnit);
            return(guidancePattern);
        }
Example #3
0
        public void GivenOlderVersionSetupCardWhenImportedToVersionWithChangedPropertyAndTypeNamesThenImportsToTheNewerModel()
        {
            _cardPath = DatacardUtility.WriteDatacard("ADMSetup_V1_0_8");

            var plugin = new Plugin();
            var applicationDataModel = plugin.Import(_cardPath);

            Assert.IsNotNull(applicationDataModel);

            var dataModel = applicationDataModel.First();
            var catalog   = dataModel.Catalog;

            AssertLogistics.VerifyClient(catalog.Growers, "Client_1", "9309ad91-34a7-46d1-8fc4-2a8200bfd1fe");
            AssertLogistics.VerifyClient(catalog.Growers, "Client_2", "f012ab09-2bfa-4b43-bd84-0639fc964a37");
            AssertLogistics.VerifyClient(catalog.Growers, "Client_3", "c1453376-973a-4aae-afc7-e9cf124546b1");
            AssertLogistics.VerifyClient(catalog.Growers, "AccumulatedClient", "eef7e764-9b6e-490d-8650-c979ad0a6533");

            AssertLogistics.VerifyFarm(catalog.Farms, catalog.Growers, "Farm_1", "71695e14-c72a-4ad5-924e-6a8a93273b42", "Client_1");
            AssertLogistics.VerifyFarm(catalog.Farms, catalog.Growers, "Farm_2", "a9a27c6c-d535-49fe-9f7e-baa1be498dee", "Client_2");
            AssertLogistics.VerifyFarm(catalog.Farms, catalog.Growers, "Farm_3", "d084bb88-4df8-4fcb-a913-dd01b854cd78", "Client_3");
            AssertLogistics.VerifyFarm(catalog.Farms, catalog.Growers, "AccumulatedFarm", "46c3d57c-a87a-4324-a39d-d81a6547a1bc", "AccumulatedClient");

            AssertLogistics.VerifyField(catalog.Fields, catalog.Farms, "Field_1", "c5f76cad-2447-46bf-a291-64039bef531f", "Farm_1", 1000, "ac");
            AssertLogistics.VerifyField(catalog.Fields, catalog.Farms, "Field_2", "1dbfd5b6-5e93-4c3b-a823-74194046714d", "Farm_2", 2000, "ac");
            AssertLogistics.VerifyField(catalog.Fields, catalog.Farms, "Field_3", "1d427ee9-9530-48cd-bc09-610bc6aa0359", "Farm_3", 3000, "ac");
            AssertLogistics.VerifyField(catalog.Fields, catalog.Farms, "Field_4", "fe0ef60f-cdbe-420e-af38-39511e31d3cb", "Farm_1", 1000, "ac");
            AssertLogistics.VerifyField(catalog.Fields, catalog.Farms, "Field_5", "0bcbfbec-f064-42c2-a98a-57c434ba7be6", "Farm_1", 1000, "ac");
            AssertLogistics.VerifyField(catalog.Fields, catalog.Farms, "Field_6", "65c1eb62-0812-48ff-89ab-c422907e1fb8", "Farm_1", 1000, "ac");
            AssertLogistics.VerifyField(catalog.Fields, catalog.Farms, "AccumulatedField", "b23870b6-18de-4942-ac58-cf8671b87940", "AccumulatedFarm", 100, "ac");

            AssertLogistics.VerifyPerson(catalog.Persons, "Frank", "71661fa6-5cb8-4789-8e83-c9355a75aef6");
            AssertLogistics.VerifyPerson(catalog.Persons, "Lou", "d7802728-32ae-46e5-8ff4-ccf07fcd415d");
            AssertLogistics.VerifyPerson(catalog.Persons, "John", "8d5cb704-d41f-419f-abc0-ee7656ac2bf4");

            AssertProducts.VerifyCropProtectionProduct(catalog.Products, "Water", "ae248af1-d152-49c8-ab11-58ada63ec213", CategoryEnum.Unknown);

            // Defaults to additive when nothing is set.
            AssertProducts.VerifyCropNutrientProduct(catalog.Products, "NH3", "93a50572-4b9a-4e17-8ea8-93883d544b6c", CategoryEnum.Additive);
            AssertProducts.VerifyCropNutrientProduct(catalog.Products, "Manure", "7c548a23-66e8-40ae-a539-c571588a6b9c", CategoryEnum.Additive);

            AssertProducts.VerifyCropVariety(catalog.Products, catalog.Crops, "Variety1", "140c9c02-6dae-429d-be46-4b9739a53cdb", CategoryEnum.Variety, "Corn");
            AssertProducts.VerifyCropVariety(catalog.Products, catalog.Crops, "Variety2", "6b9e76ef-6c46-4086-9eda-51d80911da8c", CategoryEnum.Variety, "Corn");

            AssertProducts.VerifyCrop(catalog.Crops, "Barley", "2", 21.77, "kg1bu-1", 14, "prcnt");
            AssertProducts.VerifyCrop(catalog.Crops, "Canola", "5", 23.59, "kg1bu-1", 10, "prcnt");
            AssertProducts.VerifyCrop(catalog.Crops, "Corn", "173", 25.4, "kg1bu-1", 15, "prcnt");
            AssertProducts.VerifyCrop(catalog.Crops, "Cotton", "175", 480, "kg1bu-1", 6, "prcnt");
            AssertProducts.VerifyCrop(catalog.Crops, "Oats", "11", 14.51, "kg1bu-1", 14, "prcnt");
            AssertProducts.VerifyCrop(catalog.Crops, "Rape Seed", "16", 23.59, "kg1bu-1", 8, "prcnt");
            AssertProducts.VerifyCrop(catalog.Crops, "Rice", "17", 20.41, "kg1bu-1", 14, "prcnt");
            AssertProducts.VerifyCrop(catalog.Crops, "Sorghum (milo)", "21", 25.4, "kg1bu-1", 13, "prcnt");
            AssertProducts.VerifyCrop(catalog.Crops, "Soybeans", "174", 27.22, "kg1bu-1", 13, "prcnt");
            AssertProducts.VerifyCrop(catalog.Crops, "Sunflowers", "40", 11.33, "kg1bu-1", 9, "prcnt");
            AssertProducts.VerifyCrop(catalog.Crops, "Wheat", "24", 27.22, "kg1bu-1", 13, "prcnt");

            AssertDevices.VerifyDeviceModel(catalog.DeviceModels, "9x30T", "5c3cab35-9829-42fe-932f-5c8b3331a8e4");
            AssertDevices.VerifyDeviceModel(catalog.DeviceModels, "7x30", "80bc222d-4dee-4bb1-897f-0af6e9ae2e9e");
            AssertDevices.VerifyDeviceModel(catalog.DeviceModels, "2410 Chisel Plow", "90c0810f-f492-485b-8ce3-179a8be45fbe");
            AssertDevices.VerifyDeviceModel(catalog.DeviceModels, "1770NT", "d143fca4-bad0-4281-b53e-8f93becd1230");

            AssertDevices.VerifyDeviceElement(catalog.DeviceElements, "8430", "serial-1", "d3ea4736-0424-47fd-9c93-e531362a1f4f", "Tractor", DeviceElementTypeEnum.Machine);
            AssertDevices.VerifyDeviceElement(catalog.DeviceElements, "8320", "serial-2", "fc979391-7cd8-45fe-905b-1d26aa96f91d", "Tractor", DeviceElementTypeEnum.Machine);
            AssertDevices.VerifyDeviceElement(catalog.DeviceElements, "4730", "serial-3", "dc562db9-a2ea-4420-a003-00a9ccbc8153", "Sprayer", DeviceElementTypeEnum.Machine);
            AssertDevices.VerifyDeviceElement(catalog.DeviceElements, "9560 STS", "serial-4", "67907d7f-014b-4625-81f6-a5a65f3e788a", "Combine", DeviceElementTypeEnum.Machine);

            AssertDevices.VerifyDeviceElement(catalog.DeviceElements, "373", "serial-1", "b4def480-ee2a-4a28-a6a1-3898af96c385", "Tillage", DeviceElementTypeEnum.Implement);
            AssertDevices.VerifyDeviceElement(catalog.DeviceElements, "1770 NT", "serial-1", "4135b823-13cf-41a9-8286-9eb40119800c", "Planter", DeviceElementTypeEnum.Implement);
            AssertDevices.VerifyDeviceElement(catalog.DeviceElements, "714 Tiller", "serial-2", "b9a50513-b9cd-4065-9373-ab73e8bfa1b6", "Tillage", DeviceElementTypeEnum.Implement);
            AssertDevices.VerifyDeviceElement(catalog.DeviceElements, "1890", "serial-3", "e89b3ac3-57bf-4510-80cd-5b2135e1da88", "Air Cart", DeviceElementTypeEnum.Implement);

            var offsets8430 = new Dictionary <string, Tuple <double, string> >
            {
                { RepresentationInstanceList.vrGPSToNonSteeringAxleOffset.DomainId, new Tuple <double, string>(4.7, "in") },
                { RepresentationInstanceList.vrReceiverOffset.DomainId, new Tuple <double, string>(9.5, "in") },
            };

            AssertDevices.VerifyMachineConfiguration(catalog.Connectors, catalog.DeviceElements, catalog.DeviceElementConfigurations, catalog.HitchPoints,
                                                     "8430", HitchTypeEnum.ISO730ThreePointHitchMounted, OriginAxleLocationEnum.Rear, offsets8430);
            AssertDevices.VerifyMachineConfiguration(catalog.Connectors, catalog.DeviceElements, catalog.DeviceElementConfigurations, catalog.HitchPoints,
                                                     "8320", HitchTypeEnum.ISO730ThreePointHitchMounted, OriginAxleLocationEnum.Rear, new Dictionary <string, Tuple <double, string> >());
            AssertDevices.VerifyMachineConfiguration(catalog.Connectors, catalog.DeviceElements, catalog.DeviceElementConfigurations, catalog.HitchPoints,
                                                     "4730", HitchTypeEnum.ISO730ThreePointHitchMounted, OriginAxleLocationEnum.Rear, new Dictionary <string, Tuple <double, string> >());
            AssertDevices.VerifyMachineConfiguration(catalog.Connectors, catalog.DeviceElements, catalog.DeviceElementConfigurations, catalog.HitchPoints,
                                                     "9560 STS", HitchTypeEnum.ISO730ThreePointHitchMounted, OriginAxleLocationEnum.Rear, new Dictionary <string, Tuple <double, string> >());

            var offsets373 = new Dictionary <string, Tuple <double, string> >
            {
                { RepresentationInstanceList.vrEquipmentWidth.DomainId, new Tuple <double, string>(32.0, "ft") },
                { RepresentationInstanceList.vrTrackSpacing.DomainId, new Tuple <double, string>(32.0, "ft") },
                { RepresentationInstanceList.vrPhysicalImplementWidth.DomainId, new Tuple <double, string>(33.0, "ft") },
                { RepresentationInstanceList.vrImplementLength.DomainId, new Tuple <double, string>(5.3, "ft") },
                { RepresentationInstanceList.vrInlineControlPointToConnectionOffset.DomainId, new Tuple <double, string>(9.8, "ft") },
                { RepresentationInstanceList.vrLateralControlPointToConnectionOffset.DomainId, new Tuple <double, string>(6.7, "in") },
                { RepresentationInstanceList.vrImplementFrontOffset.DomainId, new Tuple <double, string>(6.8, "ft") },
                { RepresentationInstanceList.vrLateralConnectionPointToReceiverOffset.DomainId, new Tuple <double, string>(0, "in") },
                { RepresentationInstanceList.vrInlineConnectionPointToReceiverOffset.DomainId, new Tuple <double, string>(0, "ft") }
            };

            AssertDevices.VerifyImplementConfiguration(catalog.Connectors, catalog.DeviceElements, catalog.DeviceElementConfigurations, catalog.HitchPoints,
                                                       "373", offsets373);
            AssertDevices.VerifyImplementConfiguration(catalog.Connectors, catalog.DeviceElements, catalog.DeviceElementConfigurations, catalog.HitchPoints,
                                                       "1770 NT", new Dictionary <string, Tuple <double, string> >());
            AssertDevices.VerifyImplementConfiguration(catalog.Connectors, catalog.DeviceElements, catalog.DeviceElementConfigurations, catalog.HitchPoints,
                                                       "714 Tiller", new Dictionary <string, Tuple <double, string> >());
            AssertDevices.VerifyImplementConfiguration(catalog.Connectors, catalog.DeviceElements, catalog.DeviceElementConfigurations, catalog.HitchPoints,
                                                       "1890", new Dictionary <string, Tuple <double, string> >());

            //This bad boundary data card does not have any goemetry attached to it. Check other tests which verify boundary spatial data
            AssertBoundaries.VerifyBoundary(catalog.FieldBoundaries, catalog.Fields, catalog.Farms, catalog.Growers,
                                            "36293da7-19b0-47dd-b28c-f42d2464ed5a", "Client_1", "9309ad91-34a7-46d1-8fc4-2a8200bfd1fe",
                                            "Farm_1", "71695e14-c72a-4ad5-924e-6a8a93273b42", "Field_1", "c5f76cad-2447-46bf-a291-64039bef531f", 1000, "ac",
                                            GpsSourceEnum.DeereRTK, new List <string> {
                "Pond"
            }, 0);

            AssertGuidance.VerifyAbLine(catalog.GuidancePatterns, catalog.Growers, catalog.Farms, catalog.Fields,
                                        "ABLine1", "d3bb7e96-6f48-4fc5-b955-f9adef634189", "Client_2", "f012ab09-2bfa-4b43-bd84-0639fc964a37",
                                        "Farm_2", "a9a27c6c-d535-49fe-9f7e-baa1be498dee", "Field_2", "1dbfd5b6-5e93-4c3b-a823-74194046714d", 2000, "ac", 100.1, 0.1, 0.1,
                                        new Point {
                X = -90.74156051, Y = 40.61723241
            }, new Point {
                X = -90.74162551, Y = 40.61084801
            });

            AssertGuidance.VerifyPivotGuidance(catalog.GuidancePatterns, catalog.Growers, catalog.Farms, catalog.Fields,
                                               "CircleTrack1", "5c257ad5-bcea-4ede-905c-6f286154f1a9", "Client_3", "c1453376-973a-4aae-afc7-e9cf124546b1",
                                               "Farm_3", "d084bb88-4df8-4fcb-a913-dd01b854cd78", "Field_3", "1d427ee9-9530-48cd-bc09-610bc6aa0359", 3000, "ac",
                                               new Point {
                X = -90.49236844, Y = 41.48970819
            }, new Point {
                X = -90.49233529657748, Y = 41.489707467589085
            },
                                               new Point {
                X = -90.49236844, Y = 41.48970819
            }, 0, "cm", PropagationDirectionEnum.NoPropagation, GuidanceExtensionEnum.None);

            //This abcurve data card does not have any goemetry attached to it. Check other tests which verify ab curve spatial data
            AssertGuidance.VerifyAbCurve(catalog.GuidancePatterns, catalog.Growers, catalog.Farms, catalog.Fields,
                                         "ABCurve1", "862db2bc-e7d8-4476-8aa6-f80830c77f3a", "Client_1", "9309ad91-34a7-46d1-8fc4-2a8200bfd1fe",
                                         "Farm_1", "71695e14-c72a-4ad5-924e-6a8a93273b42", "Field_5", "0bcbfbec-f064-42c2-a98a-57c434ba7be6", 1000, "ac", 9, 36.71572876, 0.0, 0.0,
                                         GpsSourceEnum.DesktopGeneratedData, new Point {
                X = -90.49276618, Y = 41.4895797
            }, new Point {
                X = -90.49227984, Y = 41.49007002
            }, 0, 0,
                                         new List <Point>
            {
                new Point {
                    X = -90.49331356, Y = 41.49024408
                },
                new Point {
                    X = -90.49173246, Y = 41.49024408
                },
                new Point {
                    X = -90.49173246, Y = 41.48941734
                },
                new Point {
                    X = -90.49331356, Y = 41.48941734
                },
                new Point {
                    X = -90.49331356, Y = 41.49024408
                }
            });
        }