public void Equality_SameEdge_IsTrue() { var edge = new EdgeIdx(0); var other = new EdgeIdx(0); Assert.That(edge == other, Is.True); }
public void Inequality_OtherEdge_IsTrue() { var edge = new EdgeIdx(0); var other = new EdgeIdx(1); Assert.That(edge != other, Is.True); }
public void AddInEdge(ref DynamicArrayBlockAllocator <EdgeIdx> links, ref int start, EdgeIdx edge) { if (start < 0) { start = links.Allocate(1); this.InDegree = 1; links[start] = edge; return; } var oldCapacity = this.OutDegree + this.InDegree; start = links.Resize(start, oldCapacity, oldCapacity + 1); links[start + oldCapacity] = edge; this.InDegree++; }
public void RemoveInEdge(ref DynamicArrayBlockAllocator <EdgeIdx> links, ref int start, EdgeIdx edge) { var oldCapacity = this.OutDegree + this.InDegree; var span = links.AsSpan(start + this.OutDegree, this.InDegree); var i = span.IndexOf(edge); span[i] = span[span.Length - 1]; if (oldCapacity == 1) { links.Deallocate(start, 1); start = -1; } else { start = links.Resize(start, oldCapacity, oldCapacity - 1); } this.InDegree--; }
public void ToString_FormattedAsDefined() { var edge = new EdgeIdx(42); Assert.That(edge.ToString(), Is.EqualTo("#42")); }
public void Equals_Null_IsFalse() { var edge = new EdgeIdx(0); Assert.That(edge.Equals(null), Is.False); }
public void Equals_SomeObject_IsFalse() { var edge = new EdgeIdx(0); Assert.That(edge.Equals(new object()), Is.False); }
public void Equals_OtherEdge_IsFalse() { var edge = new EdgeIdx(0); Assert.That(edge.Equals(new EdgeIdx(1)), Is.False); }
public void Equals_SameEdgeObject_IsTrue() { var edge = new EdgeIdx(0); Assert.That(edge.Equals((object)new EdgeIdx(0)), Is.True); }
public void Index_IsAsConstructed() { var edge = new EdgeIdx(42); Assert.That(edge.Index, Is.EqualTo(42)); }
public void RemoveInEdge(ref DynamicArrayBlockAllocator <EdgeIdx> links, ref int start, EdgeIdx edge) { this.RemoveOutEdge(ref links, ref start, Reverse(edge)); }
public static int GetIndex(EdgeIdx edge) { return(edge.Index ^ (edge.Index >> 31)); }
public static EdgeIdx Reverse(EdgeIdx edge) { return(new(~edge.Index)); }
public static bool IsReverse(EdgeIdx edge) { return(edge.Index < 0); }