-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathNodeClassTypeCreatorTests.cs
More file actions
72 lines (54 loc) · 2.47 KB
/
Copy pathNodeClassTypeCreatorTests.cs
File metadata and controls
72 lines (54 loc) · 2.47 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
using NodeDev.Core;
using NodeDev.Core.Class;
using NodeDev.Core.Nodes;
using NodeDev.Core.Nodes.Flow;
namespace NodeDev.Tests;
public class NodeClassTypeCreatorTests
{
[Fact]
public void TestClassProjectOwnership()
{
var graph = GraphExecutorTests.CreateSimpleAddGraph<int, int>(out _, out _, out _);
Assert.Equal(graph.SelfClass, graph.SelfClass.Project.Classes.First());
}
[Theory]
[MemberData(nameof(GraphExecutorTests.GetBuildOptions), MemberType = typeof(GraphExecutorTests))]
public async Task TestNewGetSet(SerializableBuildOptions options)
{
var project = new Project(Guid.NewGuid());
var myClass = new NodeClass("Program", "MyProject", project);
project.AddClass(myClass);
var prop = new NodeClassProperty(myClass, "MyProp", project.TypeFactory.Get<int>());
myClass.Properties.Add(prop);
var method = new NodeClassMethod(myClass, "MainInternal", myClass.TypeFactory.Get<int>());
method.IsStatic = true;
myClass.AddMethod(method, createEntryAndReturn: false);
method.Parameters.Add(new("A", myClass.TypeFactory.Get<int>(), method)); // TODO REMOVE
var graph = method.Graph;
var entryNode = new EntryNode(graph);
var returnNode = new ReturnNode(graph);
var newNode = new New(graph);
newNode.Outputs[1].UpdateTypeAndTextboxVisibility(myClass.ClassTypeBase, overrideInitialType: true);
var setProp = new SetPropertyOrField(graph);
setProp.SetMemberTarget(prop);
var getProp = new GetPropertyOrField(graph);
getProp.SetMemberTarget(prop);
graph.Manager.AddNode(entryNode);
graph.Manager.AddNode(returnNode);
graph.Manager.AddNode(newNode);
graph.Manager.AddNode(getProp);
graph.Manager.AddNode(setProp);
// link the execution path
graph.Manager.AddNewConnectionBetween(entryNode.Outputs[0], newNode.Inputs[0]);
graph.Manager.AddNewConnectionBetween(newNode.Outputs[0], setProp.Inputs[1]); // set input 0 is the target, so use input 1 as the exec
graph.Manager.AddNewConnectionBetween(setProp.Outputs[0], returnNode.Inputs[0]);
// link the rest
graph.Manager.AddNewConnectionBetween(entryNode.Outputs[1], setProp.Inputs[2]);
graph.Manager.AddNewConnectionBetween(newNode.Outputs[1], setProp.Inputs[0]);
graph.Manager.AddNewConnectionBetween(newNode.Outputs[1], getProp.Inputs[0]);
graph.Manager.AddNewConnectionBetween(getProp.Outputs[0], returnNode.Inputs[1]);
GraphExecutorTests.CreateStaticMainWithConversion(myClass, method);
var result = GraphExecutorTests.Run<int>(project, options, 10);
Assert.Equal(10, result);
}
}