예제 #1
0
        public void GetNextIdTest03()
        {
            // Test to make sure "GetNextId" returns the type it should.
            IdGenerator generator = new IdGenerator();
            uint firstNodeId = generator.GetNextId(ComponentType.Node);
            uint firstSlotId = generator.GetNextId(ComponentType.Slot);
            uint firstEdgeId = generator.GetNextId(ComponentType.Edge);
            uint firstBubbleId = generator.GetNextId(ComponentType.Bubble);

            Assert.AreEqual(ComponentType.Node, IdGenerator.GetType(firstNodeId));
            Assert.AreEqual(ComponentType.Slot, IdGenerator.GetType(firstSlotId));
            Assert.AreEqual(ComponentType.Edge, IdGenerator.GetType(firstEdgeId));
            Assert.AreEqual(ComponentType.Bubble, IdGenerator.GetType(firstBubbleId));
        }
예제 #2
0
        public void GetNextIdTest01()
        {
            // Test to make sure that fresh IdGenerator always start with '1'.
            IdGenerator generator = new IdGenerator();
            uint firstNodeId = generator.GetNextId(ComponentType.Node);
            uint firstSlotId = generator.GetNextId(ComponentType.Slot);
            uint firstEdgeId = generator.GetNextId(ComponentType.Edge);
            uint firstBubbleId = generator.GetNextId(ComponentType.Bubble);

            Assert.AreEqual((((uint)ComponentType.Node) | 0x01), firstNodeId);
            Assert.AreEqual((((uint)ComponentType.Slot) | 0x01), firstSlotId);
            Assert.AreEqual((((uint)ComponentType.Edge) | 0x01), firstEdgeId);
            Assert.AreEqual((((uint)ComponentType.Bubble) | 0x01), firstBubbleId);
        }
예제 #3
0
 public void GetNextIdTest04()
 {
     // Test to make sure "GetNextId" throws an exception for wrong input.
     Assert.Throws<ArgumentException>(() =>
     {
         IdGenerator generator = new IdGenerator();
         generator.GetNextId((ComponentType)1234);
     });
 }
예제 #4
0
        internal InfoBubble(IGraphController controller, uint nodeId)
        {
            this.graphController = controller as GraphController;
            this.nodeId          = nodeId;
            IdGenerator idGenerator = this.graphController.GetIdGenerator();

            this.bubbleId = idGenerator.GetNextId(ComponentType.Bubble);
            this.graphController.AddBubble(this);
        }
예제 #5
0
        protected VisualNode(IGraphController graphController, NodeType nodeType)
        {
            this.graphController = graphController as GraphController;
            IdGenerator idGenerator = this.graphController.GetIdGenerator();

            this.nodeType  = nodeType;
            this.version   = VisualNode.Version.Current;
            this.nodeId    = idGenerator.GetNextId(ComponentType.Node);
            this.nodeState = States.Visible;
            this.Dirty     = true;
            this.graphController.AddVisualNode(this);
        }
예제 #6
0
        /// <summary>
        /// Create a new slot
        /// </summary>
        /// <param name="gc">Owning graph controller</param>
        /// <param name="type">Input/Output slot</param>
        /// <param name="firstOwner">Node where there slot resides</param>
        internal Slot(IGraphController gc, SlotType type, IVisualNode firstOwner)
        {
            if (gc == null || firstOwner == null)
            {
                throw new ArgumentNullException();
            }

            this.graphController = gc as GraphController;
            Validity.Assert(this.graphController != null);
            IdGenerator idGenerator = this.graphController.GetIdGenerator();

            this.slotType  = type;
            this.version   = Slot.Version.Current;
            this.slotId    = idGenerator.GetNextId(ComponentType.Slot);
            this.slotState = SlotStates.Visible;
            this.owners.Add(firstOwner.NodeId);
        }
예제 #7
0
        public void GetNextIdTest02()
        {
            // Test to make sure that "GetNextId" always increase id by '1'.
            IdGenerator generator = new IdGenerator();
            uint firstNodeId = generator.GetNextId(ComponentType.Node);
            uint firstSlotId = generator.GetNextId(ComponentType.Slot);
            uint firstEdgeId = generator.GetNextId(ComponentType.Edge);
            uint firstBubbleId = generator.GetNextId(ComponentType.Bubble);

            uint secondNodeId = generator.GetNextId(ComponentType.Node);
            uint secondSlotId = generator.GetNextId(ComponentType.Slot);
            uint secondEdgeId = generator.GetNextId(ComponentType.Edge);
            uint secondBubbleId = generator.GetNextId(ComponentType.Bubble);

            Assert.AreEqual(1, secondNodeId - firstNodeId);
            Assert.AreEqual(1, secondSlotId - firstSlotId);
            Assert.AreEqual(1, secondEdgeId - firstEdgeId);
            Assert.AreEqual(1, secondBubbleId - firstBubbleId);
        }
예제 #8
0
        internal VisualEdge(EdgeController edgeController, uint startSlotId, uint endSlotId, bool isImplicit)
        {
            this.edgeController = edgeController;
            if (isImplicit)
            {
                this.EdgeType = EdgeType.ImplicitConnection;
            }
            else
            {
                this.EdgeType = EdgeType.ExplicitConnection;
            }
            this.version     = VisualEdge.Version.Current;
            this.StartSlotId = startSlotId;
            this.EndSlotId   = endSlotId;

            // Generate new ID for this visual edge.
            GraphController graphController = edgeController.GetGraphController();
            IdGenerator     idGenerator     = graphController.GetIdGenerator();

            this.EdgeId = idGenerator.GetNextId(ComponentType.Edge);

            controlPoints.Add(new Point());
            controlPoints.Add(new Point());
            controlPoints.Add(new Point());
            controlPoints.Add(new Point());

            GraphController controller = edgeController.GetGraphController();
            Slot            startSlot  = controller.GetSlot(this.StartSlotId) as Slot;
            Slot            endSlot    = controller.GetSlot(this.EndSlotId) as Slot;

            if (startSlot != null && endSlot != null)
            {
                Point startPoint = startSlot.GetPosition();
                Point endPoint   = endSlot.GetPosition();
                UpdateControlPoint(startPoint, endPoint, startSlot.SlotType != SlotType.Output);
            }
            else
            {
                throw new ArgumentNullException("startSlot or endSlot");
            }
        }
예제 #9
0
        public void SetStartIdTest01()
        {
            // Test to make sure the start id is properly set, and that
            // trying to get the next id returns the next higher number.
            IdGenerator generator = new IdGenerator();
            uint maxNodeId = (((uint)ComponentType.Node) | 0x1234);
            uint maxSlotId = (((uint)ComponentType.Slot) | 0x4567);
            uint maxEdgeId = (((uint)ComponentType.Edge) | 0x69ab);
            uint maxBubbleId = (((uint)ComponentType.Bubble) | 0x89ab);

            generator.SetStartId(maxNodeId);
            generator.SetStartId(maxSlotId);
            generator.SetStartId(maxEdgeId);
            generator.SetStartId(maxBubbleId);

            uint nextNodeId = generator.GetNextId(ComponentType.Node);
            uint nextSlotId = generator.GetNextId(ComponentType.Slot);
            uint nextEdgeId = generator.GetNextId(ComponentType.Edge);
            uint nextBubbleId = generator.GetNextId(ComponentType.Bubble);

            Assert.AreEqual(1, nextNodeId - maxNodeId);
            Assert.AreEqual(1, nextSlotId - maxSlotId);
            Assert.AreEqual(1, nextEdgeId - maxEdgeId);
            Assert.AreEqual(1, nextBubbleId - maxBubbleId);
        }
예제 #10
0
        public void TestEqual()
        {
            //same name, same line, equal
            IdGenerator idGenerator = new IdGenerator();
            uint slotId = idGenerator.GetNextId(ComponentType.Slot);

            VariableSlotInfo varSlotInfo1 = new VariableSlotInfo("a", 1, slotId);
            VariableSlotInfo varSlotInfo2 = new VariableSlotInfo("a", 1, slotId);
            Assert.AreEqual(varSlotInfo1, varSlotInfo2);
        }