public IEnumerator MovingAStackMovesStackedNodeConnectedFloatingNode([Values] TestingMode mode)
        {
            var stackModel0 = GraphModel.CreateStack(string.Empty, new Vector2(-100, -100));
            UnaryOperatorNodeModel  unary         = stackModel0.CreateStackedNode <UnaryOperatorNodeModel>("postDecr", setup: n => n.kind = UnaryOperatorKind.PostDecrement);
            BinaryOperatorNodeModel operatorModel = GraphModel.CreateBinaryOperatorNode(BinaryOperatorKind.Add, new Vector2(-100, -100));
            IConstantNodeModel      intModel      = GraphModel.CreateConstantNode("int", typeof(int).GenerateTypeHandle(GraphModel.Stencil), new Vector2(-150, -100));

            GraphModel.CreateEdge(unary.InputPort, operatorModel.OutputPort);
            GraphModel.CreateEdge(operatorModel.InputPortA, intModel.OutputPort);

            yield return(TestMove(mode,
                                  mouseDelta: new Vector2(20, 10),
                                  movedNodes: new INodeModel[] { stackModel0 },
                                  expectedMovedDependencies: new INodeModel[] { operatorModel, intModel }
                                  ));
        }
Ejemplo n.º 2
0
        static object[] MakeEdgeActionSetup <TAction>(TestContext ctx, int numEdges,
                                                      Func <VSGraphModel, TAction> getAction, State.UIRebuildType rebuildType = State.UIRebuildType.Partial)
            where TAction : IAction
        {
            Func <VSGraphModel, TAction> f = graphModel =>
            {
                ctx.InputPorts.Capacity  = numEdges;
                ctx.OutputPorts.Capacity = numEdges;
                ctx.InputPorts.Clear();
                ctx.OutputPorts.Clear();
                for (int i = 0; i < numEdges; i++)
                {
                    ConstantNodeModel      c  = (ConstantNodeModel)graphModel.CreateConstantNode("Const" + i, typeof(int).GenerateTypeHandle(graphModel.Stencil), Vector2.zero);
                    UnaryOperatorNodeModel op = graphModel.CreateUnaryOperatorNode(UnaryOperatorKind.Minus, Vector2.zero);
                    ctx.InputPorts.Add(op.InputPort as PortModel);
                    ctx.OutputPorts.Add(c.OutputPort as PortModel);
                }

                return(getAction(graphModel));
            };

            return(new object[] { typeof(TAction).Name, rebuildType, f });
        }
 public static IEnumerable <SyntaxNode> BuildUnaryOperator(this RoslynTranslator translator, UnaryOperatorNodeModel model, IPortModel portModel)
 {
     yield return(RoslynBuilder.UnaryOperator(model.kind, translator.BuildPort(model.InputPort).SingleOrDefault()));
 }
Ejemplo n.º 4
0
        public static IGraphElement CreateUnaryOperator(this ElementBuilder elementBuilder, IStore store, UnaryOperatorNodeModel model)
        {
            var ui = new Node();

            ui.Setup(model, store, elementBuilder.GraphView);
            ui.CustomSearcherHandler = (node, nStore, pos, _) =>
            {
                SearcherService.ShowEnumValues("Pick a new operator type", typeof(UnaryOperatorKind), pos, (pickedEnum, __) =>
                {
                    if (pickedEnum != null)
                    {
                        ((UnaryOperatorNodeModel)node.NodeModel).Kind = (UnaryOperatorKind)pickedEnum;
                        nStore.Dispatch(new RefreshUIAction(UpdateFlags.GraphTopology));
                    }
                });
                return(true);
            };
            return(ui);
        }
        public static IEnumerable <SyntaxNode> BuildUnaryOperator(this RoslynTranslator translator, UnaryOperatorNodeModel model, IPortModel portModel)
        {
            var semantic = model.Kind == UnaryOperatorKind.PostDecrement ||
                           model.Kind == UnaryOperatorKind.PostIncrement
                ? RoslynTranslator.PortSemantic.Write
                : RoslynTranslator.PortSemantic.Read;

            yield return(RoslynBuilder.UnaryOperator(model.Kind, translator.BuildPort(model.InputPort, semantic).SingleOrDefault()));
        }
 public static GraphElement CreateUnaryOperator(this INodeBuilder builder, Store store, UnaryOperatorNodeModel model)
 {
     return(new Node(model, store, builder.GraphView)
     {
         CustomSearcherHandler = (node, nStore, pos, _) =>
         {
             SearcherService.ShowEnumValues("Pick a new operator type", typeof(UnaryOperatorKind), pos, (pickedEnum, __) =>
             {
                 if (pickedEnum != null)
                 {
                     ((UnaryOperatorNodeModel)node.model).Kind = (UnaryOperatorKind)pickedEnum;
                     nStore.Dispatch(new RefreshUIAction(UpdateFlags.GraphTopology));
                 }
             });
             return true;
         }
     });
 }