public void Inherit_And_Modify_A_BaseView(ViewType viewType, bool attribute, string platformName)
        {
            var platform = GetPlatform(platformName);

            ModelViewInheritanceUpdater.Disabled = true;
            var models = GetModels(viewType, attribute, platform);

            var application = platform.NewApplication <ModelViewInheritanceModule>();
            var module      = CreateModelViewIneritanceModule(viewType, attribute, application, false);
            var testModule1 = new TestModule1 {
                DiffsStore = new StringModelStore(models[0])
            };
            var baseBoTypes = new[] { typeof(ABaseMvi), typeof(TagMvi) };
            var boTypes     = new[] { typeof(AMvi), typeof(FileMvi) };

            testModule1.AdditionalExportedTypes.AddRange(baseBoTypes);
            var testModule2 = new TestModule2 {
                DiffsStore = new StringModelStore(models[1])
            };

            testModule2.AdditionalExportedTypes.AddRange(boTypes);

            application.SetupDefaults(module, testModule1, testModule2,
                                      new TestModule3 {
                DiffsStore = new StringModelStore(models[2])
            });
            var inheritAndModifyBaseView = new InheritAndModifyBaseView(application, viewType, attribute);

            inheritAndModifyBaseView.Verify(application.Model);
            application.Dispose();
        }
Esempio n. 2
0
        public void TestSaveLoadCustomWithParameters()
        {
            if (File.Exists(".model.ts"))
            {
                File.Delete(".model.ts");
            }

            var original = new TestModule1();

            Assert.True(original.has_parameter("test"));

            var params0 = original.parameters();

            Assert.True(params0.ToArray().ToArray()[0].requires_grad);
            original.save(".model.ts");

            var loaded = new TestModule1();

            Assert.True(loaded.has_parameter("test"));

            var params1 = loaded.parameters();

            Assert.True(params1.ToArray()[0].requires_grad);
            Assert.NotEqual(params0.ToArray(), params1);

            loaded.load(".model.ts");
            var params2 = loaded.parameters();

            Assert.True(params2.ToArray()[0].requires_grad);

            File.Delete(".model.ts");

            Assert.Equal(params0, params2);
        }
        public void Inherit_And_Modify_A_BaseView(ViewType viewType, bool attribute)
        {
            ModelViewInheritanceUpdater.Disabled = true;
            var application = new XafApplicationMock().Object;
            var modelViewIneritanceModule = CreateModelViewIneritanceModule(viewType, attribute, application);
            var baseBoTypes = new[] { typeof(ABaseMvi), typeof(TagMvi) };
            var boTypes     = new[] { typeof(AMvi), typeof(FileMvi) };

            modelViewIneritanceModule.AdditionalExportedTypes.AddRange(baseBoTypes.Concat(boTypes));
            application.SetupDefaults(modelViewIneritanceModule);
            var inheritAndModifyBaseView = new InheritAndModifyBaseView(application, viewType, attribute);
            var models = inheritAndModifyBaseView.GetModels().ToArray();

            ModelViewInheritanceUpdater.Disabled = false;

            application = new XafApplicationMock().Object;
            modelViewIneritanceModule = CreateModelViewIneritanceModule(viewType, attribute, application);
            var testModule1 = new TestModule1 {
                DiffsStore = new StringModelStore(models[0])
            };

            testModule1.AdditionalExportedTypes.AddRange(baseBoTypes);
            var testModule2 = new TestModule2 {
                DiffsStore = new StringModelStore(models[1])
            };

            testModule2.AdditionalExportedTypes.AddRange(boTypes);

            application.SetupDefaults(modelViewIneritanceModule, testModule1, testModule2,
                                      new TestModule3 {
                DiffsStore = new StringModelStore(models[2])
            });

            inheritAndModifyBaseView.Verify(application.Model);
        }
        public void Chained_Cloned_listview_merging(bool deepMerge)
        {
            string GetModel()
            {
                string xml;

                using (var xafApplication = Platform.Win.NewApplication <ModelViewInheritanceModule>()){
                    var inheritanceModule = DefaultModelViewInheritancerModule(xafApplication, true, typeof(CloneModelViewModule));
                    var model             = inheritanceModule.Application.Model;
                    var modelApplication  = ((ModelApplicationBase)model).CreatorInstance.CreateModelApplication();
                    ModelApplicationHelper.AddLayer(((ModelApplicationBase)model), modelApplication);

                    var elementListView = model.BOModel.GetClass(typeof(Element)).DefaultListView;
                    elementListView.Columns[nameof(Element.Street)].Index = -1;
                    var lvBase            = ((IModelListView)model.Views[Element.ListViewBase]);
                    var mergedDifferences = ((IModelObjectViewMergedDifferences)lvBase).MergedDifferences;
                    var mergedDifference  = mergedDifferences.AddNode <IModelMergedDifference>();
                    mergedDifference.View      = elementListView;
                    mergedDifferences          = ((IModelObjectViewMergedDifferences)model.Views[Element.ListViewBaseNested]).MergedDifferences;
                    mergedDifference           = mergedDifferences.AddNode <IModelMergedDifference>();
                    mergedDifference.View      = elementListView;
                    mergedDifference.DeepMerge = deepMerge;
                    if (!deepMerge)
                    {
                        mergedDifference      = mergedDifferences.AddNode <IModelMergedDifference>();
                        mergedDifference.View = lvBase;
                    }
                    xml = modelApplication.Xml;
                    ModelApplicationHelper.RemoveLayer((ModelApplicationBase)xafApplication.Model);
                }

                return(xml);
            }

            var modelXml = GetModel();

            using (var newApplication = Platform.Win.NewApplication <ModelViewInheritanceModule>()){
                var module      = DefaultModelViewInheritancerModule(newApplication, false, typeof(CloneModelViewModule));
                var testModule1 = new TestModule1 {
                    DiffsStore = new StringModelStore(modelXml)
                };
                testModule1.AdditionalExportedTypes.Add(typeof(Element));
                newApplication.SetupDefaults(module, testModule1, new CloneModelViewModule());

                var listViewBase = ((IModelListView)newApplication.Model.Views[Element.ListViewBase]);
                listViewBase.Columns[nameof(Element.Street)].Index.ShouldBe(-1);
                ((IModelListView)newApplication.Model.Views[Element.ListViewBaseNested]).Columns[nameof(Element.Street)].Index.ShouldBe(-1);
            }
        }
        public void Inherit_And_Modify_A_BaseView(ViewType viewType, bool attribute, string platformName)
        {
            var platform    = GetPlatform(platformName);
            var application = platform.NewApplication <ModelViewInheritanceModule>();
            var module      = CreateModelViewInheritanceModule(viewType, attribute, application, false);
            var testModule1 = new TestModule1 {
                DiffsStore = new ResourcesModelStore(GetType().Assembly, "Model0")
            };
            var baseBoTypes = new[] { typeof(ABaseMvi), typeof(TagMvi) };
            var boTypes     = new[] { typeof(AMvi), typeof(FileMvi) };

            testModule1.AdditionalExportedTypes.AddRange(baseBoTypes);
            var testModule2 = new TestModule2 {
                DiffsStore = new ResourcesModelStore(GetType().Assembly, "Model1")
            };

            testModule2.AdditionalExportedTypes.AddRange(boTypes);

            application.SetupDefaults(module, testModule1, testModule2,
                                      new TestModule3 {
                DiffsStore = new ResourcesModelStore(GetType().Assembly, "Model2")
            });

            var modelClassB = application.Model.BOModel.GetClass(typeof(AMvi));
            var viewB       = viewType == ViewType.ListView? modelClassB.DefaultListView.AsObjectView:modelClassB.DefaultDetailView;

            viewB.Caption.ShouldBe("Changed");
            viewB.AllowDelete.ShouldBe(false);
            if (viewB is IModelListView modelListView)
            {
                modelListView.Columns[nameof(ABaseMvi.Description)].Caption.ShouldBe("New");
                modelListView.Columns[nameof(ABaseMvi.Name)].ShouldBeNull();
                modelListView.Columns[nameof(ABaseMvi.Oid)].Index.ShouldBe(100);
                ((IModelViewHiddenActions)modelListView).HiddenActions.Any().ShouldBeTrue();
            }
            else
            {
                var modelDetailView = ((IModelDetailView)viewB);
                modelDetailView.Layout.GetNodeByPath($"Main/SimpleEditors/{nameof(AMvi)}/{nameof(ABaseMvi.Name)}").ShouldBeNull();
                modelDetailView.Layout.GetNodeByPath($"Main/SimpleEditors/{nameof(ABaseMvi)}/{nameof(ABaseMvi.Description)}").ShouldNotBeNull();
                modelDetailView.Layout.GetNodeByPath("Main/Oid").ShouldNotBeNull();
                modelDetailView.Layout.GetNodeByPath("Main/Tags_Groups").ShouldBeNull();
                modelDetailView.Layout.GetNodeByPath("Main/Tabs/FileMvis/FileMvis").ShouldNotBeNull();
                modelDetailView.Layout.GetNodeByPath("Main/Tabs/Tags/Tags");
                modelDetailView.Layout.GetNode("Main").NodeCount.ShouldBe(3);
            }
            application.Dispose();
        }
        public void Chained_Cloned_ListView_merging()
        {
            using var newApplication = Platform.Win.NewApplication <ModelViewInheritanceModule>();
            var module      = DefaultModelViewInheritanceModule(newApplication, false, typeof(CloneModelViewModule));
            var testModule1 = new TestModule1 {
                DiffsStore = new ResourcesModelStore(GetType().Assembly, "ChainedListView")
            };

            testModule1.AdditionalExportedTypes.Add(typeof(Element));
            newApplication.SetupDefaults(module, testModule1, new CloneModelViewModule());

            var listViewBase = ((IModelListView)newApplication.Model.Views[Element.ListViewBase]);

            listViewBase.Columns[nameof(Element.Street)].Index.ShouldBe(-1);
            ((IModelListView)newApplication.Model.Views[Element.ListViewBaseNested]).Columns[nameof(Element.Street)].Index.ShouldBe(-1);
        }
 public static void ModuleTypeListExtentionsTests() => Describe(nameof(ModuleTypeListExtentions), () =>
 {
     _ = new TestModule();  //Fix CA1812
     _ = new TestModule1(); //Fix CA1812