public void OSMTagConstructorSetsKeyAndValue() { string key = "test-key"; string value = "test-value"; OSMTag target = new OSMTag(key, value); Assert.Equal(key, target.Key); Assert.Equal(value, target.Value); }
public void OSMTagsCollectionAddAddsOSMTag() { OSMTagsCollection target = new OSMTagsCollection(); OSMTag toAdd = new OSMTag("test-key", "test-value"); Assert.Equal(0, target.Count); target.Add(toAdd); Assert.Equal(1, target.Count); }
public void OSMTagsCollectionAddThrowsExceprionIfTagWithTheSameKeyIsAlreadyPresent() { OSMTagsCollection target = new OSMTagsCollection(); string key = "test-key"; OSMTag toAdd = new OSMTag(key, "test-value"); target.Add(toAdd); OSMTag anotherTag = new OSMTag(key, "some-value"); Assert.Throws<ArgumentException>(delegate { target.Add(anotherTag); }); }
public void OSMTagEqualsComparesKeyAndValue() { OSMTag target = new OSMTag("test-key", "test-value"); OSMTag equalsTarget = new OSMTag("test-key", "test-value"); Assert.True(target.Equals(equalsTarget)); OSMTag differentKeyTarget = new OSMTag("different-key", "test-value"); Assert.False(target.Equals(differentKeyTarget)); OSMTag differentValueTarget = new OSMTag("test-key", "different-value"); Assert.False(target.Equals(differentValueTarget)); }
/// <summary> /// Compares the current OSMTag object with the specified object for equivalence. /// </summary> /// <param name="obj">The object to test for equivalence with the current OSMTag object.</param> /// <returns>true if the objects are equal, otherwise returns false.</returns> public override bool Equals(object obj) { if (obj == null) { return(false); } if (obj is OSMTag) { OSMTag other = (OSMTag)obj; return(_key.Equals(other._key) && _value.Equals(other._value)); } else { return(base.Equals(obj)); } }
/// <summary> /// Splits ways at road crossings, check for oneway roads and save results in OSMDB /// </summary> /// <returns>OSMDB object with road segments and used nodes</returns> public OSMDB BuildRoutableOSM() { OSMDB result = new OSMDB(); int counter = -1; foreach (OSMRoad route in _storage.Ways) { OSMWay segment = new OSMWay(counter--); OSMTag wayIDTag = new OSMTag("way-id", route.ID.ToString()); OSMTag speedTag = new OSMTag("speed", route.Speed.ToString()); string wayAccessibility = route.IsAccessible() ? "yes" : "no"; OSMTag wayAccessibilityTag = new OSMTag("accessible", wayAccessibility); string wayAccessibilityReverse = route.IsAccessibleReverse() ? "yes" : "no"; OSMTag wayAccessibilityReverseTag = new OSMTag("accessible-reverse", wayAccessibilityReverse); for (int i = 0; i < route.Nodes.Count; i++) { segment.Nodes.Add(route.Nodes[i]); if ((UsedNodes[route.Nodes[i]].Count > 1) && (i > 0) && (i < (route.Nodes.Count - 1))) { segment.Tags.Add(wayIDTag); segment.Tags.Add(speedTag); segment.Tags.Add(wayAccessibilityTag); segment.Tags.Add(wayAccessibilityReverseTag); result.Ways.Add(segment); segment = new OSMWay(counter--); segment.Nodes.Add(route.Nodes[i]); } } segment.Tags.Add(wayIDTag); segment.Tags.Add(speedTag); segment.Tags.Add(wayAccessibilityTag); segment.Tags.Add(wayAccessibilityReverseTag); result.Ways.Add(segment); } foreach (OSMNode node in _storage.Nodes) { OSMNode newNode = new OSMNode(node.ID, node.Latitude, node.Longitude); // preserve junction and highway tags on nodes if (node.Tags.ContainsTag("junction")) { newNode.Tags.Add(node.Tags["junction"]); } if (node.Tags.ContainsTag("highway")) { newNode.Tags.Add(node.Tags["highway"]); } if (_usedNodes[node.ID].Count > 1) { newNode.Tags.Add(new OSMTag("crossroad", "yes")); } result.Nodes.Add(newNode); } return result; }
public void OSMTagGetHashCodeComputeHashFromKeyAndValue() { string key = "test-key"; string value = "test-value"; int expectedHashCode = unchecked( key.GetHashCode()*83 + value.GetHashCode() ); OSMTag target = new OSMTag(key, value); Assert.Equal(expectedHashCode, target.GetHashCode()); }
public void OSMTagToStringReturnsCorrectStringRepresentationOfTheObject() { string key = "test-key"; string value = "test-value"; string stringRepresentation = "test-key = test-value"; OSMTag target = new OSMTag(key, value); Assert.Equal(stringRepresentation, target.ToString()); }
public void OSMTagsCollectionImplementsIEnumerable() { OSMTagsCollection target = new OSMTagsCollection(); OSMTag first = new OSMTag("test-key", "test-value"); OSMTag second = new OSMTag("test-key-2", "another-test-value"); target.Add(first); target.Add(second); int counter = 0; foreach (var tag in target) { counter++; } Assert.Equal(2, counter); }
public void OSMTagsCollectionHasTagReturnsCorrectValues() { OSMTagsCollection target = new OSMTagsCollection(); string key = "test-key"; OSMTag toAdd = new OSMTag(key, "test-value"); target.Add(toAdd); Assert.True(target.ContainsTag(key)); Assert.False(target.ContainsTag("another-key")); }
public void OSMTagsCollectionStringIndexerThrowsExceptionIfKeyIsNotPresent() { OSMTagsCollection target = new OSMTagsCollection(); OSMTag toAdd = new OSMTag("test-key", "test-value"); target.Add(toAdd); Assert.Throws<ArgumentException>(delegate { OSMTag tag = target["another-key"]; }); }
public void OSMTagsCollectionStringIndexerReturnsCorrectOSMTagByKey() { OSMTagsCollection target = new OSMTagsCollection(); string key = "test-key"; OSMTag toAdd = new OSMTag(key, "test-value"); target.Add(toAdd); Assert.Same(toAdd, target[key]); }
public void OSMTagsCollectionRemoveReturnsFalseWhenRemovingItemFromEmptyCollection() { OSMTagsCollection target = new OSMTagsCollection(); OSMTag tag = new OSMTag("test-key", "test-value"); Assert.False(target.Remove(tag)); }
public void OSMTagsCollectionRemoveCanRemoveTagFromCollection() { OSMTagsCollection target = new OSMTagsCollection(); OSMTag tag = new OSMTag("test-key", "test-value"); target.Add(tag); Assert.True(target.Remove(tag)); Assert.Equal(0, target.Count); }
public void OSMTagsCollectionRemoveAllRemovesAllTagsFromTheCollection() { OSMTagsCollection target = new OSMTagsCollection(); OSMTag first = new OSMTag("test-key", "test-value"); OSMTag second = new OSMTag("test-key-2", "another-test-value"); target.Add(first); target.Add(second); target.RemoveAll(); Assert.Equal(0, target.Count); }