public void ElementEqualsPositiveTest()
        {
            var se1 = new SetElement <int>(1);
            var se2 = new SetElement <int>(1);

            Assert.IsTrue(se1.Equals(se2));
        }
        public void ElementEqualsSetNegativeTest()
        {
            var se1 = new SetElement <int>(1);
            var s1  = new Set <int>();

            Assert.IsFalse(se1.Equals(s1));
        }
        public void ElementEqualsNegativeTest()
        {
            var se1 = new SetElement <int>(1);
            var se2 = new SetElement <int>(2);

            Assert.IsFalse(se1.Equals(se2));
        }
        /// <summary>
        /// Run the delegates for Element and Diagram for the current element.
        /// - changeScope.Item   Only Element itself and Diagrams of element, not beneath element
        /// - changeScope...     Element and all beneath Element
        /// </summary>
        /// <param name="rep"></param>
        /// <param name="el"></param>
        /// <param name="setEl"></param>
        /// <param name="setDia"></param>
        /// <param name="parameterStrings"></param>
        /// <param name="changeScope"></param>
        public static void DoRecursiveEl(Repository rep, EA.Element el, SetElement setEl, SetDiagram setDia,
                                         string[] parameterStrings, ChangeScope changeScope)
        {
            // perform change for element
            setEl?.Invoke(rep, el, parameterStrings);

            // perform changes for diagrams beneath element
            foreach (EA.Diagram dia in el.Diagrams)
            {
                if (dia != null)
                {
                    setDia?.Invoke(rep, dia, parameterStrings);
                }
            }
            // only the item itself, no recursion
            if (changeScope == ChangeScope.Item)
            {
                return;
            }

            //run all elements
            foreach (EA.Element elTrgt in el.Elements)
            {
                DoRecursiveEl(rep, elTrgt, setEl, setDia, parameterStrings, changeScope);
            }
        }
        public void SetContainsElementNegativeTest()
        {
            var s1  = new Set <int>();
            var se1 = new SetElement <int>(1);

            Assert.IsFalse(s1.Contains(se1));
        }
        /// <summary>
        /// Determines if the set contains a specific value.
        /// </summary>
        public bool Contains(T item)
        {
            SetElement cursor = head;

            if (cursor != null)
            {
                while (item.CompareTo(cursor.Value) != 0)
                {
                    if (item.CompareTo(cursor.Value) < 0)
                    {
                        if (cursor.Left == null)
                        {
                            return(false);
                        }
                        cursor = cursor.Left;
                    }
                    else if (item.CompareTo(cursor.Value) > 0)
                    {
                        if (cursor.Right == null)
                        {
                            return(false);
                        }
                        cursor = cursor.Right;
                    }
                }
                return(true);
            }
            return(false);
        }
Beispiel #7
0
            public SetElement MakeSet(T value)
            {
                SetElement element = new SetElement(value);

                dict[value] = element;
                return(element);
            }
        /// <summary>
        /// Удаляет первое вхождение указанного объекта из множества
        /// </summary>
        /// <param name="item"> Объект, который необходимо удалить из множества</param>
        /// <returns> Значение true, если объект item успешно удален из множества;
        /// в противном случае и если значение item не найдено — значение false </returns>
        public bool Remove(T item)
        {
            if (!Contains(item))
            {
                return(false);
            }
            var temp = head;

            if (Equals(temp.value, item))
            {
                head = head.next;
                Count--;
                return(true);
            }
            while (!Equals(temp.next.value, item))
            {
                temp = temp.next;
            }
            if (temp.next.next == null)
            {
                temp.next = null;
            }
            else
            {
                temp.next = temp.next.next;
            }
            Count--;
            return(true);
        }
Beispiel #9
0
        public void ElementContainsTest()
        {
            var se1 = new SetElement <int>(1);
            var se2 = new SetElement <int>(2);

            Assert.IsFalse(se1.Contains(se2));
        }
        public void Remove(T value)
        {
            if (this.head == null)
            {
                throw new EmptySetException("Set is empty");
            }

            if (this.head.Value.Equals(value))
            {
                this.head = this.head.Next;
                return;
            }

            SetElement i = this.head;

            while (i.Next != null)
            {
                if (i.Next.Value.Equals(value))
                {
                    i.Next = i.Next.Next;
                    return;
                }

                i = i.Next;
            }

            throw new NonExistentItemException("there is no element with the specified value in the Set");
        }
        public bool Contains(T value)
        {
            if (this.head == null)
            {
                return(false);
            }

            if (this.head.Value.Equals(value))
            {
                return(true);
            }

            SetElement i = this.head;

            while (i.Next != null)
            {
                i = i.Next;
                if (i.Value.Equals(value))
                {
                    return(true);
                }
            }

            return(false);
        }
Beispiel #12
0
        public void SetContainsElementPositiveTest()
        {
            var s1  = new Set <int>();
            var se1 = new SetElement <int>(1);

            s1.Add(se1);
            Assert.IsTrue(s1.Contains(se1));
        }
Beispiel #13
0
 /// <summary cref="IValueVisitor.Visit(SetElement)"/>
 public void Visit(SetElement value)
 {
     if (!value.TryResolveConstantIndex(out int index))
     {
         throw new InvalidCodeGenerationException();
     }
     MakeCompoundRegisterStore(value, index, value.Value);
 }
Beispiel #14
0
        public void VertexElementEqualityPositiveTest()
        {
            var vertex1 = new Vertex();
            var el1     = new SetElement <Vertex>(vertex1);
            var el2     = new SetElement <Vertex>(vertex1);

            Assert.IsTrue(el1.Equals(el2));
        }
 private SetElement MinimumElement(SetElement setElement)
 {
     if (setElement.Left == null)
     {
         return(setElement);
     }
     return(MinimumElement(setElement.Left));
 }
Beispiel #16
0
        public void VertexElementEqualityNegativeTest()
        {
            var vertex1 = new Vertex();
            var el1     = new SetElement <Vertex>(vertex1);
            var vertex2 = new Vertex();
            var el2     = new SetElement <Vertex>(vertex2);

            Assert.IsFalse(el1.Equals(el2));
        }
        private static T GetMinimumDataFromCurrentSetElement(SetElement currentSetElement)
        {
            while (currentSetElement.LeftSetElement != null)
            {
                currentSetElement = currentSetElement.LeftSetElement;
            }

            return(currentSetElement.Data);
        }
 public static void DoRecursiveEl(EA.Repository rep, EA.Element el, SetElement setEl, SetDiagram setDia, string[] s)
 {
     // perform
     setEl(rep, el, s);
     //run all elements
     foreach (EA.Element elTrgt in el.Elements)
     {
         DoRecursiveEl(rep, elTrgt, setEl, setDia, s);
     }
 }
Beispiel #19
0
 public static void DoRecursiveEl(EA.Repository rep, EA.Element el, SetElement setEl, SetDiagram setDia, string[] s)
 {
     // perform
     setEl(rep, el, s);
     //run all elements
     foreach (EA.Element elTrgt in el.Elements)
     {
         DoRecursiveEl(rep, elTrgt, setEl, setDia, s);
     }
 }
Beispiel #20
0
        public void SetEqualsNegativeTest()
        {
            var s1  = new Set <int>();
            var se1 = new SetElement <int>(1);

            s1.Add(se1);
            var s2 = new Set <int>();

            Assert.IsFalse(s1.Equals(s2));
        }
Beispiel #21
0
        public void EdgeElementEqualityPositiveTest()
        {
            var vertex1 = new Vertex();
            var vertex2 = new Vertex();
            var el1     = new SetElement <Tuple2 <Vertex, Vertex> >(new Tuple2 <Vertex, Vertex>(vertex1,
                                                                                                vertex2));
            var el2 = new SetElement <Tuple2 <Vertex, Vertex> >(new Tuple2 <Vertex, Vertex>(vertex1,
                                                                                            vertex2));

            Assert.IsTrue(el1.Equals(el2));
        }
Beispiel #22
0
        public void SetEqualsPositiveTest()
        {
            var s1  = new Set <int>();
            var se1 = new SetElement <int>(1);

            s1.Add(se1);
            var s2 = new Set <int>();

            s2.Add(se1);
            Assert.IsTrue(s1.Equals(s2));
        }
Beispiel #23
0
        public SetElement AddSet(double x, double value)
        {
            var set = new SetElement
            {
                X     = x,
                Value = value
            };

            Add(set);
            return(set);
        }
        /// <summary>
        /// Изменяет текущий набор таким образом, чтобы он содержал только элементы, которые есть либо в нем, либо в указанной коллекции, но не одновременно там и там
        /// </summary>
        /// <param name="other"> Коллекция для сравнения с текущим набором</param>
        public void SymmetricExceptWith(IEnumerable <T> other)
        {
            var setNew  = this;
            var setTemp = new Set <T>();

            setTemp.UnionWith(setNew);
            setNew.UnionWith(other);
            setTemp.IntersectWith(other);
            setNew.ExceptWith(setTemp);
            head  = setNew.head;
            Count = setNew.Count;
        }
 private SetElement DeleteElementFromSet(SetElement setElement, T item)
 {
     if (setElement == null)
     {
         return(setElement);
     }
     if (item.CompareTo(setElement.Value) < 0)
     {
         setElement.Left = DeleteElementFromSet(setElement.Left, item);
     }
     else if (item.CompareTo(setElement.Value) > 0)
     {
         setElement.Right = DeleteElementFromSet(setElement.Right, item);
     }
     else if (setElement.Left != null && setElement.Right != null)
     {
         SetElement tempElement = MinimumElement(setElement.Right);
         setElement.Value = tempElement.Value;
         setElement.Right = DeleteElementFromSet(setElement.Right, setElement.Value);
     }
     else
     {
         if (setElement.Left != null)
         {
             SetElement tempElement = setElement;
             setElement = setElement.Left;
             if (head == tempElement)
             {
                 head = setElement;
             }
         }
         else if (setElement.Right != null)
         {
             SetElement tempElement = setElement;
             setElement = setElement.Right;
             if (head == tempElement)
             {
                 head = setElement;
             }
         }
         else
         {
             SetElement tempElement = setElement;
             setElement = null;
             if (head == tempElement)
             {
                 head = setElement;
             }
         }
     }
     return(setElement);
 }
        public void Add(T value)
        {
            SetElement newElement = new SetElement(value);

            if (this.head == null)
            {
                this.head = newElement;
                return;
            }

            newElement.Next = this.head;
            this.head       = newElement;
        }
        /// <summary>
        /// Изменяет текущий набор, чтобы он содержал только элементы, которые также имеются в заданной коллекции
        /// </summary>
        /// <param name="other"> Коллекция, с которой сравнивают</param>
        public void IntersectWith(IEnumerable <T> other)
        {
            var setNew = new Set <T>();

            foreach (var element in other)
            {
                if (Contains(element))
                {
                    setNew.Add(element);
                }
            }
            head  = setNew.head;
            Count = setNew.Count;
        }
        public void Print()
        {
            if (this.head == null)
            {
                Console.WriteLine("Set is empty");
            }

            SetElement i = this.head;

            while (i != null)
            {
                Console.WriteLine(i.Value + " ");
                i = i.Next;
            }
        }
Beispiel #29
0
 public SetElement Union(SetElement root1, SetElement root2)
 {
     if (root2.Size > root1.Size)
     {
         root2.Size  += root1.Size;
         root1.Parent = root2;
         return(root2);
     }
     else
     {
         root1.Size  += root2.Size;
         root2.Parent = root1;
         return(root1);
     }
 }
    override public string ToString()
    {
        StringBuilder sb = new StringBuilder();
        HashSet <T>   already_printed = new HashSet <T>();

        foreach (T v in dict.Keys)
        {
            SetElement r = Find(v);
            if (!already_printed.Contains(r.value))
            {
                sb.Append(r.value.ToString() + " : " + r.size + "\n");
                already_printed.Add(r.value);
            }
        }
        return(sb.ToString());
    }
        /// <summary>
        /// Adds an item to the current set and returns a value indicating that the item was added successfully.
        /// </summary>
        public bool Add(T item)
        {
            ++count;
            var newElement = new SetElement
            {
                Value = item
            };

            SetElement cursor = head;

            if (cursor != null)
            {
                while (true)
                {
                    if (item.CompareTo(cursor.Value) < 0)
                    {
                        if (cursor.Left == null)
                        {
                            cursor.Left       = newElement;
                            newElement.Parent = cursor;
                            break;
                        }
                        cursor = cursor.Left;
                    }
                    else if (item.CompareTo(cursor.Value) > 0)
                    {
                        if (cursor.Right == null)
                        {
                            cursor.Right      = newElement;
                            newElement.Parent = cursor;
                            break;
                        }
                        cursor = cursor.Right;
                    }
                    else
                    {
                        --count;
                        return(false);
                    }
                }
            }
            else
            {
                head = newElement;
            }
            return(true);
        }
        public static void DoRecursivePkg(EA.Repository rep, EA.Package pkg, SetPackage setPkg, SetElement setEl, SetDiagram setDia, string[] s)
        {
            // perform package
            setPkg?.Invoke(rep, pkg, s);

            // perform diagrams of package
            foreach (EA.Diagram dia in pkg.Diagrams)
            {
                if (dia != null) setDia(rep, dia, s);
            }
            // run elements of package
            foreach (EA.Element el in pkg.Elements)
            {
                if (setEl != null) DoRecursiveEl(rep, el, setEl, setDia, s);
            }
            
            // run packages of package
            foreach (EA.Package pkgTrgt in pkg.Packages)
            {
                DoRecursivePkg(rep, pkgTrgt, setPkg, setEl, setDia, s);
            }
        }
Beispiel #33
0
        public static Path FromFile(string filename, Ship ship)
        {
            ushort speed = (ushort)ship.Status.WalkingSpeed;
            float lastx = ship.Position.x;
            float lasty = ship.Position.y;
            float lastz = ship.Position.z;
            Rotator lastyaw = ship.Yaw;
            Path path = new Path();
            using (FileStream fs = new FileStream(filename, FileMode.Open, FileAccess.Read))
            using (XmlTextReader reader = new XmlTextReader(fs))
            {
                while (reader.Read())
                {
                    switch (reader.NodeType)
                    {
                        case XmlNodeType.Element:
                            switch (reader.Name.ToUpperInvariant())
                            {
                                case "POINT":
                                    lastx = float.Parse(reader["x"], CultureInfo.InvariantCulture);
                                    lasty = float.Parse(reader["y"], CultureInfo.InvariantCulture);
                                    lastz = float.Parse(reader["z"], CultureInfo.InvariantCulture);
                                    lastyaw = int.Parse(reader["yaw"], CultureInfo.InvariantCulture);
                                    PointElement p = new PointElement(path,
                                        lastx, lasty, lastz, lastyaw);
                                    break;

                                case "RESETPOSITION":
                                    lastx = float.Parse(reader["x"], CultureInfo.InvariantCulture);
                                    lasty = float.Parse(reader["y"], CultureInfo.InvariantCulture);
                                    lastz = float.Parse(reader["z"], CultureInfo.InvariantCulture);
                                    lastyaw = int.Parse(reader["yaw"], CultureInfo.InvariantCulture);
                                    ResetElement r = new ResetElement(path,
                                        lastx, lasty, lastz, lastyaw);
                                    break;

                                case "SET":
                                    speed = ushort.Parse(reader["speed"], CultureInfo.InvariantCulture);
                                    SetElement s = new SetElement(path, speed);
                                    break;

                                case "SHIPYARD":
                                    ShipYard y = new ShipYard(path,
                                        new Point(lastx, lasty, lastz), lastyaw,
                                        new Point(
                                        float.Parse(reader["x"], CultureInfo.InvariantCulture),
                                        float.Parse(reader["y"], CultureInfo.InvariantCulture),
                                        float.Parse(reader["z"], CultureInfo.InvariantCulture)),
                                        byte.Parse(reader["to"], CultureInfo.InvariantCulture),
                                        uint.Parse(reader["shiptime"], CultureInfo.InvariantCulture),
                                        uint.Parse(reader["docktime"], CultureInfo.InvariantCulture));
                                    break;

                                case "START":
                                    ship.Position = new Point(lastx, lasty, lastz);
                                    ship.Yaw = ship.Yaw;
                                    path.resetpoint = path.Elements.Count;
                                    ship.Status.WalkingSpeed = speed;
                                    break;
                            }
                            break;
                    }
                }
            }

            return path;
        }