public void AddManyBranchesWithCrossSections() { TestHelper.AssertIsFasterThan(2000,() => { const int count = 10000; var network = new HydroNetwork(); for (int i = 0; i < count; i++) { var from = new HydroNode(); var to = new HydroNode(); network.Nodes.Add(from); network.Nodes.Add(to); var channel = new Channel {Source = from, Target = to}; NetworkHelper.AddBranchFeatureToBranch(channel, new CrossSection(), 0); network.Branches.Add(channel); } int crossSectionCount = 0; foreach (ICrossSection crossSection in network.CrossSections) // access all CrossSections should be also fast { crossSectionCount++; } }); }
public void AddManyBranchesWithCrossSections() { TestHelper.AssertIsFasterThan(2275, () => { const int count = 10000; var network = new HydroNetwork(); for (int i = 0; i < count; i++) { var from = new HydroNode(); var to = new HydroNode(); network.Nodes.Add(from); network.Nodes.Add(to); var channel = new Channel { Source = from, Target = to }; HydroNetworkHelper.AddCrossSectionDefinitionToBranch(channel, new CrossSectionDefinitionXYZ(), 0); } int crossSectionCount = 0; foreach (var crossSection in network.CrossSections) { // access all CrossSections should be also fast crossSectionCount++; } }); }
[Category(TestCategory.BadQuality)] // TODO: test Add or change name public void AddManyBranchesWithSimpleBranchFeature() { const int count = 10000; int weirCount = 0; Action action = delegate // TODO: what are we testing here? Test only add. { var network = new HydroNetwork(); for (int i = 0; i < count; i++) { var from = new HydroNode(); var to = new HydroNode(); network.Nodes.Add(from); network.Nodes.Add(to); var channel = new Channel { Source = from, Target = to }; var compositeBranchStructure = new CompositeBranchStructure(); NetworkHelper.AddBranchFeatureToBranch(compositeBranchStructure, channel, 0); HydroNetworkHelper.AddStructureToComposite(compositeBranchStructure, new Weir()); network.Branches.Add(channel); } foreach (IWeir weir in network.Weirs) // access all Weirs should be also fast { weirCount++; } }; TestHelper.AssertIsFasterThan(2750, string.Format("Added {0} branches with {1} weirs", count, weirCount), action); }
/// <summary> /// Creates a simple test network of 1 branch amd 2 nodes. The branch has '3' parts, in the center of /// the first aand last is a cross section. /// n /// / /// / /// cs /// / /// -------/ /// / /// cs /// / /// n /// </summary> /// <returns></returns> private static IHydroNetwork CreateSegmentTestNetwork() { var network = new Hydro.HydroNetwork(); var branch1 = new Channel { Geometry = new LineString(new[] { new Coordinate(0, 0), new Coordinate(0, 100), }) }; var node1 = new HydroNode { Network = network, Geometry = new Point(new Coordinate(0, 0)) }; var node2 = new HydroNode { Network = network, Geometry = new Point(new Coordinate(100, 0)) }; network.Branches.Add(branch1); network.Nodes.Add(node1); network.Nodes.Add(node2); branch1.Source = node1; branch1.Target = node2; return(network); }
private HydroNetwork GetNetwork() { var network = new HydroNetwork(); var crossSectionSectionType = new CrossSectionSectionType { Name = "Jan" }; network.CrossSectionSectionTypes.Add(crossSectionSectionType); crossSectionSectionType.Id = 666;//debug easy by idd var from = new HydroNode(); var to = new HydroNode(); network.Nodes.Add(from); network.Nodes.Add(to); var channel = new Channel { Source = from, Target = to }; network.Branches.Add(channel); var crossSectionXYZ = new CrossSectionDefinitionXYZ { Geometry = new LineString(new[] { new Coordinate(0, 0), new Coordinate(10, 0) }) }; crossSectionXYZ.Sections.Add(new CrossSectionSection { SectionType = crossSectionSectionType }); HydroNetworkHelper.AddCrossSectionDefinitionToBranch(channel, crossSectionXYZ, 0); return(network); }
public void CloneHydroNetwork() { var network = new HydroNetwork(); var from = new HydroNode(); var to = new HydroNode(); network.Nodes.Add(from); network.Nodes.Add(to); var channel = new Channel { Source = from, Target = to }; network.Branches.Add(channel); network.CrossSectionSectionTypes.Add(new CrossSectionSectionType { Name = "JemigdePemig" }); var crossSectionSectionTypesCount = network.CrossSectionSectionTypes.Count; // The default CrossSectionSectionType and JDP Assert.AreEqual(2, crossSectionSectionTypesCount); var clonedHydroNetwork = (IHydroNetwork)network.Clone(); clonedHydroNetwork.GetType().Should().Be.EqualTo(typeof(HydroNetwork)); clonedHydroNetwork.Branches.Count.Should().Be.EqualTo(1); clonedHydroNetwork.Nodes.Count.Should().Be.EqualTo(2); clonedHydroNetwork.CrossSectionSectionTypes.Count.Should().Be.EqualTo(crossSectionSectionTypesCount); Assert.AreEqual("JemigdePemig", clonedHydroNetwork.CrossSectionSectionTypes.Last().Name); }
/// <summary> /// Creates a simple test network of 1 branch amd 2 nodes. The branch has '3' parts, in the center of /// the first aand last is a cross section. /// n /// / /// / /// cs /// / /// -------/ /// / /// cs /// / /// n /// </summary> /// <returns></returns> private static IHydroNetwork CreateTestNetwork() { var network = new Hydro.HydroNetwork(); var branch1 = new Channel { Geometry = new LineString(new[] { new Coordinate(0, 0), new Coordinate(30, 40), new Coordinate(70, 40), new Coordinate(100, 100) }) }; var node1 = new HydroNode {Network = network, Geometry = new Point(new Coordinate(0, 0))}; var node2 = new HydroNode {Network = network, Geometry = new Point(new Coordinate(100, 100))}; network.Branches.Add(branch1); network.Nodes.Add(node1); network.Nodes.Add(node2); var crossSection1 = new CrossSection { Geometry = new LineString(new[] {new Coordinate(15, 20), new Coordinate(15, 20)}) }; double offset1 = Math.Sqrt(15 * 15 + 20 * 20); crossSection1.Offset = offset1; var crossSection2 = new CrossSection { Geometry = new LineString(new[] {new Coordinate(85, 70), new Coordinate(85, 70)}) }; double offset2 = Math.Sqrt(30 * 30 + 40 * 40) + 40 + Math.Sqrt(15 * 15 + 20 * 20); crossSection2.Offset = offset2; branch1.Source = node1; branch1.Target = node2; NetworkHelper.AddBranchFeatureToBranch(branch1, crossSection1, crossSection1.Offset); NetworkHelper.AddBranchFeatureToBranch(branch1, crossSection2, crossSection2.Offset); return network; }
public void CloneHydroNetworkWithVariousBranchFeatures() { var network = new HydroNetwork(); var from = new HydroNode(); var to = new HydroNode(); network.Nodes.Add(from); network.Nodes.Add(to); var channel = new Channel { Source = from, Target = to }; network.Branches.Add(channel); var compositeBranchStructure = new CompositeBranchStructure(); NetworkHelper.AddBranchFeatureToBranch(compositeBranchStructure, channel, 0); HydroNetworkHelper.AddStructureToComposite(compositeBranchStructure, new Weir()); HydroNetworkHelper.AddStructureToComposite(compositeBranchStructure, new Pump()); var crossSectionXYZ = new CrossSectionDefinitionXYZ { Geometry = new LineString(new[] { new Coordinate(0, 0), new Coordinate(10, 0) }) }; HydroNetworkHelper.AddCrossSectionDefinitionToBranch(channel, crossSectionXYZ, 0); var clonedHydroNetwork = (IHydroNetwork)network.Clone(); clonedHydroNetwork.CrossSections.Should().Have.Count.EqualTo(1); clonedHydroNetwork.CompositeBranchStructures.Should().Have.Count.EqualTo(1); clonedHydroNetwork.Weirs.Should().Have.Count.EqualTo(1); clonedHydroNetwork.Pumps.Should().Have.Count.EqualTo(1); }
public void CloneHydroNetworkAndAddBranch() { var network = new HydroNetwork(); var from = new HydroNode(); var to = new HydroNode(); network.Nodes.Add(from); network.Nodes.Add(to); var channel = new Channel { Source = from, Target = to }; network.Branches.Add(channel); var clonedNetwork = (IHydroNetwork)network.Clone(); var from2 = new HydroNode("from2"); var to2 = new HydroNode("to2"); clonedNetwork.Nodes.Add(from2); clonedNetwork.Nodes.Add(to2); var channel2 = new Channel { Name = "channel2", Source = from2, Target = to2 }; clonedNetwork.Branches.Add(channel2); Assert.AreEqual(1, network.Branches.Count); Assert.AreEqual(2, clonedNetwork.Branches.Count); }
public void UnlinksOnBranchAdd() { var source = mocks.Stub <ILinkSource>(); var branch = mocks.Stub <IBranch>(); var branch2 = mocks.Stub <IBranch>(); var outgoingLinks = new EventedList <ILinkDestination>(); source.Stub(s => s.OutgoingLinks).Return(outgoingLinks).Repeat.Any(); mocks.ReplayAll(); var node = new HydroNode(); node.OutgoingBranches.Add(branch); Assert.IsTrue(node.IsBoundaryNode); node.IncomingLinks.Add(source); source.OutgoingLinks.Add(node); node.IncomingBranches.Add(branch2); Assert.IsFalse(node.IsBoundaryNode); Assert.AreEqual(0, outgoingLinks.Count); Assert.AreEqual(0, node.IncomingLinks.Count); }
public void CloneHydroNetworkWithVariousBranchFeatures() { var network = new HydroNetwork(); var from = new HydroNode(); var to = new HydroNode(); network.Nodes.Add(from); network.Nodes.Add(to); var channel = new Channel { Source = from, Target = to }; network.Branches.Add(channel); var compositeBranchStructure = new CompositeBranchStructure(); NetworkHelper.AddBranchFeatureToBranch(channel, compositeBranchStructure, 0); HydroNetworkHelper.AddStructureToComposite(compositeBranchStructure, new Weir()); HydroNetworkHelper.AddStructureToComposite(compositeBranchStructure, new Pump()); NetworkHelper.AddBranchFeatureToBranch(channel, new CrossSection(), 0); var clonedHydroNetwork = (IHydroNetwork)network.Clone(); clonedHydroNetwork.CrossSections.Should().Have.Count.EqualTo(1); clonedHydroNetwork.CompositeBranchStructures.Should().Have.Count.EqualTo(1); clonedHydroNetwork.Weirs.Should().Have.Count.EqualTo(1); clonedHydroNetwork.Pumps.Should().Have.Count.EqualTo(1); }
public void Clone() { var node = new HydroNode("naam") { LongName = "Long" }; var clone = (HydroNode)node.Clone(); //todo expand to cover functionality Assert.AreEqual(node.LongName, clone.LongName); }
public void DetectAndUpdateBranchBoundaries() { var network = new HydroNetwork(); var branch1 = new Channel(); var node1 = new HydroNode(); var node2 = new HydroNode(); branch1.Source = node1; branch1.Target = node2; network.Branches.Add(branch1); network.Nodes.Add(node1); network.Nodes.Add(node2); Assert.IsTrue(node1.IsBoundaryNode); Assert.IsTrue(node2.IsBoundaryNode); }
/// <summary> /// Creates a simple test network of 1 branch amd 2 nodes. The branch has '3' parts, in the center of /// the first aand last is a cross section. /// n /// / /// / /// cs /// / /// -------/ /// / /// cs /// / /// n /// </summary> /// <returns></returns> private static IHydroNetwork CreateTestNetwork() { var network = new Hydro.HydroNetwork(); var branch1 = new Channel { Geometry = new LineString(new[] { new Coordinate(0, 0), new Coordinate(30, 40), new Coordinate(70, 40), new Coordinate(100, 100) }) }; var node1 = new HydroNode { Network = network, Geometry = new Point(new Coordinate(0, 0)) }; var node2 = new HydroNode { Network = network, Geometry = new Point(new Coordinate(100, 100)) }; network.Branches.Add(branch1); network.Nodes.Add(node1); network.Nodes.Add(node2); var crossSection1 = new CrossSection { Geometry = new LineString(new[] { new Coordinate(15, 20), new Coordinate(15, 20) }) }; double offset1 = Math.Sqrt(15 * 15 + 20 * 20); crossSection1.Offset = offset1; var crossSection2 = new CrossSection { Geometry = new LineString(new[] { new Coordinate(85, 70), new Coordinate(85, 70) }) }; double offset2 = Math.Sqrt(30 * 30 + 40 * 40) + 40 + Math.Sqrt(15 * 15 + 20 * 20); crossSection2.Offset = offset2; branch1.Source = node1; branch1.Target = node2; NetworkHelper.AddBranchFeatureToBranch(branch1, crossSection1, crossSection1.Offset); NetworkHelper.AddBranchFeatureToBranch(branch1, crossSection2, crossSection2.Offset); return(network); }
public void CloneHydroNetworkWithCrossSection() { var network = new HydroNetwork(); var from = new HydroNode(); var to = new HydroNode(); network.Nodes.Add(from); network.Nodes.Add(to); var channel = new Channel { Source = from, Target = to }; network.Branches.Add(channel); NetworkHelper.AddBranchFeatureToBranch(channel, new CrossSection(), 0); var clonedHydroNetwork = (IHydroNetwork)network.Clone(); clonedHydroNetwork.CrossSections.Should().Have.Count.EqualTo(1); }
public void CloneHydroNetworkWithCrossSectionSectionTypes() { var network = new HydroNetwork(); var crossSectionSectionType = new CrossSectionSectionType { Name = "Jan" }; network.CrossSectionSectionTypes.Add(crossSectionSectionType); crossSectionSectionType.Id = 666;//debug easy by idd var from = new HydroNode(); var to = new HydroNode(); network.Nodes.Add(from); network.Nodes.Add(to); var channel = new Channel { Source = from, Target = to }; network.Branches.Add(channel); var crossSectionXYZ = new CrossSectionDefinitionXYZ { Geometry = new LineString(new[] { new Coordinate(0, 0), new Coordinate(10, 0) }) }; crossSectionXYZ.Sections.Add(new CrossSectionSection { SectionType = crossSectionSectionType }); HydroNetworkHelper.AddCrossSectionDefinitionToBranch(channel, crossSectionXYZ, 0); var clonedHydroNetwork = (IHydroNetwork)network.Clone(); clonedHydroNetwork.CrossSections.Should().Have.Count.EqualTo(1); var cloneCrossSection = clonedHydroNetwork.CrossSections.FirstOrDefault(); var clonedType = clonedHydroNetwork.CrossSectionSectionTypes.FirstOrDefault(t => t.Name == "Jan"); //the type should be cloned Assert.AreNotEqual(clonedType, crossSectionSectionType); //the crosssection reference should be updated to use the cloned type Assert.AreEqual(clonedType, cloneCrossSection.Definition.Sections[0].SectionType); }
public void CloneHydroNetwork() { var network = new HydroNetwork(); var from = new HydroNode(); var to = new HydroNode(); network.Nodes.Add(from); network.Nodes.Add(to); var channel = new Channel { Source = from, Target = to }; network.Branches.Add(channel); var clonedHydroNetwork = (IHydroNetwork)network.Clone(); clonedHydroNetwork.GetType().Should().Be.EqualTo(typeof(HydroNetwork)); clonedHydroNetwork.Branches.Count.Should().Be.EqualTo(1); clonedHydroNetwork.Nodes.Count.Should().Be.EqualTo(2); }
public void AddManyBranchesWithSimpleBranchFeature() { DateTime t = DateTime.Now; const int count = 10000; var network = new HydroNetwork(); for (int i = 0; i < count; i++) { var from = new HydroNode(); var to = new HydroNode(); network.Nodes.Add(from); network.Nodes.Add(to); var channel = new Channel { Source = from, Target = to }; var compositeBranchStructure = new CompositeBranchStructure(); NetworkHelper.AddBranchFeatureToBranch(channel, compositeBranchStructure, 0); HydroNetworkHelper.AddStructureToComposite(compositeBranchStructure, new Weir()); network.Branches.Add(channel); } int weirCount = 0; foreach (IWeir weir in network.Weirs) // access all Weirs should be also fast { weirCount++; } TimeSpan dt = DateTime.Now - t; log.InfoFormat("Added {0} branches with {1} weirs in {2} sec", count, weirCount, dt.TotalSeconds); // 20091029 set to 5 seconds; original test only added weirs and created an invalid hydronetwork Assert.LessOrEqual(dt.TotalSeconds, 2.7); }
public void CloneHydroNetworkWithCrossSection() { var network = new HydroNetwork(); var from = new HydroNode(); var to = new HydroNode(); network.Nodes.Add(from); network.Nodes.Add(to); var channel = new Channel { Source = from, Target = to }; network.Branches.Add(channel); var crossSectionXYZ = new CrossSectionDefinitionXYZ { Geometry = new LineString(new[] { new Coordinate(0, 0), new Coordinate(10, 0) }) }; HydroNetworkHelper.AddCrossSectionDefinitionToBranch(channel, crossSectionXYZ, 0); var clonedHydroNetwork = (IHydroNetwork)network.Clone(); clonedHydroNetwork.CrossSections.Should().Have.Count.EqualTo(1); }
/// <summary> /// Creates a simple test network of 1 branch amd 2 nodes. The branch has '3' parts, in the center of /// the first aand last is a cross section. /// n /// / /// / /// cs /// / /// -------/ /// / /// cs /// / /// n /// </summary> /// <returns></returns> private static IHydroNetwork CreateSegmentTestNetwork() { var network = new Hydro.HydroNetwork(); var branch1 = new Channel { Geometry = new LineString(new[] { new Coordinate(0, 0), new Coordinate(0, 100), }) }; var node1 = new HydroNode { Network = network, Geometry = new Point(new Coordinate(0, 0)) }; var node2 = new HydroNode { Network = network, Geometry = new Point(new Coordinate(100, 0)) }; network.Branches.Add(branch1); network.Nodes.Add(node1); network.Nodes.Add(node2); branch1.Source = node1; branch1.Target = node2; return network; }
public void AddManyBranchesWithSimpleBranchFeature() { DateTime t = DateTime.Now; const int count = 10000; var network = new HydroNetwork(); for (int i = 0; i < count; i++) { var from = new HydroNode(); var to = new HydroNode(); network.Nodes.Add(from); network.Nodes.Add(to); var channel = new Channel {Source = from, Target = to}; var compositeBranchStructure = new CompositeBranchStructure(); NetworkHelper.AddBranchFeatureToBranch(channel, compositeBranchStructure, 0); HydroNetworkHelper.AddStructureToComposite(compositeBranchStructure, new Weir()); network.Branches.Add(channel); } int weirCount = 0; foreach (IWeir weir in network.Weirs) // access all Weirs should be also fast { weirCount++; } TimeSpan dt = DateTime.Now - t; log.InfoFormat("Added {0} branches with {1} weirs in {2} sec", count, weirCount, dt.TotalSeconds); // 20091029 set to 5 seconds; original test only added weirs and created an invalid hydronetwork Assert.LessOrEqual(dt.TotalSeconds, 2.7); }
public void CloneHydroNetwork() { var network = new HydroNetwork(); var from = new HydroNode(); var to = new HydroNode(); network.Nodes.Add(from); network.Nodes.Add(to); var channel = new Channel {Source = from, Target = to}; network.Branches.Add(channel); var clonedHydroNetwork = (IHydroNetwork) network.Clone(); clonedHydroNetwork.GetType().Should().Be.EqualTo(typeof (HydroNetwork)); clonedHydroNetwork.Branches.Count.Should().Be.EqualTo(1); clonedHydroNetwork.Nodes.Count.Should().Be.EqualTo(2); }
public void CloneHydroNetworkWithCrossSection() { var network = new HydroNetwork(); var from = new HydroNode(); var to = new HydroNode(); network.Nodes.Add(from); network.Nodes.Add(to); var channel = new Channel {Source = from, Target = to}; network.Branches.Add(channel); NetworkHelper.AddBranchFeatureToBranch(channel, new CrossSection(), 0); var clonedHydroNetwork = (IHydroNetwork) network.Clone(); clonedHydroNetwork.CrossSections.Should().Have.Count.EqualTo(1); }
public void CloneHydroNetworkWithVariousBranchFeatures() { var network = new HydroNetwork(); var from = new HydroNode(); var to = new HydroNode(); network.Nodes.Add(from); network.Nodes.Add(to); var channel = new Channel {Source = from, Target = to}; network.Branches.Add(channel); var compositeBranchStructure = new CompositeBranchStructure(); NetworkHelper.AddBranchFeatureToBranch(channel, compositeBranchStructure, 0); HydroNetworkHelper.AddStructureToComposite(compositeBranchStructure, new Weir()); HydroNetworkHelper.AddStructureToComposite(compositeBranchStructure, new Pump()); NetworkHelper.AddBranchFeatureToBranch(channel, new CrossSection(), 0); var clonedHydroNetwork = (IHydroNetwork) network.Clone(); clonedHydroNetwork.CrossSections.Should().Have.Count.EqualTo(1); clonedHydroNetwork.CompositeBranchStructures.Should().Have.Count.EqualTo(1); clonedHydroNetwork.Weirs.Should().Have.Count.EqualTo(1); clonedHydroNetwork.Pumps.Should().Have.Count.EqualTo(1); }