Exemple #1
0
        public void Equality_SameEdge_IsTrue()
        {
            var edge  = new EdgeIdx(0);
            var other = new EdgeIdx(0);

            Assert.That(edge == other, Is.True);
        }
Exemple #2
0
        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--;
        }
Exemple #5
0
        public void ToString_FormattedAsDefined()
        {
            var edge = new EdgeIdx(42);

            Assert.That(edge.ToString(), Is.EqualTo("#42"));
        }
Exemple #6
0
        public void Equals_Null_IsFalse()
        {
            var edge = new EdgeIdx(0);

            Assert.That(edge.Equals(null), Is.False);
        }
Exemple #7
0
        public void Equals_SomeObject_IsFalse()
        {
            var edge = new EdgeIdx(0);

            Assert.That(edge.Equals(new object()), Is.False);
        }
Exemple #8
0
        public void Equals_OtherEdge_IsFalse()
        {
            var edge = new EdgeIdx(0);

            Assert.That(edge.Equals(new EdgeIdx(1)), Is.False);
        }
Exemple #9
0
        public void Equals_SameEdgeObject_IsTrue()
        {
            var edge = new EdgeIdx(0);

            Assert.That(edge.Equals((object)new EdgeIdx(0)), Is.True);
        }
Exemple #10
0
        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);
 }