public void ApplyActivityFunc_DifferentAssigns_Object_Is_Not_Equal()
        {
            //---------------Set up test pack-------------------
            var newGuid                   = Guid.NewGuid();
            var commonAssign              = CommonAssign(newGuid);
            var commonAssign1             = CommonAssign(Guid.NewGuid());
            var uniqueId                  = Guid.NewGuid().ToString();
            var dsfSelectAndApplyActivity = new DsfSelectAndApplyActivity()
            {
                UniqueID          = uniqueId,
                DisplayName       = "AAA",
                ApplyActivityFunc = new ActivityFunc <string, bool>()
                {
                    Handler = commonAssign
                }
            };
            var selectAndApplyActivity = new DsfSelectAndApplyActivity()
            {
                UniqueID          = uniqueId,
                DisplayName       = "AAA",
                ApplyActivityFunc = new ActivityFunc <string, bool>()
                {
                    Handler = commonAssign1
                }
            };

            //---------------Assert Precondition----------------
            Assert.IsNotNull(dsfSelectAndApplyActivity);
            //---------------Execute Test ----------------------
            var @equals = dsfSelectAndApplyActivity.Equals(selectAndApplyActivity);

            //---------------Test Result -----------------------
            Assert.IsFalse(equals);
        }
        DsfSelectAndApplyActivity SetupArguments(string currentDl, string testData, IDev2Activity activity, bool isInputMapping = false, string inputMapping = null)
        {
            //DsfActivity activity = inputMapping != null ? CreateWorkflow(inputMapping, isInputMapping) : CreateWorkflow();
            DataObject.Environment = new ExecutionEnvironment();
            DataObject.Environment.Assign("[[Person().Name]]", "Bob", 0);
            DataObject.Environment.Assign("[[Person().Name]]", "Dora", 0);
            DataObject.Environment.Assign("[[Person().Name]]", "Superman", 0);
            DataObject.Environment.Assign("[[Person().Name]]", "Batman", 0);
            DataObject.Environment.Assign("[[Person().Name]]", "Orlando", 0);
            const string dataSource = "[[Person(*).Name]]";
            const string alias      = "[[a]]";
            var          dsfSelectAndApplyActivity = new DsfSelectAndApplyActivity
            {
                DataSource = dataSource,
                Alias      = alias,

                //ApplyActivityFunc = activity
            };
            var handler = activity as Activity;

            dsfSelectAndApplyActivity.ApplyActivityFunc.Handler = handler;
            TestStartNode = new FlowStep
            {
                Action = dsfSelectAndApplyActivity
            };
            CurrentDl = testData;
            TestData  = currentDl;
            return(dsfSelectAndApplyActivity);
        }
        DsfSelectAndApplyActivity SetupArgumentsForFormatNumber(string currentDl, string testData, IDev2Activity activity, bool isInputMapping = false, string inputMapping = null)
        {
            //DsfActivity activity = inputMapping != null ? CreateWorkflow(inputMapping, isInputMapping) : CreateWorkflow();
            DataObject.Environment = new ExecutionEnvironment();
            DataObject.Environment.Assign("[[Person().Age]]", "5.2687454", 0);
            DataObject.Environment.Assign("[[Person().Age]]", "2.3", 0);
            DataObject.Environment.Assign("[[Person().Age]]", "1", 0);
            DataObject.Environment.Assign("[[Person().Age]]", "-3.4554", 0);
            DataObject.Environment.Assign("[[Person().Age]]", "0.875768", 0);
            const string dataSource = "[[Person(*).Age]]";
            const string alias      = "[[result]]";
            var          dsfSelectAndApplyActivity = new DsfSelectAndApplyActivity
            {
                DataSource = dataSource,
                Alias      = alias,
                //ApplyActivity = activity
            };

            dsfSelectAndApplyActivity.ApplyActivityFunc.Handler = activity as Activity;
            TestStartNode = new FlowStep
            {
                Action = dsfSelectAndApplyActivity
            };
            CurrentDl = testData;
            TestData  = currentDl;
            return(dsfSelectAndApplyActivity);
        }
        public void SelectAndApplyActivity_GetForEachOutputs()
        {
            var activity = new DsfSelectAndApplyActivity();

            activity.Alias = "[[Rec(*)]]";
            var dsfForEachItems = activity.GetForEachOutputs();

            Assert.AreEqual(dsfForEachItems.Single().Value, "[[Rec()]]");
        }
        public void SelectAndApplyActivity_SetupExecute_GivenCaseConvertActivityApplied_ToCorrectIndex_ComplexObjects()
        {
            //------------Setup for test--------------------------
            var activity = new DsfCaseConvertActivity
            {
                ConvertCollection = new List <ICaseConvertTO>
                {
                    new CaseConvertTO("[[a]]", "UPPER", "[[a]]", 1)
                    {
                        ExpressionToConvert = "[[a]]"
                    }
                }
            };

            DataObject.Environment = new ExecutionEnvironment();
            DataObject.Environment.AssignJson(new AssignValue("[[@Person().Name]]", "Bob"), 0);
            DataObject.Environment.AssignJson(new AssignValue("[[@Person().Name]]", "Dora"), 0);
            DataObject.Environment.AssignJson(new AssignValue("[[@Person().Name]]", "Superman"), 0);
            DataObject.Environment.AssignJson(new AssignValue("[[@Person().Name]]", "Batman"), 0);
            DataObject.Environment.AssignJson(new AssignValue("[[@Person().Name]]", "Orlando"), 0);
            const string dataSource = "[[@Person(*).Name]]";
            const string alias      = "[[a]]";
            var          dsfSelectAndApplyActivity = new DsfSelectAndApplyActivity
            {
                DataSource = dataSource,
                Alias      = alias,

                //ApplyActivityFunc = activity
            };
            var handler = activity as Activity;

            dsfSelectAndApplyActivity.ApplyActivityFunc.Handler = handler;
            TestStartNode = new FlowStep
            {
                Action = dsfSelectAndApplyActivity
            };
            CurrentDl = "";
            TestData  = "";
            //------------Execute Test---------------------------
            ExecuteProcess(DataObject);
            //------------Assert Results-------------------------
            var names = DataObject.Environment.EvalAsListOfStrings("[[@Person(*).Name]]", 0);

            Assert.AreEqual("BOB", names[0]);
            Assert.AreEqual("DORA", names[1]);
            Assert.AreEqual("SUPERMAN", names[2]);
            Assert.AreEqual("BATMAN", names[3]);
            Assert.AreEqual("ORLANDO", names[4]);
        }
        public void UniqueIDDifferent_EmptySelectAndApply_Object_IsEqual()
        {
            //---------------Set up test pack-------------------
            var uniqueId = Guid.NewGuid().ToString();
            var dsfSelectAndApplyActivity = new DsfSelectAndApplyActivity();
            var selectAndApplyActivity    = new DsfSelectAndApplyActivity();

            //---------------Assert Precondition----------------
            Assert.IsNotNull(dsfSelectAndApplyActivity);
            //---------------Execute Test ----------------------
            var @equals = dsfSelectAndApplyActivity.Equals(selectAndApplyActivity);

            //---------------Test Result -----------------------
            Assert.IsFalse(equals);
        }
        public void SelectAndApplyActivity_SetupExecute_GivenNumberFormatTool_ToCorrectFormat_ComplexObjects()
        {
            var activity = new DsfNumberFormatActivity
            {
                Expression            = "[[result]]",
                Result                = "[[result]]",
                RoundingType          = enRoundingType.Up.GetDescription(),
                RoundingDecimalPlaces = "2",
                DecimalPlacesToShow   = "2"
            };


            //------------Setup for test--------------------------
            //SetupArgumentsForFormatNumber("", "", activity);
            DataObject.Environment = new ExecutionEnvironment();
            DataObject.Environment.AssignJson(new AssignValue("[[@Person().Age]]", "5.2687454"), 0);
            DataObject.Environment.AssignJson(new AssignValue("[[@Person().Age]]", "2.3"), 0);
            DataObject.Environment.AssignJson(new AssignValue("[[@Person().Age]]", "1"), 0);
            DataObject.Environment.AssignJson(new AssignValue("[[@Person().Age]]", "-3.4554"), 0);
            DataObject.Environment.AssignJson(new AssignValue("[[@Person().Age]]", "0.875768"), 0);
            const string dataSource = "[[@Person(*).Age]]";
            const string alias      = "[[result]]";
            var          dsfSelectAndApplyActivity = new DsfSelectAndApplyActivity
            {
                DataSource = dataSource,
                Alias      = alias,
                //ApplyActivity = activity
            };

            dsfSelectAndApplyActivity.ApplyActivityFunc.Handler = activity;
            TestStartNode = new FlowStep
            {
                Action = dsfSelectAndApplyActivity
            };
            CurrentDl = string.Empty;
            TestData  = string.Empty;
            //------------Execute Test---------------------------
            ExecuteProcess(DataObject);
            //------------Assert Results-------------------------
            var ages = DataObject.Environment.EvalAsListOfStrings("[[@Person(*).Age]]", 0);

            Assert.AreEqual("5.27", ages[0]);
            Assert.AreEqual("2.30", ages[1]);
            Assert.AreEqual("1.00", ages[2]);
            Assert.AreEqual("-3.46", ages[3]);
            Assert.AreEqual("0.88", ages[4]);
        }
        public void DsfSelectAndApplyActivity_GetState_ReturnsStateVariable()
        {
            //---------------Set up test pack-------------------
            //------------Setup for test--------------------------
            var act = new DsfSelectAndApplyActivity
            {
                DataSource = "[[DataSource]]",
                Alias      = "[[Alias]]"
            };
            //------------Execute Test---------------------------
            var stateItems = act.GetState();

            Assert.AreEqual(2, stateItems.Count());

            var expectedResults = new[]
            {
                new StateVariable
                {
                    Name  = "DataSource",
                    Type  = StateVariable.StateType.Input,
                    Value = "[[DataSource]]"
                },
                new StateVariable
                {
                    Name  = "Alias",
                    Type  = StateVariable.StateType.InputOutput,
                    Value = "[[Alias]]"
                }
            };

            var iter = act.GetState().Select(
                (item, index) => new
            {
                value       = item,
                expectValue = expectedResults[index]
            }
                );

            //------------Assert Results-------------------------
            foreach (var entry in iter)
            {
                Assert.AreEqual(entry.expectValue.Name, entry.value.Name);
                Assert.AreEqual(entry.expectValue.Type, entry.value.Type);
                Assert.AreEqual(entry.expectValue.Value, entry.value.Value);
            }
        }
        ModelItem CreateModelItem()
        {
            var uniqueId     = Guid.NewGuid().ToString();
            var commonAssign = CommonAssign();

            var dsfSelectAndApplyActivity = new DsfSelectAndApplyActivity
            {
                UniqueID          = uniqueId,
                DisplayName       = "AAA",
                ApplyActivityFunc = new ActivityFunc <string, bool>
                {
                    Handler = commonAssign
                }
            };

            return(ModelItemUtils.CreateModelItem(dsfSelectAndApplyActivity));
        }
        protected override void BuildDataList()
        {
            List <Tuple <string, string> > variableList;

            scenarioContext.TryGetValue("variableList", out variableList);

            if (variableList == null)
            {
                variableList = new List <Tuple <string, string> >();
                scenarioContext.Add("variableList", variableList);
            }

            BuildShapeAndTestData();
            string datasource;

            if (!scenarioContext.TryGetValue("datasource", out datasource))
            {
                datasource = string.Empty;
            }

            string alias;

            if (!scenarioContext.TryGetValue("alias", out alias))
            {
                alias = string.Empty;
            }

            Activity innerActivity = scenarioContext.Get <Activity>("innerActivity");

            DsfSelectAndApplyActivity selectAndApplyTool = new DsfSelectAndApplyActivity();

            selectAndApplyTool.DataSource = datasource;
            selectAndApplyTool.Alias      = alias;
            selectAndApplyTool.ApplyActivityFunc.Handler = innerActivity;
            TestStartNode = new FlowStep
            {
                Action = selectAndApplyTool
            };

            scenarioContext.Add("activity", selectAndApplyTool);
        }
        public void Equals_Given_Different_Object_Is_Not_Equal()
        {
            //---------------Set up test pack-------------------
            var uniqueId = Guid.NewGuid().ToString();
            var dsfSelectAndApplyActivity = new DsfSelectAndApplyActivity()
            {
                UniqueID = uniqueId, DisplayName = "A"
            };
            var selectAndApplyActivity = new DsfSelectAndApplyActivity()
            {
                UniqueID = uniqueId, DisplayName = "ass"
            };

            //---------------Assert Precondition----------------
            Assert.IsNotNull(dsfSelectAndApplyActivity);
            //---------------Execute Test ----------------------
            var @equals = dsfSelectAndApplyActivity.Equals(selectAndApplyActivity);

            //---------------Test Result -----------------------
            Assert.IsFalse(equals);
        }
        public void SelectAndApplyActivity_SetupExecute_GivenNullDataSource_DataObjectsHasCorrectErrors()
        {
            var activity = new DsfNumberFormatActivity
            {
                Expression            = "[[result]]",
                Result                = "[[result]]",
                RoundingType          = enRoundingType.Up.GetDescription(),
                RoundingDecimalPlaces = "2",
                DecimalPlacesToShow   = "2"
            };


            //------------Setup for test--------------------------
            //SetupArgumentsForFormatNumber("", "", activity);
            DataObject.Environment = new ExecutionEnvironment();
            DataObject.Environment.AssignJson(new AssignValue("[[@Person().Age]]", "5.2687454"), 0);
            DataObject.Environment.AssignJson(new AssignValue("[[@Person().Age]]", "2.3"), 0);
            DataObject.Environment.AssignJson(new AssignValue("[[@Person().Age]]", "1"), 0);
            DataObject.Environment.AssignJson(new AssignValue("[[@Person().Age]]", "-3.4554"), 0);
            DataObject.Environment.AssignJson(new AssignValue("[[@Person().Age]]", "0.875768"), 0);
            var dsfSelectAndApplyActivity = new DsfSelectAndApplyActivity();

            dsfSelectAndApplyActivity.ApplyActivityFunc.Handler = activity;
            TestStartNode = new FlowStep
            {
                Action = dsfSelectAndApplyActivity
            };
            CurrentDl = string.Empty;
            TestData  = string.Empty;
            //------------Execute Test---------------------------
            ExecuteProcess(DataObject);
            //------------Assert Results-------------------------
            var errors = DataObject.Environment.Errors;

            Assert.AreEqual(2, errors.Count);
            Assert.IsTrue(errors.Contains(ErrorResource.DataSourceEmpty));
            Assert.IsTrue(errors.Contains(string.Format(ErrorResource.CanNotBeEmpty, "Alias")));
        }
        /// <summary>
        /// Gets all the fields for a specific activity
        /// </summary>
        /// <param name="activity">The activity that the fields will be retrieved from</param>
        /// <returns>Returns all the fields in a list of strings</returns>
        public List <string> GetActivityFields(object activity)
        {
            List <string> results = new List <string>();
            Dev2FindMissingStrategyFactory stratFac        = new Dev2FindMissingStrategyFactory();
            DsfForEachActivity             forEachActivity = activity as DsfForEachActivity;

            if (forEachActivity != null)
            {
                IFindMissingStrategy strategy;
                enFindMissingType    findMissingType;
                var boolAct = forEachActivity.DataFunc.Handler as DsfNativeActivity <bool>;
                if (boolAct == null)
                {
                    DsfNativeActivity <string> stringAct = forEachActivity.DataFunc.Handler as DsfNativeActivity <string>;
                    if (stringAct != null)
                    {
                        findMissingType = stringAct.GetFindMissingType();
                        strategy        = stratFac.CreateFindMissingStrategy(findMissingType);
                        results.AddRange(strategy.GetActivityFields(stringAct));
                    }
                }
                else
                {
                    findMissingType = boolAct.GetFindMissingType();
                    strategy        = stratFac.CreateFindMissingStrategy(findMissingType);
                    results.AddRange(strategy.GetActivityFields(boolAct));
                }
            }

            DsfSelectAndApplyActivity selectAndApply = activity as DsfSelectAndApplyActivity;

            if (selectAndApply != null)
            {
                IFindMissingStrategy strategy;
                enFindMissingType    findMissingType;
                var boolAct = selectAndApply.ApplyActivityFunc.Handler as DsfNativeActivity <bool>;
                if (boolAct == null)
                {
                    DsfNativeActivity <string> stringAct = selectAndApply.ApplyActivityFunc.Handler as DsfNativeActivity <string>;
                    if (stringAct != null)
                    {
                        findMissingType = stringAct.GetFindMissingType();
                        strategy        = stratFac.CreateFindMissingStrategy(findMissingType);
                        results.AddRange(strategy.GetActivityFields(stringAct));
                    }
                }
                else
                {
                    findMissingType = boolAct.GetFindMissingType();
                    strategy        = stratFac.CreateFindMissingStrategy(findMissingType);
                    results.AddRange(strategy.GetActivityFields(boolAct));
                }
            }

            IEnumerable <PropertyInfo> properties = StringAttributeRefectionUtils.ExtractAdornedProperties <FindMissingAttribute>(activity);

            foreach (PropertyInfo propertyInfo in properties)
            {
                object property = propertyInfo.GetValue(activity, null);
                if (property != null)
                {
                    results.Add(property.ToString());
                }
            }
            return(results);
        }
        public void SelectAndApplyActivity_UpdateForEachOutputs_ThrowsException()
        {
            var activity = new DsfSelectAndApplyActivity();

            activity.UpdateForEachOutputs(new List <Tuple <string, string> >());
        }