Example #1
0
        public void OnInputDataChangedIsCalledTwiceWhenChangingLinkTo()
        {
            //this is unwanted behaviour since we only need one notification actually
            //but i see no simple way of detecting unlink/link without introducing extra complexity
            //now is chosen to see the change as two separate changes.


            //setup a sourceitem connected to a model
            var sourceItem = new DataItem
            {
                Value = new Parameter <DateTime>()
            };
            var model = new SimplerModel();

            model.DataItems.First(di => di.ValueType == typeof(Parameter <DateTime>)).LinkTo(sourceItem);
            //reset call count
            model.OnInputDataChangedCallCount = 0;

            //link to other item
            var otherItem = new DataItem();

            model.DataItems.First(di => di.ValueType == typeof(Parameter <DateTime>)).LinkTo(otherItem);

            Assert.AreEqual(2, model.OnInputDataChangedCallCount);
        }
Example #2
0
        public void CheckDefaultDataItemRoles()
        {
            var model = new SimplerModel();

            Assert.AreEqual(3, model.DataItems.Where(di => di.Role == DataItemRole.Input).Count());
            Assert.AreEqual(1, model.DataItems.Where(di => di.Role == DataItemRole.None).Count());
        }
Example #3
0
        public void TestProgressIndication()
        {
            string result = "";

            var model1 = new SimplerModel {
                Name = "source"
            };

            model1.Executing += (s, e) => result += ((SimplerModel)s).Name;

            var model2 = new SimplerModel {
                Name = "target"
            };

            model2.Executing += (s, e) => result += ((SimplerModel)s).Name;

            var compositeModel = new CompositeModel
            {
                Name   = "composite model",
                Models = { model1, model2 }
            };

            var progressList = new List <string>();

            compositeModel.ProgressChanged += delegate
            {
                progressList.Add(compositeModel.GetProgressText());
            };

            compositeModel.Initialize();
            compositeModel.Execute();

            Assert.AreEqual("50.00 %", progressList[0]);
            Assert.AreEqual("100.00 %", progressList[1]);
        }
Example #4
0
        public void OnInputDataChangedIsCalledOnceParameterChanges()
        {
            //should get two property changes. one for parameter.Value and one for ProgressStart
            var model = new SimplerModel();

            Assert.AreEqual(0, model.OnInputDataChangedCallCount);
            ((Parameter <DateTime>)model.DataItems.First(di => di.ValueType == typeof(Parameter <DateTime>)).Value).Value = DateTime.Now;

            Assert.AreEqual(1, model.OnInputDataChangedCallCount);
        }
Example #5
0
        public void GetItemsRecursiveShouldReturnModelsContainedByCompositeMOdel()
        {
            var model  = new CompositeModel();
            var model1 = new SimplerModel();

            model.Models.Add(model1);

            Project project = new Project();

            project.RootFolder.Add(model);
            Assert.IsTrue(project.GetAllItemsRecursive().Contains(model1));
        }
Example #6
0
        public void GetAllItemsRecursiveShouldReturnModels()
        {
            var compositeModel = new CompositeModel();
            var model          = new SimplerModel();

            compositeModel.Models.Add(model);

            IEnumerable <object> enumerable = compositeModel.GetAllItemsRecursive();

            Assert.IsTrue(enumerable.Contains(model));
            Assert.AreEqual(
                1 + compositeModel.DataItems.Count * 2 + model.GetAllItemsRecursive().Count(),
                enumerable.Count());
        }
Example #7
0
        private static Project Create17ItemsProjectTree()
        {
            //   RootFolder
            //      |-DataItem1
            //          |-DataItem1Value
            //      |-Folder 1
            //          |-DataItemSet1
            //              |-DataItem2
            //                  |-string
            //      |-Model
            //          |-DataItem3
            //          |-StartTime
            //              |-StartTimeValue
            //          |-StopTime
            //              |-StopTimeValue
            //          |-CurrentTime
            //              |-CurrentTimeValue
            //          |-TimeStep
            //              |-TimeStepValue

            Project p      = new Project();
            var     folder = new Folder("folder1");

            p.RootFolder.Items.Add(new DataItem {
                Value = "dataItem1Value"
            });
            var set       = new DataItemSet("dataItemSet1");
            var dataItem2 = new DataItem {
                Name = "DataItem2"
            };

            dataItem2.Value = "string";
            set.DataItems.Add(dataItem2);

            //TODO : replace simplermodel with a mock/stubbed object
            SimplerModel model = new SimplerModel();

            model.DataItems.Add(new DataItem()
            {
                Name = "DataItem3"
            });
            folder.Items.Add(set);

            p.RootFolder.Add(folder);
            p.RootFolder.Add(model);
            return(p);
        }
Example #8
0
        public void TestSequenceLinkFirstSourceThenTarget()
        {
            string result = "";

            SimplerModel sourceModel = new SimplerModel {
                Name = "source"
            };

            sourceModel.Executing += (s, e) => result += ((SimplerModel)s).Name;

            SimplerModel targetModel = new SimplerModel {
                Name = "target"
            };

            targetModel.Executing += (s, e) => result += ((SimplerModel)s).Name;

            IDataItem sourceInput = new DataItem {
                Name = "SI", Tag = "SI", Value = new object(), Role = DataItemRole.Input
            };
            IDataItem sourceOutput = new DataItem {
                Name = "SO", Tag = "SO", Value = new object(), Role = DataItemRole.Output
            };
            IDataItem targetInput = new DataItem {
                Name = "TI", Tag = "TI", Value = new object(), Role = DataItemRole.Input
            };
            IDataItem targetOutput = new DataItem {
                Name = "TO", Tag = "TO", Value = new object(), Role = DataItemRole.Output
            };

            sourceModel.DataItems.Add(sourceInput);
            sourceModel.DataItems.Add(sourceOutput);
            targetModel.DataItems.Add(targetInput);
            targetModel.DataItems.Add(targetOutput);

            var compositeModel = new CompositeModel
            {
                Name   = "composite model",
                Models = { sourceModel, targetModel }
            };

            targetInput.LinkTo(sourceOutput);

            compositeModel.Initialize();
            compositeModel.Execute();

            Assert.AreEqual("sourcetarget", result);
        }
Example #9
0
        public void OnInputDataChangedIsCalledOnceWhenLinkingInputDataItems()
        {
            //setup a sourceitem and a model
            var sourceItem = new DataItem
            {
                Value = new Parameter <DateTime>()
            };



            var model = new SimplerModel();

            //connect the model to the sourceitem
            model.DataItems.First(di => di.ValueType == typeof(Parameter <DateTime>)).LinkTo(sourceItem);

            Assert.AreEqual(1, model.OnInputDataChangedCallCount);
        }
Example #10
0
        public void GetAllItemsRecursive()
        {
            SimplerModel model    = new SimplerModel();
            var          dataItem = new DataItem();

            model.DataItems.Add(dataItem);

            var items = model.GetAllItemsRecursive().ToArray();

            Assert.AreEqual(new object[]
            {
                model, model.DataItems[0], model.DataItems[1], model.DataItems[2], model.DataItems[3],
                dataItem, model.DataItems[0].Value, model.DataItems[1].Value, model.DataItems[2].Value,
                model.DataItems[3].Value
            },
                            model.GetAllItemsRecursive().ToArray());
        }
Example #11
0
        public void OnInputDataChangedIsCalledOnceWhenLinkingInputDataItems()
        {
            //setup a sourceitem and a model
            var sourceItem = new DataItem
            {
                Value = new Parameter <int>()
            };



            var model = new SimplerModel();

            //connect the model to the sourceitem
            model.DataItems[0].LinkTo(sourceItem);

            Assert.AreEqual(1, model.OnInputDataChangedCallCount);
        }
Example #12
0
        public void OnInputDataChangedIsCalledOnceWhenUnLinkingInputDataItems()
        {
            //setup a sourceitem connected to a model
            var sourceItem = new DataItem
            {
                Value = new Parameter <DateTime>()
            };
            var model = new SimplerModel();

            model.DataItems.First(di => di.ValueType == typeof(Parameter <DateTime>)).LinkTo(sourceItem);
            //reset call counts
            model.OnInputDataChangedCallCount = 0;

            //unlink
            model.DataItems.First(di => di.ValueType == typeof(Parameter <DateTime>)).Unlink();

            Assert.AreEqual(1, model.OnInputDataChangedCallCount);
        }
Example #13
0
        public void OnInputDataChangedIsCalledWhenTheValueOfADataItemChanges()
        {
            var parameter  = new Parameter <DateTime>();
            var sourceItem = new DataItem
            {
                Value = parameter
            };
            var model = new SimplerModel();

            model.DataItems.First(di => di.ValueType == typeof(Parameter <DateTime>)).LinkTo(sourceItem);
            //reset call count
            model.OnInputDataChangedCallCount = 0;

            //action..set a value
            parameter.Value = new DateTime(2010);

            Assert.AreEqual(1, model.OnInputDataChangedCallCount);
        }
Example #14
0
        public void OnInputDataChangedIsCalledWhenTheValueOfADataItemChanges()
        {
            var parameter  = new Parameter <int>();
            var sourceItem = new DataItem
            {
                Value = parameter
            };
            var model = new SimplerModel();

            model.DataItems[0].LinkTo(sourceItem);
            //reset call count
            model.OnInputDataChangedCallCount = 0;

            //action..set a value
            parameter.Value = 2;

            Assert.AreEqual(1, model.OnInputDataChangedCallCount);
        }