blob: 5825e29f474f39ccdfee68485034b1362ab8dc93 [file]
#region License
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
#endregion
using System.Collections.Generic;
using Gremlin.Net.Structure;
using Xunit;
namespace Gremlin.Net.UnitTest.Structure
{
public class EdgeTests
{
[Fact]
public void ShouldAssignPropertiesCorrectly()
{
const int id = 2;
var outV = new Vertex(1);
const string edgeLabel = "said";
var inV = new Vertex("hello", "phrase");
var edge = new Edge(id, outV, edgeLabel, inV);
Assert.Equal(outV, edge.OutV);
Assert.Equal(inV, edge.InV);
Assert.Equal(edgeLabel, edge.Label);
Assert.NotEqual(edge.InV, edge.OutV);
}
[Fact]
public void ShouldReturnCommonStringRepresentationForToString()
{
var edge = new Edge(2, new Vertex(1), "said", new Vertex("hello", "phrase"));
var edgeStr = edge.ToString();
Assert.Equal("e[2][1-said->hello]", edgeStr);
}
[Fact]
public void ShouldGroupMultiPropertiesUnderOneKeyForPropertyMap()
{
var first = new Property("name", "marko");
var second = new Property("name", "marko a. rodriguez");
var edge = new Edge(2, new Vertex(1), "said", new Vertex("hello", "phrase"),
new dynamic[] {first, second});
var propertyMap = edge.PropertyMap();
Assert.Single(propertyMap);
Assert.True(propertyMap.ContainsKey("name"));
Assert.Equal(new List<Property> {first, second}, propertyMap["name"]);
}
[Fact]
public void ShouldGroupSingleValuedPropertiesIntoSingleElementListsForPropertyMap()
{
var since = new Property("since", 2009);
var weight = new Property("weight", 0.5);
var edge = new Edge(2, new Vertex(1), "said", new Vertex("hello", "phrase"),
new dynamic[] {since, weight});
var propertyMap = edge.PropertyMap();
Assert.Equal(2, propertyMap.Count);
Assert.Equal(new List<Property> {since}, propertyMap["since"]);
Assert.Equal(new List<Property> {weight}, propertyMap["weight"]);
}
[Fact]
public void ShouldReturnEmptyDictionaryForPropertyMapWhenNoProperties()
{
var edge = new Edge(2, new Vertex(1), "said", new Vertex("hello", "phrase"));
var propertyMap = edge.PropertyMap();
Assert.Empty(propertyMap);
}
}
}