Example #1
0
        /// <summary>
        /// Serialize and update dyf based on FunctionNamePromptEventArgs
        /// </summary>
        /// <param name="args">FunctionNamePromptEventArgs which contains updated dyf info</param>
        /// <param name="dynamoViewModel">Dynamo View Model</param>
        /// <param name="functionNodeModel">Custom Node</param>
        internal void SerializeCustomNodeWorkspaceWithNewInfo(FunctionNamePromptEventArgs args, DynamoViewModel dynamoViewModel, Function functionNodeModel)
        {
            CustomNodeWorkspaceModel ws;

            dynamoViewModel.Model.CustomNodeManager.TryGetFunctionWorkspace(
                functionNodeModel.Definition.FunctionId,
                DynamoModel.IsTestMode,
                out ws);
            ws.SetInfo(args.Name, args.Category, args.Description);

            if (!string.IsNullOrEmpty(ws.FileName))
            {
                // Construct a temp WorkspaceViewModel based on the CustomNodeWorkspaceModel
                // for serialization. We need to do so because only CustomNodeWorkspaceModel
                // is accessible at this point, the dyf is not guaranteed to be opened
                WorkspaceViewModel temp = new WorkspaceViewModel(ws, dynamoViewModel);
                temp.Save(ws.FileName);
                temp.Dispose();
            }
        }
        public void ElementList_AddAllElement_NoError()
        {
            var factories = new IElementFactoryViewModel<IElementViewModel>[]
            {
                new PortiereFactoryViewModel(),
                new PleatFactoryViewModel(),
                new TulleFactoryViewModel(),
                new TieBackFactoryViewModel(), 
                new PanelFactoryViewModel(), 
                new HardPelmetFactoryViewModel(), 
                new ApplicationFactoryViewModel(), 
                new ScanFactoryViewModel(), 
                new OverlayFactoryViewModel(), 
                new FilletFactoryViewModel(), 
                new EqualSwagFactoryViewModel(), 
                new EqualTailFactoryViewModel(), 
                new ScaleneSwagFactoryViewModel(), 
                new ScaleneTailFactoryViewModel(),
                new DeJabotFactoryViewModel(), 
                new LatticeFactoryViewModel(), 
                new RomanBlindFactoryViewModel()
            };
            var screen = new ScreenViewModel()
            {
                Width = 4,
                Height = 2
            };

            var settingData = MockRepository.GenerateStub<ISettingData>();
            settingData.Stub(sd => sd.ProgramName).Return("MyName");
            settingData.Stub(sd => sd.Version).Return("1.0.0.0");

            var settingProvider = MockRepository.GenerateStub<ISettingProvider>();
            settingProvider.Stub(sp => settingProvider.GetSettingData()).Return(settingData);

            var workspace = new WorkspaceViewModel()
            {
                Factories = factories,
                Screen = screen,
                CommandFactory = MockRepository.GenerateStub<ICommandFactory>(),
                SettingProvider = settingProvider
            };

            var elementList = workspace.ElementList;
            factories.ToList()
                .ForEach(factory => elementList.AppendElement(factory));

            Assert.That(elementList.Count(), Is.EqualTo(factories.Length));

            var dataTransfer = workspace.Save();

            Assert.DoesNotThrow(() =>
            {
                var serializer = new XmlSerializer(StandardXmlPrimitive.Primitives, dataTransfer);
                serializer.Serialize();
            });
            workspace.Restore(dataTransfer);
            Assert.That(elementList.Count(), Is.EqualTo(factories.Length));
        }