Exemple #1
0
        public void TestProcedureTableAppend()
        {
            int index = procedureTable.GetFunctionBySignature(new ProcedureMatchOptions()
            {
                FunctionName   = "missing",
                ParameterTypes = new List <ProtoCore.Type>()
                {
                    new ProtoCore.Type()
                    {
                        Name = "example",
                        UID  = 10
                    }
                }
            }, out ProcedureNode procNodeMissing);

            Assert.AreEqual(index, Constants.kInvalidIndex);
            Assert.IsNull(procNodeMissing);

            procedureTable.Append(new ProcedureNode()
            {
                ID            = 2,
                ClassID       = 20,
                Name          = "missing",
                ArgumentTypes = new List <ProtoCore.Type>()
                {
                    new ProtoCore.Type()
                    {
                        Name = "example",
                        UID  = 10
                    }
                },
                ArgumentInfos = new List <ArgumentInfo>()
                {
                    new ArgumentInfo()
                    {
                        Name = "example0"
                    }
                },
                IsConstructor           = false,
                IsStatic                = false,
                IsAutoGeneratedThisProc = false
            });

            index = procedureTable.GetFunctionBySignature(new ProcedureMatchOptions()
            {
                FunctionName   = "missing",
                ParameterTypes = new List <ProtoCore.Type>()
                {
                    new ProtoCore.Type()
                    {
                        Name = "example",
                        UID  = 10
                    }
                }
            }, out ProcedureNode procNodeFound);

            Assert.AreEqual(index, procedureTable.Procedures.Count - 1);
            Assert.IsNotNull(procNodeFound);
            Assert.AreEqual(procNodeFound.Name, "missing");
        }
Exemple #2
0
        public void SetUp()
        {
            testCore = thisTest.SetupTestCore();

            testRuntimeCore = new RuntimeCore(testCore.Heap, testCore.Options);
            testExecutive   = new TestExecutive(testRuntimeCore);

            procedureTable = new ProcedureTable(-1);

            var procNodes = new List <ProcedureNode>()
            {
                new ProcedureNode()
                {
                    ID            = 0,
                    ClassID       = 20,
                    Name          = "Test0",
                    ArgumentTypes = new List <ProtoCore.Type>()
                    {
                        new ProtoCore.Type()
                        {
                            Name = "int",
                            UID  = 10
                        },
                        new ProtoCore.Type()
                        {
                            Name = "int",
                            UID  = 11
                        },
                        new ProtoCore.Type()
                        {
                            Name = "double",
                            UID  = 12
                        }
                    },
                    ArgumentInfos = new List <ArgumentInfo>()
                    {
                        new ArgumentInfo()
                        {
                            Name = "example0"
                        },
                        new ArgumentInfo()
                        {
                            Name = "example1"
                        },
                        new ArgumentInfo()
                        {
                            Name = "example1",
                            DefaultExpression = new IdentifierNode()
                            {
                            }
                        }
                    },
                    IsConstructor           = false,
                    IsStatic                = false,
                    IsAutoGeneratedThisProc = false
                },
                new ProcedureNode()
                {
                    ID            = 1,
                    ClassID       = 20,
                    Name          = "Test0",
                    ArgumentTypes = new List <ProtoCore.Type>()
                    {
                        new ProtoCore.Type()
                        {
                            Name = "int",
                            UID  = 10
                        },
                        new ProtoCore.Type()
                        {
                            Name = "int",
                            UID  = 11
                        },
                        new ProtoCore.Type()
                        {
                            Name = "int",
                            UID  = 13
                        },
                        new ProtoCore.Type()
                        {
                            Name = "int",
                            UID  = 13
                        }
                    },
                    ArgumentInfos = new List <ArgumentInfo>()
                    {
                        new ArgumentInfo()
                        {
                            Name = "example0"
                        },
                        new ArgumentInfo()
                        {
                            Name = "example1",
                            DefaultExpression = new IdentifierNode()
                            {
                            }
                        },
                        new ArgumentInfo()
                        {
                            Name = "example2",
                            DefaultExpression = new IdentifierNode()
                            {
                            }
                        },
                        new ArgumentInfo()
                        {
                            Name = "example2",
                            DefaultExpression = new IdentifierNode()
                            {
                            }
                        }
                    },
                    IsConstructor           = false,
                    IsStatic                = false,
                    IsAutoGeneratedThisProc = false
                },
                new ProcedureNode()
                {
                    ID            = 2,
                    ClassID       = 20,
                    Name          = "Test1",
                    ArgumentTypes = new List <ProtoCore.Type>()
                    {
                    },
                    ArgumentInfos = new List <ArgumentInfo>()
                    {
                    },
                    IsConstructor           = false,
                    IsStatic                = false,
                    IsAutoGeneratedThisProc = false
                },
                new ProcedureNode()
                {
                    ID            = 3,
                    ClassID       = 20,
                    Name          = "Test2",
                    ArgumentTypes = new List <ProtoCore.Type>()
                    {
                        new ProtoCore.Type()
                        {
                            Name = "int",
                            UID  = 10
                        }
                    },
                    ArgumentInfos = new List <ArgumentInfo>()
                    {
                        new ArgumentInfo()
                        {
                            Name = "example0"
                        }
                    },
                    IsConstructor           = false,
                    IsStatic                = false,
                    IsAutoGeneratedThisProc = true
                },
                new ProcedureNode()
                {
                    ID            = 4,
                    ClassID       = 20,
                    Name          = "Test2",
                    ArgumentTypes = new List <ProtoCore.Type>()
                    {
                    },
                    ArgumentInfos = new List <ArgumentInfo>()
                    {
                    },
                    IsConstructor           = false,
                    IsStatic                = false,
                    IsAutoGeneratedThisProc = false
                },
                new ProcedureNode()
                {
                    ID            = 5,
                    ClassID       = 20,
                    Name          = "Test4",
                    ArgumentTypes = new List <ProtoCore.Type>()
                    {
                    },
                    ArgumentInfos = new List <ArgumentInfo>()
                    {
                    },
                    IsConstructor           = false,
                    IsStatic                = true,
                    IsAutoGeneratedThisProc = true
                }
            };

            foreach (var proc in procNodes)
            {
                procedureTable.Append(proc);
            }

            Assert.AreEqual(procedureTable.Procedures.Count, procNodes.Count);
        }