Example #1
0
        public void CloneHydroNetworkWithData()
        {
            var network = HydroNetworkHelper.GetSnakeHydroNetwork(1);

            var publicProperties = ReflectionTestHelper.GetPublicListProperties(network);

            foreach (var prop in publicProperties)
            {
                try
                {
                    var value = prop.GetValue(network, null);
                    if (value is IList)
                    {
                        var genericType = TypeUtils.GetFirstGenericTypeParameter(value.GetType());

                        var concreteType =
                            genericType.Assembly.GetTypes().Where(
                                t => genericType.IsAssignableFrom(t) &&
                                !t.IsInterface &&
                                !t.IsAbstract).FirstOrDefault();

                        var instance = Activator.CreateInstance(concreteType);
                        (value as IList).Add(instance);
                    }
                }
                catch (Exception)
                {
                    Console.WriteLine(String.Format("Unable to set property: {0}", prop));
                }
            }

            var clone = (HydroNetwork)network.Clone();

            TestReferenceHelper.AssertStringRepresentationOfGraphIsEqual(network, clone);
        }
Example #2
0
        public void CloneHydroNetworkWithLinkSources()
        {
            var network   = HydroNetworkHelper.GetSnakeHydroNetwork(1);
            var catchment = new Catchment();

            network.Catchments.Add(catchment);
            var wasteWaterTreatmentPlant = new WasteWaterTreatmentPlant();

            network.WasteWaterTreatmentPlants.Add(wasteWaterTreatmentPlant);

            var lateral = new LateralSource();

            network.Branches.First().BranchFeatures.Add(lateral);

            catchment.OutgoingLinks.Add(wasteWaterTreatmentPlant);
            catchment.OutgoingLinks.Add(lateral);
            wasteWaterTreatmentPlant.IncomingLinks.Add(catchment);
            lateral.IncomingLinks.Add(catchment);

            var clone = (HydroNetwork)network.Clone();
            var links = TestReferenceHelper.SearchObjectInObjectGraph(catchment, clone);

            links.ForEach(Console.WriteLine);
            Assert.AreEqual(0, links.Count);

            Assert.AreEqual(2, clone.Catchments.First().OutgoingLinks.Count);
            Assert.AreEqual(1, clone.WasteWaterTreatmentPlants.First().IncomingLinks.Count);
            Assert.AreEqual(1, clone.LateralSources.First().IncomingLinks.Count);
        }
Example #3
0
        public void CloneHydroNetworkWithProxyDefinitions()
        {
            var network          = HydroNetworkHelper.GetSnakeHydroNetwork(1);
            var sharedDefinition = new CrossSectionDefinitionYZ();

            network.SharedCrossSectionDefinitions.Add(sharedDefinition);
            HydroNetworkHelper.AddCrossSectionDefinitionToBranch(network.Channels.First(),
                                                                 new CrossSectionDefinitionProxy(sharedDefinition),
                                                                 10.0d);

            var clone = (HydroNetwork)network.Clone();

            TestReferenceHelper.AssertStringRepresentationOfGraphIsEqual(network, clone);
        }