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();
        }
        private string[] GetModels(ViewType viewType, bool attribute, Platform platform)
        {
            var application = platform.NewApplication <ModelViewInheritanceModule>();

            CreateModelViewIneritanceModule(viewType, attribute, application);
            var inheritAndModifyBaseView = new InheritAndModifyBaseView(application, viewType, attribute);
            var models = inheritAndModifyBaseView.GetModels().ToArray();

            ModelViewInheritanceUpdater.Disabled = false;
            application.Dispose();
            return(models);
        }