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());
 }
예제 #2
0
        public void TestSequenceLinkFirstTargetThenSource()
        {
            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", Value = new object(), Role = DataItemRole.Input };
            IDataItem sourceOutput = new DataItem { Name = "SO", Value = new object(), Role = DataItemRole.Output };
            IDataItem targetInput = new DataItem { Name = "TI", Value = new object(), Role = DataItemRole.Input };
            IDataItem targetOutput = new DataItem { Name = "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 }
            };

            sourceInput.LinkTo(targetOutput);

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

            Assert.AreEqual("targetsource", result);
        }
 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[0].Value).Value = DateTime.Now;
     
     Assert.AreEqual(1, model.OnInputDataChangedCallCount);
 }
        public void OnInputDataChangedIsCalledOnceWhenUnLinkingInputDataItems()
        {
            //setup a sourceitem connected to a model
            var sourceItem = new DataItem
                                 {
                                     Value = new Parameter<int>()
                                 };
            var model = new SimplerModel();
            model.DataItems[0].LinkTo(sourceItem);
            //reset call counts
            model.OnInputDataChangedCallCount = 0;

            //unlink 
            model.DataItems[0].Unlink();
            
            Assert.AreEqual(1, model.OnInputDataChangedCallCount);
        }
        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);
        }
        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.DataItems[0].Value,
                                           model.DataItems[0],
                                           model.DataItems[1].Value,
                                           model.DataItems[1],
                                           model.DataItems[2].Value,
                                           model.DataItems[2],
                                           model.DataItems[3].Value,
                                           model.DataItems[3],
                                           dataItem,
                                           model },
                            model.GetAllItemsRecursive().ToArray());
        }
예제 #7
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());
        }
예제 #8
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.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;
         }
예제 #9
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));
        }
예제 #10
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<int>()
                                 };
            var model = new SimplerModel();
            model.DataItems[0].LinkTo(sourceItem);
            //reset call count
            model.OnInputDataChangedCallCount = 0;

            //link to other item
            var otherItem = new DataItem();
            model.DataItems[0].LinkTo(otherItem);

            Assert.AreEqual(2, model.OnInputDataChangedCallCount);
        }
예제 #11
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);
        }