コード例 #1
0
        public void TestCoverage()
        {
            CoreControl.Controller controller = new CoreControl.Controller();
            uint integer  = (uint)CoreControl.EntityFactory.BASE_ID.INTEGER_TYPE;
            uint floating = (uint)CoreControl.EntityFactory.BASE_ID.FLOATING_TYPE;

            uint ctx = controller.Declare(ENTITY.CONTEXT, 0, "Ctoto", VISIBILITY.PRIVATE);
            uint fnt = controller.Declare(ENTITY.FUNCTION, 0, "Ftoto", VISIBILITY.PRIVATE);
            uint var = controller.Declare(ENTITY.VARIABLE, 0, "Vtoto", VISIBILITY.PRIVATE);
            uint enu = controller.Declare(ENTITY.ENUM_TYPE, 0, "Etoto", VISIBILITY.PRIVATE);
            uint obj = controller.Declare(ENTITY.OBJECT_TYPE, 0, "tata", VISIBILITY.PRIVATE);
            uint lst = controller.Declare(ENTITY.LIST_TYPE, 0, "tutu", VISIBILITY.PRIVATE);

            //context

            controller.SetContextParent(ctx, 0);

            //variable

            controller.SetVariableType(var, integer);
            Assert.IsTrue(controller.GetVariableType(var) == integer);
            controller.SetVariableValue(var, 42);
            Assert.IsTrue(controller.GetVariableValue(var) == 42);

            //enum

            controller.SetEnumerationType(enu, floating);
            controller.SetEnumerationValue(enu, "TUTU", 43.2);
            Assert.IsTrue(controller.GetEnumerationValue(enu, "TUTU") == 43.2);
            controller.RemoveEnumerationValue(enu, "TUTU");

            //class

            controller.AddClassAttribute(obj, "posX", integer, VISIBILITY.PUBLIC);
            controller.AddClassAttribute(obj, "posY", integer, VISIBILITY.PUBLIC);
            controller.RenameClassAttribute(obj, "posX", "posZ");
            controller.RemoveClassAttribute(obj, "posY");

            //uncomment it when object will be implemented

            //controller.addClassMemberFunction(obj, "Unitarize", AccessMode.EXTERNAL);

            //list

            controller.SetListType(lst, floating);

            //function

            controller.SetVariableType(var, floating);
            uint entry = controller.AddInstruction(fnt, INSTRUCTION_ID.SETTER, new List <uint> {
                var
            });

            controller.SetInstructionInputValue(fnt, entry, "value", 3.14);
            controller.SetFunctionEntryPoint(fnt, entry);

            controller.CallFunction(fnt, new Dictionary <string, dynamic> {
            });

            Assert.IsTrue(controller.GetVariableValue(var) == 3.14);

            uint val = controller.Declare(ENTITY.VARIABLE, fnt, "value", VISIBILITY.PUBLIC);

            controller.SetFunctionParameter(fnt, "value");
            controller.SetVariableType(val, floating);

            uint get_value = controller.AddInstruction(fnt, INSTRUCTION_ID.GETTER, new List <uint> {
                val
            });

            controller.LinkInstructionData(fnt, get_value, "reference", entry, "value");

            controller.CallFunction(fnt, new Dictionary <string, dynamic> {
                { "value", 42.3 }
            });

            Assert.IsTrue(controller.GetVariableValue(var) == 42.3);

            uint res = controller.Declare(ENTITY.VARIABLE, fnt, "res", VISIBILITY.PUBLIC);

            controller.SetFunctionReturn(fnt, "res");
            controller.SetVariableType(res, floating);

            controller.RemoveFunctionInstruction(fnt, entry);
            entry = controller.AddInstruction(fnt, INSTRUCTION_ID.SETTER, new List <uint> {
                res
            });
            controller.SetFunctionEntryPoint(fnt, entry);

            controller.LinkInstructionData(fnt, get_value, "reference", entry, "value");

            controller.CallFunction(fnt, new Dictionary <string, dynamic> {
                { "value", 56.3 }
            });

            Assert.IsTrue(controller.GetVariableValue(res) == 56.3);

            controller.UnlinkInstructionInput(fnt, entry, "value");
            controller.SetInstructionInputValue(fnt, entry, "value", 71.2);

            controller.CallFunction(fnt, new Dictionary <string, dynamic> {
                { "value", 31.2 }
            });

            Assert.IsTrue(controller.GetVariableValue(res) == 71.2);

            uint new_set = controller.AddInstruction(fnt, INSTRUCTION_ID.SETTER, new List <uint> {
                val
            });

            controller.LinkInstructionData(fnt, get_value, "reference", new_set, "value");
            controller.LinkInstructionExecution(fnt, entry, 0, new_set);

            controller.CallFunction(fnt, new Dictionary <string, dynamic> {
                { "value", 32.2 }
            });

            Assert.IsTrue(controller.GetVariableValue(val) == 32.2);

            controller.UnlinkInstructionFlow(fnt, entry, 0);

            controller.CallFunction(fnt, new Dictionary <string, dynamic> {
                { "value", 32.2 }
            });

            Assert.IsTrue(controller.GetVariableValue(res) == 71.2);

            Assert.IsTrue(controller.GetFunctionParameters(fnt).Count == 1);
            Assert.IsTrue(controller.GetFunctionReturns(fnt).Count == 1);

            // declarators

            controller.ChangeVisibility(0, "Ctoto", VISIBILITY.PUBLIC);
            controller.ChangeVisibility(0, "Ftoto", VISIBILITY.PUBLIC);
            controller.ChangeVisibility(0, "Vtoto", VISIBILITY.PUBLIC);
            controller.ChangeVisibility(0, "Etoto", VISIBILITY.PUBLIC);
            controller.ChangeVisibility(0, "tata", VISIBILITY.PUBLIC);
            controller.ChangeVisibility(0, "tutu", VISIBILITY.PUBLIC);

            uint cnt = controller.Declare(ENTITY.CONTEXT, 0, "Container", VISIBILITY.PUBLIC);

            controller.Move(0, cnt, "Ctoto");
            controller.Move(0, cnt, "Ftoto");
            controller.Move(0, cnt, "Vtoto");
            controller.Move(0, cnt, "Etoto");
            controller.Move(0, cnt, "tata");
            controller.Move(0, cnt, "tutu");

            controller.Rename(cnt, "Ctoto", "Ctiti");
            controller.Rename(cnt, "Ftoto", "Ftiti");
            controller.Rename(cnt, "Vtoto", "Vtiti");
            controller.Rename(cnt, "Etoto", "Etiti");
            controller.Rename(cnt, "tata", "toto");
            controller.Rename(cnt, "tutu", "tata");

            List <Entity> ret = controller.GetEntitiesOfType(ENTITY.CONTEXT, cnt);

            Assert.IsTrue(ret.Count == 1);
            Assert.IsTrue(controller.GetEntitiesOfType(ENTITY.VARIABLE, cnt).Count == 1);
            Assert.IsTrue(controller.GetEntitiesOfType(ENTITY.FUNCTION, cnt).Count == 1);
            Assert.IsTrue(controller.GetEntitiesOfType(ENTITY.DATA_TYPE, cnt).Count == 3);


            controller.Remove(cnt, "Ctiti");
            controller.Remove(cnt, "Ftiti");
            controller.Remove(cnt, "Vtiti");
            controller.Remove(cnt, "Etiti");
            controller.Remove(cnt, "toto");
            controller.Remove(cnt, "tata");
        }