public override void Setup() { base.Setup(); liveRunner = new ProtoScript.Runners.LiveRunner(); liveRunner.ResetVMAndResyncGraph(new List<string> { "FFITarget.dll" }); runtimeCore = liveRunner.RuntimeCore; }
public void TestPreviewModify1Node02() { List <string> codes = new List <string>() { // guid1 @" a = 1; ", // guid2 @" x = a; y = x; ", // guid3 @" z = a; ", // guid1 @" a = 10; ", }; Guid guid1 = System.Guid.NewGuid(); Guid guid2 = System.Guid.NewGuid(); Guid guid3 = System.Guid.NewGuid(); // Create and run the graph ProtoScript.Runners.LiveRunner liveRunner = new ProtoScript.Runners.LiveRunner(); List <Subtree> added = new List <Subtree>(); added.Add(CreateSubTreeFromCode(guid1, codes[0])); added.Add(CreateSubTreeFromCode(guid2, codes[1])); added.Add(CreateSubTreeFromCode(guid3, codes[2])); var syncData = new GraphSyncData(null, added, null); liveRunner.UpdateGraph(syncData); // Modify [a = 1;] to [a = 10;] List <Subtree> modified = new List <Subtree>(); modified.Add(CreateSubTreeFromCode(guid1, codes[3])); syncData = new GraphSyncData(null, null, modified); // Get astlist from ChangeSetComputer ChangeSetComputer changeSetState = new ProtoScript.Runners.ChangeSetComputer(liveRunner.Core); List <AssociativeNode> astList = changeSetState.GetDeltaASTList(syncData); // Get the preview guids (affected graphs) List <Guid> reachableGuidList = changeSetState.EstimateNodesAffectedByASTList(astList); // Check if the the affected guids are in the list List <Guid> expectedGuid = new List <Guid> { guid2, guid3 }; AssertPreview(reachableGuidList, expectedGuid, 2); }
public ConvertNodesToCodeTask(List<SnapshotNode> snapshotNodes, LiveRunner runner) : base(runner) { if (null == snapshotNodes || (snapshotNodes.Count <= 0)) throw new ArgumentException("snapshotNodes", "Invalid SnapshotNode list (35CA7759D0C9)"); this.snapshotNodes = snapshotNodes; }
public ConvertNodesToCodeTask(List <SnapshotNode> snapshotNodes, LiveRunner runner) : base(runner) { if (null == snapshotNodes || (snapshotNodes.Count <= 0)) { throw new ArgumentException("snapshotNodes", "Invalid SnapshotNode list (35CA7759D0C9)"); } this.snapshotNodes = snapshotNodes; }
public void TestPreviewModify1Node01() { List<string> codes = new List<string>() { @" a = 1; ", @" x = a; y = x; ", @" a = 10; ", }; Guid guid1 = System.Guid.NewGuid(); Guid guid2 = System.Guid.NewGuid(); // Create and run the graph [a = 1;] and [x = a; y = x;] ProtoScript.Runners.LiveRunner liveRunner = new ProtoScript.Runners.LiveRunner(); List<Subtree> added = new List<Subtree>(); added.Add(CreateSubTreeFromCode(guid1, codes[0])); added.Add(CreateSubTreeFromCode(guid2, codes[1])); var syncData = new GraphSyncData(null, added, null); liveRunner.UpdateGraph(syncData); // Modify [a = 1;] to [a = 10;] List<Subtree> modified = new List<Subtree>(); modified.Add(CreateSubTreeFromCode(guid1, codes[2])); syncData = new GraphSyncData(null, null, modified); // Get astlist from ChangeSetComputer ChangeSetComputer changeSetState = new ProtoScript.Runners.ChangeSetComputer(liveRunner.Core); List<AssociativeNode> astList = changeSetState.GetDeltaASTList(syncData); // Get the the preview guids (affected graphs) List<Guid> reachableGuidList = changeSetState.EstimateNodesAffectedByASTList(astList); // Check if the the affected guids are in the list List<Guid> expectedGuid = new List<Guid>{guid2}; AssertPreview(reachableGuidList, expectedGuid, 1); }
public void GraphILTest_Assign01_AstInput() { // Build the AST trees ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("a"), new ProtoCore.AST.AssociativeAST.IntNode(10), ProtoCore.DSASM.Operator.assign); List<ProtoCore.AST.AssociativeAST.AssociativeNode> astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>(); astList.Add(assign); // Update graph using AST node input ProtoScript.Runners.ILiveRunner liveRunner = new ProtoScript.Runners.LiveRunner(); liveRunner.UpdateGraph(assign); ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("a"); Assert.IsTrue((Int64)mirror.GetData().Data == 10); }
public void GraphILTest_Assign01() { // Build the AST trees ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("a"), new ProtoCore.AST.AssociativeAST.IntNode(10), ProtoCore.DSASM.Operator.assign); List<ProtoCore.AST.AssociativeAST.AssociativeNode> astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>(); astList.Add(assign); // Instantiate GraphSyncData List<Subtree> addedList = new List<Subtree>(); addedList.Add(new Subtree(astList, System.Guid.NewGuid())); GraphSyncData syncData = new GraphSyncData(null, addedList, null); // emit the DS code from the AST tree ProtoScript.Runners.ILiveRunner liveRunner = new ProtoScript.Runners.LiveRunner(); liveRunner.UpdateGraph(syncData); ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("a"); Assert.IsTrue((Int64)mirror.GetData().Data == 10); }
public void TestDeltaExpressionFFI_02() { liveRunner = new ProtoScript.Runners.LiveRunner(); //string code = @"class Point{ X : double; constructor ByCoordinates(x : double, y : double, z : double){X = x;} def Translate(x : double, y : double, z : double){return = Point.ByCoordinates(11,12,13);} }"; //liveRunner.UpdateCmdLineInterpreter(code); liveRunner.UpdateCmdLineInterpreter(@"import (""FFITarget.dll"");"); liveRunner.UpdateCmdLineInterpreter("p = DummyPoint.ByCoordinates(10,10,10);"); ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("p"); //============================================== // Build a binary expression to retirieve the x property // xval = newPoint.X //============================================== liveRunner.UpdateCmdLineInterpreter("xval = p.X;"); mirror = liveRunner.InspectNodeValue("xval"); //============================================== // // import ("ProtoGeometry.dll"); // p = Point.Bycoordinates(10.0, 10.0, 10.0); // newPoint = p.Translate(1.0,2.0,3.0); // xval = newPoint.X; // //============================================== Assert.IsTrue((double)mirror.GetData().Data == 10.0); //============================================== // Translate the point // newPoint = p.Translate(1,2,3); //============================================== liveRunner.UpdateCmdLineInterpreter("p = p.Translate(1,2,3);"); mirror = liveRunner.InspectNodeValue("p"); mirror = liveRunner.InspectNodeValue("xval"); //============================================== // // import ("ProtoGeometry.dll"); // p = Point.Bycoordinates(10.0, 10.0, 10.0); // newPoint = p.Translate(1.0,2.0,3.0); // xval = newPoint.X; // //============================================== Assert.IsTrue((double)mirror.GetData().Data == 11.0); }
public void TestDeltaExpression_02() { liveRunner = new ProtoScript.Runners.LiveRunner(); // emit the DS code from the AST tree liveRunner.UpdateCmdLineInterpreter("x=99;"); ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("x"); Assert.IsTrue((Int64)mirror.GetData().Data == 99); //string o = liveRunner.GetCoreDump(); // emit the DS code from the AST tree liveRunner.UpdateCmdLineInterpreter("y=x;"); mirror = liveRunner.InspectNodeValue("y"); Assert.IsTrue((Int64)mirror.GetData().Data == 99); mirror = liveRunner.InspectNodeValue("x"); Assert.IsTrue((Int64)mirror.GetData().Data == 99); //string o = liveRunner.GetCoreDump(); // emit the DS code from the AST tree liveRunner.UpdateCmdLineInterpreter("x = 100;"); mirror = liveRunner.InspectNodeValue("x"); Assert.IsTrue((Int64)mirror.GetData().Data == 100); mirror = liveRunner.InspectNodeValue("y"); Assert.IsTrue((Int64)mirror.GetData().Data == 100); }
public void GraphILTest_ModifiedNode01() { //////////////////////////////////////////////////////////////////// // Adds nodes => c = 78; d = a; // Create subtree, execute // Adds nodes => a = 10; // Adds node => b = a; // Create subtree, execute // Modify subtree => a = b; // execute updated graph (cylcic dependency should not occur) //////////////////////////////////////////////////////////////////// liveRunner = new ProtoScript.Runners.LiveRunner(); List<ProtoCore.AST.AssociativeAST.AssociativeNode> astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>(); ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign0 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("c"), new ProtoCore.AST.AssociativeAST.IntNode(78), ProtoCore.DSASM.Operator.assign); astList.Add(assign0); assign0 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("d"), new ProtoCore.AST.AssociativeAST.IdentifierNode("a"), ProtoCore.DSASM.Operator.assign); astList.Add(assign0); List<Subtree> addedList = new List<Subtree>(); System.Guid guid0 = System.Guid.NewGuid(); addedList.Add(new Subtree(astList, guid0)); GraphSyncData syncData = new GraphSyncData(null, addedList, null); // emit the DS code from the AST tree liveRunner.UpdateGraph(syncData); ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("c"); Assert.IsTrue((Int64)mirror.GetData().Data == 78); mirror = liveRunner.InspectNodeValue("d"); Assert.IsTrue(mirror.GetData().IsNull); // Build the AST trees astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>(); ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign1 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("a"), new ProtoCore.AST.AssociativeAST.IntNode(10), ProtoCore.DSASM.Operator.assign); astList.Add(assign1); ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign2 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("b"), new ProtoCore.AST.AssociativeAST.IdentifierNode("a"), ProtoCore.DSASM.Operator.assign); astList.Add(assign2); addedList = new List<Subtree>(); System.Guid guid1 = System.Guid.NewGuid(); addedList.Add(new Subtree(astList, guid1)); syncData = new GraphSyncData(null, addedList, null); // emit the DS code from the AST tree liveRunner.UpdateGraph(syncData); mirror = liveRunner.InspectNodeValue("a"); Assert.IsTrue((Int64)mirror.GetData().Data == 10); mirror = liveRunner.InspectNodeValue("b"); Assert.IsTrue((Int64)mirror.GetData().Data == 10); mirror = liveRunner.InspectNodeValue("c"); Assert.IsTrue((Int64)mirror.GetData().Data == 78); mirror = liveRunner.InspectNodeValue("d"); Assert.IsTrue((Int64)mirror.GetData().Data == 10); astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>(); ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign3 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("a"), new ProtoCore.AST.AssociativeAST.IdentifierNode("b"), ProtoCore.DSASM.Operator.assign); astList.Add(assign3); List<Subtree> modifiedList = new List<Subtree>(); modifiedList.Add(new Subtree(astList, guid1)); syncData = new GraphSyncData(null, null, modifiedList); // emit the DS code from the AST tree liveRunner.UpdateGraph(syncData); mirror = liveRunner.InspectNodeValue("a"); Assert.IsTrue((Int64)mirror.GetData().Data == 10); mirror = liveRunner.InspectNodeValue("b"); Assert.IsTrue((Int64)mirror.GetData().Data == 10); mirror = liveRunner.InspectNodeValue("c"); Assert.IsTrue((Int64)mirror.GetData().Data == 78); mirror = liveRunner.InspectNodeValue("d"); Assert.IsTrue((Int64)mirror.GetData().Data == 10); }
public void GraphILTest_Assign04_astInput() { //////////////////////////////////////////////////////////////////// // Adds nodes => a = 10; // executes it // Adds node => c = 20; // executes it // Adds node => b = a + c; // executes it //////////////////////////////////////////////////////////////////// liveRunner = new ProtoScript.Runners.LiveRunner(); // Build the AST trees ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign1 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("a"), new ProtoCore.AST.AssociativeAST.IntNode(10), ProtoCore.DSASM.Operator.assign); // update graph liveRunner.UpdateGraph(assign1); ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("a"); Assert.IsTrue((Int64)mirror.GetData().Data == 10); ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign2 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("c"), new ProtoCore.AST.AssociativeAST.IntNode(20), ProtoCore.DSASM.Operator.assign); // update graph liveRunner.UpdateGraph(assign2); mirror = liveRunner.InspectNodeValue("a"); Assert.IsTrue((Int64)mirror.GetData().Data == 10); mirror = liveRunner.InspectNodeValue("c"); Assert.IsTrue((Int64)mirror.GetData().Data == 20); ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign3 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("b"), new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("a"), new ProtoCore.AST.AssociativeAST.IdentifierNode("c"), ProtoCore.DSASM.Operator.add), ProtoCore.DSASM.Operator.assign); // update graph liveRunner.UpdateGraph(assign3); mirror = liveRunner.InspectNodeValue("a"); Assert.IsTrue((Int64)mirror.GetData().Data == 10); mirror = liveRunner.InspectNodeValue("c"); Assert.IsTrue((Int64)mirror.GetData().Data == 20); mirror = liveRunner.InspectNodeValue("b"); Assert.IsTrue((Int64)mirror.GetData().Data == 30); }
public void GraphILTest_Assign02_AstInput() { //////////////////////////////////////////////////////////////////// // Adds a node => a = 10 + 20; // Creates Subtree and sync data and executes it via delta execution //////////////////////////////////////////////////////////////////// // Build the AST tree ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("a"), new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IntNode(10), new ProtoCore.AST.AssociativeAST.IntNode(20), ProtoCore.DSASM.Operator.add), ProtoCore.DSASM.Operator.assign); // emit the DS code from the AST tree liveRunner = new ProtoScript.Runners.LiveRunner(); liveRunner.UpdateGraph(assign); ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("a"); Assert.IsTrue((Int64)mirror.GetData().Data == 30); }
public UpdateCmdLineInterpreterTask(string code, LiveRunner runner) : base(runner) { this.cmdLineString = code; }
public UpdateGraphTask(SynchronizeData syncData, LiveRunner runner) : base(runner) { this.syncData = syncData; }
protected Task(LiveRunner runner) { this.runner = runner; }
public PropertyChangedTask(LiveRunner runner, GraphNode graphNode) : base(runner) { objectCreationGraphNode = graphNode; }
public void TestBuildAST_01() { //============================================== // // import("ProtoGeometry.dll"); // p = Point.Bycoordinates(0.0, 2.0, 1.0); // xval = p.X; // //============================================== //============================================== // Build the import Nodes //============================================== ProtoScript.Runners.ILiveRunner liveRunner = new ProtoScript.Runners.LiveRunner(); List <string> libs = new List <string>(); libs.Add("ProtoGeometry.dll"); liveRunner.ResetVMAndImportLibrary(libs); string type = "Point"; long hostInstancePtr = 0; string functionName = "ByCoordinates"; List <IntPtr> userDefinedArgs = null; List <string> primitiveArgs = new List <string>(); primitiveArgs.Add("0"); primitiveArgs.Add("2"); primitiveArgs.Add("1"); string formatString = "ddd"; string symbolName = ""; string code = ""; AssociativeNode assign1 = ASTCompilerUtils.BuildAST(type, hostInstancePtr, functionName, userDefinedArgs, primitiveArgs, formatString, liveRunner.Core, ref symbolName, ref code); liveRunner.UpdateGraph(assign1); primitiveArgs.Clear(); primitiveArgs.Add("10"); primitiveArgs.Add("0"); primitiveArgs.Add("0"); functionName = "Translate"; AssociativeNode assign2 = ASTCompilerUtils.BuildAST(symbolName, hostInstancePtr, functionName, userDefinedArgs, primitiveArgs, formatString, liveRunner.Core, ref symbolName, ref code); liveRunner.UpdateGraph(assign2); //============================================== // Build a binary expression to retirieve the x property // xval = p.X; //============================================== List <ProtoCore.AST.AssociativeAST.AssociativeNode> astList = new List <ProtoCore.AST.AssociativeAST.AssociativeNode>(); ProtoCore.AST.AssociativeAST.IdentifierListNode identListNode = new ProtoCore.AST.AssociativeAST.IdentifierListNode(); identListNode.LeftNode = new ProtoCore.AST.AssociativeAST.IdentifierNode(symbolName); identListNode.Optr = ProtoCore.DSASM.Operator.dot; identListNode.RightNode = new ProtoCore.AST.AssociativeAST.IdentifierNode("X"); ProtoCore.AST.AssociativeAST.BinaryExpressionNode stmt2 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("xval"), identListNode, ProtoCore.DSASM.Operator.assign); astList.Add(stmt2); //============================================== // // import("ProtoGeometry.dll"); // p = Point.Bycoordinates(0.0, 20.0, 1.0); // q = p.Translate(10.0, 0.0, 0.0); // xval = p.X; // //============================================== // update graph CodeBlockNode cNode = new CodeBlockNode(); cNode.Body = astList; liveRunner.UpdateGraph(cNode); ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("xval"); Assert.IsTrue((double)mirror.GetData().Data == 10.0); }
public void TestBuildAST_01() { //============================================== // // import("ProtoGeometry.dll"); // p = Point.Bycoordinates(0.0, 2.0, 1.0); // xval = p.X; // //============================================== //============================================== // Build the import Nodes //============================================== ProtoScript.Runners.ILiveRunner liveRunner = new ProtoScript.Runners.LiveRunner(); List<string> libs = new List<string>(); libs.Add("ProtoGeometry.dll"); liveRunner.ResetVMAndImportLibrary(libs); string type = "Point"; long hostInstancePtr = 0; string functionName = "ByCoordinates"; List<IntPtr> userDefinedArgs = null; List<string> primitiveArgs = new List<string>(); primitiveArgs.Add("0"); primitiveArgs.Add("2"); primitiveArgs.Add("1"); string formatString = "ddd"; string symbolName = ""; string code = ""; AssociativeNode assign1 = ASTCompilerUtils.BuildAST(type, hostInstancePtr, functionName, userDefinedArgs, primitiveArgs, formatString, liveRunner.Core, ref symbolName, ref code); liveRunner.UpdateGraph(assign1); primitiveArgs.Clear(); primitiveArgs.Add("10"); primitiveArgs.Add("0"); primitiveArgs.Add("0"); functionName = "Translate"; AssociativeNode assign2 = ASTCompilerUtils.BuildAST(symbolName, hostInstancePtr, functionName, userDefinedArgs, primitiveArgs, formatString, liveRunner.Core, ref symbolName, ref code); liveRunner.UpdateGraph(assign2); //============================================== // Build a binary expression to retirieve the x property // xval = p.X; //============================================== List<ProtoCore.AST.AssociativeAST.AssociativeNode> astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>(); ProtoCore.AST.AssociativeAST.IdentifierListNode identListNode = new ProtoCore.AST.AssociativeAST.IdentifierListNode(); identListNode.LeftNode = new ProtoCore.AST.AssociativeAST.IdentifierNode(symbolName); identListNode.Optr = ProtoCore.DSASM.Operator.dot; identListNode.RightNode = new ProtoCore.AST.AssociativeAST.IdentifierNode("X"); ProtoCore.AST.AssociativeAST.BinaryExpressionNode stmt2 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("xval"), identListNode, ProtoCore.DSASM.Operator.assign); astList.Add(stmt2); //============================================== // // import("ProtoGeometry.dll"); // p = Point.Bycoordinates(0.0, 20.0, 1.0); // q = p.Translate(10.0, 0.0, 0.0); // xval = p.X; // //============================================== // update graph CodeBlockNode cNode = new CodeBlockNode(); cNode.Body = astList; liveRunner.UpdateGraph(cNode); ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("xval"); Assert.IsTrue((double)mirror.GetData().Data == 10.0); }
public override void Setup() { base.Setup(); liverunner = new ProtoScript.Runners.LiveRunner(); runtimeDiagnostics = new ProtoCore.Diagnostics.Runtime(liverunner.RuntimeCore); }
public void GraphILTest_DeletedNode01() { //==================================== // Create a = 10 // Execute and verify a = 10 // Delete a = 10 // Create b = a // Execute and verify b = null //==================================== // Create a = 10 // Execute and verify a = 10 ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("a"), new ProtoCore.AST.AssociativeAST.IntNode(10), ProtoCore.DSASM.Operator.assign); List<ProtoCore.AST.AssociativeAST.AssociativeNode> astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>(); astList.Add(assign); Guid guid = System.Guid.NewGuid(); // Instantiate GraphSyncData List<Subtree> addedList = new List<Subtree>(); addedList.Add(new Subtree(astList, guid)); GraphSyncData syncData = new GraphSyncData(null, addedList, null); // emit the DS code from the AST tree liveRunner = new ProtoScript.Runners.LiveRunner(); liveRunner.UpdateGraph(syncData); ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("a"); Assert.IsTrue((Int64)mirror.GetData().Data == 10); // Delete a = 10 List<Subtree> deletedList = new List<Subtree>(); deletedList.Add(new Subtree(null, guid)); syncData = new GraphSyncData(deletedList, null, null); liveRunner.UpdateGraph(syncData); // Create b = a // Execute and verify b = null ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign2 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("b"), new ProtoCore.AST.AssociativeAST.IdentifierNode("a"), ProtoCore.DSASM.Operator.assign); astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>(); astList.Add(assign2); guid = System.Guid.NewGuid(); // Instantiate GraphSyncData addedList = new List<Subtree>(); addedList.Add(new Subtree(astList, guid)); syncData = new GraphSyncData(null, addedList, null); // emit the DS code from the AST tree liveRunner.UpdateGraph(syncData); mirror = liveRunner.InspectNodeValue("b"); Assert.IsTrue(mirror.GetData().IsNull); }
using System;
public DynamoConvertNodesToCodeTask(List<Subtree> subtrees, LiveRunner runner) : base(runner) { this.subtrees = subtrees; }
public DynamoNodeValueRequestTask(Guid nodeGuid, LiveRunner runner) : base(runner) { this.nodeGuid = nodeGuid; }
public override void Setup() { base.Setup(); liverunner = new ProtoScript.Runners.LiveRunner(); }
public DynamoUpdateGraphTask(GraphSyncData syncData, LiveRunner runner) : base(runner) { this.syncData = syncData; }
public void GraphILTest_Assign01a() { //////////////////////////////////////////////////////////////////// // Adds a node => a = 10; // Creates Subtree, Deletes the node, // Creates Subtree and sync data and executes it via delta execution //////////////////////////////////////////////////////////////////// // Build the AST trees ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("a"), new ProtoCore.AST.AssociativeAST.IntNode(10), ProtoCore.DSASM.Operator.assign); List<ProtoCore.AST.AssociativeAST.AssociativeNode> astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>(); astList.Add(assign); // Instantiate GraphSyncData List<Subtree> addedList = new List<Subtree>(); System.Guid guid1 = System.Guid.NewGuid(); addedList.Add(new Subtree(astList, guid1)); GraphSyncData syncData = new GraphSyncData(null, addedList, null); // emit the DS code from the AST tree liveRunner = new ProtoScript.Runners.LiveRunner(); liveRunner.UpdateGraph(syncData); ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("a"); Assert.IsTrue((Int64)mirror.GetData().Data == 10); astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>(); astList.Add(assign); List<Subtree> deletedList = new List<Subtree>(); deletedList.Add(new Subtree(astList, guid1)); syncData = new GraphSyncData(deletedList, null, null); // emit the DS code from the AST tree liveRunner.UpdateGraph(syncData); mirror = liveRunner.InspectNodeValue("a"); Assert.IsTrue(mirror.GetData().IsNull); }
public void TestFunctionObjectInApply() { liveRunner = new ProtoScript.Runners.LiveRunner(); liveRunner.ResetVMAndResyncGraph(new List<string> { "FunctionObject.ds" }); string code = @" def foo(x,y ) { return = x + y; } f = _SingleFunctionObject(foo, 2, {1}, {null, 42}, true); r = __Apply(f, 3); "; Guid guid = System.Guid.NewGuid(); List<Subtree> added = new List<Subtree>(); { added.Add(ProtoTestFx.TD.TestFrameWork.CreateSubTreeFromCode(guid, code)); var syncData = new GraphSyncData(null, added, null); liveRunner.UpdateGraph(syncData); AssertValue("r", 45); } }
public DynamoConvertNodesToCodeTask(List <Subtree> subtrees, LiveRunner runner) : base(runner) { this.subtrees = subtrees; }
public void GraphILTest_Assign03_astInput() { //////////////////////////////////////////////////////////////////// // Adds nodes => a = 10; c = 20; b = a + c; // Creates 3 separate Subtrees //////////////////////////////////////////////////////////////////// List<ProtoCore.AST.AssociativeAST.AssociativeNode> astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>(); // Build the AST trees ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign1 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("a"), new ProtoCore.AST.AssociativeAST.IntNode(10), ProtoCore.DSASM.Operator.assign); astList.Add(assign1); ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign2 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("c"), new ProtoCore.AST.AssociativeAST.IntNode(20), ProtoCore.DSASM.Operator.assign); astList.Add(assign2); ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign3 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("b"), new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("a"), new ProtoCore.AST.AssociativeAST.IdentifierNode("c"), ProtoCore.DSASM.Operator.add), ProtoCore.DSASM.Operator.assign); astList.Add(assign3); // update graph with ast input CodeBlockNode cNode = new CodeBlockNode(); cNode.Body = astList; liveRunner = new ProtoScript.Runners.LiveRunner(); liveRunner.UpdateGraph(cNode); ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("b"); Assert.IsTrue((Int64)mirror.GetData().Data == 30); }
public NodeValueRequestTask(uint nodeId, LiveRunner runner) : base(runner) { this.nodeId = nodeId; }
public void GraphILTest_Assign05() { //////////////////////////////////////////////////////////////////// // Adds nodes => a = 10; // executes it // Adds node => c = 20; // executes it // Adds node => b = a + c; // executes it // deletes node => c = 20; // executes updated graph //////////////////////////////////////////////////////////////////// liveRunner = new ProtoScript.Runners.LiveRunner(); List<ProtoCore.AST.AssociativeAST.AssociativeNode> astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>(); // Build the AST trees ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign1 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("a"), new ProtoCore.AST.AssociativeAST.IntNode(10), ProtoCore.DSASM.Operator.assign); astList.Add(assign1); List<Subtree> addedList = new List<Subtree>(); addedList.Add(new Subtree(astList, System.Guid.NewGuid())); // Instantiate GraphSyncData GraphSyncData syncData = new GraphSyncData(null, addedList, null); // emit the DS code from the AST tree liveRunner.UpdateGraph(syncData); ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("a"); Assert.IsTrue((Int64)mirror.GetData().Data == 10); //string o = liveRunner.GetCoreDump(); astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>(); ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign2 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("c"), new ProtoCore.AST.AssociativeAST.IntNode(20), ProtoCore.DSASM.Operator.assign); astList.Add(assign2); addedList = new List<Subtree>(); System.Guid guid1 = System.Guid.NewGuid(); addedList.Add(new Subtree(astList, guid1)); syncData = new GraphSyncData(null, addedList, null); // emit the DS code from the AST tree liveRunner.UpdateGraph(syncData); mirror = liveRunner.InspectNodeValue("a"); Assert.IsTrue((Int64)mirror.GetData().Data == 10); mirror = liveRunner.InspectNodeValue("c"); Assert.IsTrue((Int64)mirror.GetData().Data == 20); //string o = liveRunner.GetCoreDump(); astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>(); ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign3 = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("b"), new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("a"), new ProtoCore.AST.AssociativeAST.IdentifierNode("c"), ProtoCore.DSASM.Operator.add), ProtoCore.DSASM.Operator.assign); astList.Add(assign3); addedList = new List<Subtree>(); addedList.Add(new Subtree(astList, System.Guid.NewGuid())); syncData = new GraphSyncData(null, addedList, null); // emit the DS code from the AST tree liveRunner.UpdateGraph(syncData); mirror = liveRunner.InspectNodeValue("a"); Assert.IsTrue((Int64)mirror.GetData().Data == 10); mirror = liveRunner.InspectNodeValue("c"); Assert.IsTrue((Int64)mirror.GetData().Data == 20); mirror = liveRunner.InspectNodeValue("b"); Assert.IsTrue((Int64)mirror.GetData().Data == 30); //o = liveRunner.GetCoreDump(); astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>(); astList.Add(assign2); List<Subtree> deletedList = new List<Subtree>(); deletedList.Add(new Subtree(astList, guid1)); syncData = new GraphSyncData(deletedList, null, null); // emit the DS code from the AST tree liveRunner.UpdateGraph(syncData); mirror = liveRunner.InspectNodeValue("a"); Assert.IsTrue((Int64)mirror.GetData().Data == 10); mirror = liveRunner.InspectNodeValue("c"); Assert.IsTrue(mirror.GetData().IsNull); mirror = liveRunner.InspectNodeValue("b"); Assert.IsTrue(mirror.GetData().IsNull); //o = liveRunner.GetCoreDump(); }
public void TestDeltaExpression_01() { liveRunner = new ProtoScript.Runners.LiveRunner(); // emit the DS code from the AST tree liveRunner.UpdateCmdLineInterpreter("a=10;"); ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("a"); Assert.IsTrue((Int64)mirror.GetData().Data == 10); //string o = liveRunner.GetCoreDump(); // emit the DS code from the AST tree liveRunner.UpdateCmdLineInterpreter("c=20;"); mirror = liveRunner.InspectNodeValue("c"); Assert.IsTrue((Int64)mirror.GetData().Data == 20); mirror = liveRunner.InspectNodeValue("a"); Assert.IsTrue((Int64)mirror.GetData().Data == 10); //string o = liveRunner.GetCoreDump(); // emit the DS code from the AST tree liveRunner.UpdateCmdLineInterpreter("b = a+c;"); mirror = liveRunner.InspectNodeValue("a"); Assert.IsTrue((Int64)mirror.GetData().Data == 10); mirror = liveRunner.InspectNodeValue("c"); Assert.IsTrue((Int64)mirror.GetData().Data == 20); mirror = liveRunner.InspectNodeValue("b"); Assert.IsTrue((Int64)mirror.GetData().Data == 30); //o = liveRunner.GetCoreDump(); // emit the DS code from the AST tree liveRunner.UpdateCmdLineInterpreter("c= 30;"); mirror = liveRunner.InspectNodeValue("a"); Assert.IsTrue((Int64)mirror.GetData().Data == 10); mirror = liveRunner.InspectNodeValue("c"); Assert.IsTrue((Int64)mirror.GetData().Data == 30); mirror = liveRunner.InspectNodeValue("b"); Assert.IsTrue((Int64)mirror.GetData().Data == 40); //o = liveRunner.GetCoreDump(); }
public void TestDeltaExpressionFFI_01() { liveRunner = new ProtoScript.Runners.LiveRunner(); liveRunner.UpdateCmdLineInterpreter(@"import (""FFITarget.dll"");"); liveRunner.UpdateCmdLineInterpreter("p = DummyPoint.ByCoordinates(10,10,10);"); ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("p"); //============================================== // Translate the point // newPoint = p.Translate(1,2,3); //============================================== liveRunner.UpdateCmdLineInterpreter("newPoint = p.Translate(1,2,3);"); mirror = liveRunner.InspectNodeValue("newPoint"); //============================================== // Build a binary expression to retirieve the x property // xval = newPoint.X //============================================== liveRunner.UpdateCmdLineInterpreter("xval = newPoint.X;"); mirror = liveRunner.InspectNodeValue("xval"); //============================================== // // import ("ProtoGeometry.dll"); // p = Point.Bycoordinates(10.0, 10.0, 10.0); // newPoint = p.Translate(1.0,2.0,3.0); // xval = newPoint.X; // //============================================== Assert.IsTrue((double)mirror.GetData().Data == 11.0); }
public void GraphILTest_ComplexWatch01() { // Build the AST trees // x = 1..10; ProtoCore.AST.AssociativeAST.RangeExprNode rangeExpr = new ProtoCore.AST.AssociativeAST.RangeExprNode(); rangeExpr.FromNode = new ProtoCore.AST.AssociativeAST.IntNode(0); rangeExpr.ToNode = new ProtoCore.AST.AssociativeAST.IntNode(5); rangeExpr.StepNode = new ProtoCore.AST.AssociativeAST.IntNode(1); ProtoCore.AST.AssociativeAST.BinaryExpressionNode assign = new ProtoCore.AST.AssociativeAST.BinaryExpressionNode( new ProtoCore.AST.AssociativeAST.IdentifierNode("a"), rangeExpr, ProtoCore.DSASM.Operator.assign); List<ProtoCore.AST.AssociativeAST.AssociativeNode> astList = new List<ProtoCore.AST.AssociativeAST.AssociativeNode>(); astList.Add(assign); // Instantiate GraphSyncData List<Subtree> addedList = new List<Subtree>(); addedList.Add(new Subtree(astList, System.Guid.NewGuid())); GraphSyncData syncData = new GraphSyncData(null, addedList, null); // emit the DS code from the AST tree liveRunner = new ProtoScript.Runners.LiveRunner(); liveRunner.UpdateGraph(syncData); ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("a"); var collection = mirror.GetData().GetElements(); Assert.IsTrue((Int64)collection[1].Data == 1); }
public void TestAdd01() { List<string> codes = new List<string>() { "a = 1;", "x = a; y = a; z = a; p = DummyPoint.ByCoordinates(x, y, z); px = p.X;", }; List<Guid> guids = Enumerable.Range(0, codes.Count).Select(_ => System.Guid.NewGuid()).ToList(); IEnumerable<int> index = Enumerable.Range(0, codes.Count); int shuffleCount = codes.Count; // in which add order, LiveRunner should get the same result. for (int i = 0; i < shuffleCount; ++i) { ILiveRunner liveRunner = new ProtoScript.Runners.LiveRunner(); liveRunner.ResetVMAndResyncGraph(new List<string> { "FFITarget.dll" }); index = index.OrderBy(_ => randomGen.Next()); var added = index.Select(idx => ProtoTestFx.TD.TestFrameWork.CreateSubTreeFromCode(guids[idx], codes[idx])).ToList(); var syncData = new GraphSyncData(null, added, null); liveRunner.UpdateGraph(syncData); ProtoCore.Mirror.RuntimeMirror mirror = liveRunner.InspectNodeValue("px"); var value = (double)mirror.GetData().Data; Assert.AreEqual(value, 1); } }
public override void Setup() { base.Setup(); liveRunner = new ProtoScript.Runners.LiveRunner(); runtimeCore = liveRunner.RuntimeCore; }