public void CreateNewProject()
        {
            var project = new Mock <IProject>();

            var service = new Mock <IUserInterfaceService>();
            {
                service.Setup(s => s.Contains(It.IsAny <CommandId>()))
                .Returns(true);

                service.Setup(s => s.Invoke(It.IsAny <CommandId>(), It.IsAny <ICommandContext>()))
                .Callback <CommandId, ICommandContext>(
                    (id, context) =>
                {
                    CreateProjectContext createContext = context as CreateProjectContext;
                    createContext.Result = Task <IProject> .Factory.StartNew(
                        () => project.Object,
                        new CancellationToken(),
                        TaskCreationOptions.None,
                        new CurrentThreadTaskScheduler());
                })
                .Verifiable();
            }

            var facade = new ScriptBackEndProjectHub(new ProjectHub(service.Object));

            facade.NewProject();

            Assert.IsTrue(facade.HasActiveProject());
            service.Verify(s => s.Invoke(It.IsAny <CommandId>(), It.IsAny <CreateProjectContext>()), Times.Exactly(1));
        }
        public void UnloadProjectWithoutCurrentProject()
        {
            var service = new Mock <IUserInterfaceService>();
            var facade  = new ScriptBackEndProjectHub(new ProjectHub(service.Object));

            Assert.Throws <CannotUnloadProjectException>(() => facade.UnloadProject());
        }
        public void CreateNewProject()
        {
            var project = new Mock<IProject>();

            var service = new Mock<IUserInterfaceService>();
            {
                service.Setup(s => s.Contains(It.IsAny<CommandId>()))
                    .Returns(true);

                service.Setup(s => s.Invoke(It.IsAny<CommandId>(), It.IsAny<ICommandContext>()))
                    .Callback<CommandId, ICommandContext>(
                        (id, context) =>
                        {
                            CreateProjectContext createContext = context as CreateProjectContext;
                            createContext.Result = Task<IProject>.Factory.StartNew(
                                () => project.Object,
                                new CancellationToken(),
                                TaskCreationOptions.None,
                                new CurrentThreadTaskScheduler());
                        })
                    .Verifiable();
            }

            var facade = new ScriptBackEndProjectHub(new ProjectHub(service.Object));
            facade.NewProject();

            Assert.IsTrue(facade.HasActiveProject());
            service.Verify(s => s.Invoke(It.IsAny<CommandId>(), It.IsAny<CreateProjectContext>()), Times.Exactly(1));
        }
        public void CreateNewProjectWithLoadingFailure()
        {
            var service = new Mock<IUserInterfaceService>();
            {
                service.Setup(s => s.Contains(It.IsAny<CommandId>()))
                    .Returns(true);

                service.Setup(s => s.Invoke(It.IsAny<CommandId>(), It.IsAny<ICommandContext>()))
                    .Callback<CommandId, ICommandContext>(
                        (id, context) =>
                        {
                            CreateProjectContext createContext = context as CreateProjectContext;
                            createContext.Result = null;
                        })
                    .Verifiable();
            }

            var facade = new ScriptBackEndProjectHub(new ProjectHub(service.Object));
            Assert.Throws<FailedToCreateProjectException>(() => facade.NewProject());
            service.Verify(s => s.Invoke(It.IsAny<CommandId>(), It.IsAny<CreateProjectContext>()), Times.Exactly(1));
        }
        /// <summary>
        /// Initializes a new instance of the <see cref="ScriptFrontEndProjectHub"/> class.
        /// </summary>
        /// <param name="projects">The object that handles all the project activities.</param>
        /// <exception cref="ArgumentNullException">
        ///     Thrown if <paramref name="projects"/> is <see langword="null" />.
        /// </exception>
        public ScriptFrontEndProjectHub(ScriptBackEndProjectHub projects)
        {
            {
                Enforce.Argument(() => projects);
            }

            m_Projects = projects;
            {
                m_Projects.OnNewProjectLoaded +=
                    (s, e) =>
                    {
                        m_Current = null;
                        RaiseOnNewProjectLoaded();
                    };
                m_Projects.OnProjectUnloaded +=
                    (s, e) =>
                    {
                        m_Current = null;
                        RaiseOnProjectUnloaded();
                    };
            }
        }
示例#6
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ScriptFrontEndProjectHub"/> class.
        /// </summary>
        /// <param name="projects">The object that handles all the project activities.</param>
        /// <exception cref="ArgumentNullException">
        ///     Thrown if <paramref name="projects"/> is <see langword="null" />.
        /// </exception>
        public ScriptFrontEndProjectHub(ScriptBackEndProjectHub projects)
        {
            {
                Enforce.Argument(() => projects);
            }

            m_Projects = projects;
            {
                m_Projects.OnNewProjectLoaded +=
                    (s, e) =>
                {
                    m_Current = null;
                    RaiseOnNewProjectLoaded();
                };
                m_Projects.OnProjectUnloaded +=
                    (s, e) =>
                {
                    m_Current = null;
                    RaiseOnProjectUnloaded();
                };
            }
        }
        public void CreateNewProjectWithLoadingFailure()
        {
            var service = new Mock <IUserInterfaceService>();
            {
                service.Setup(s => s.Contains(It.IsAny <CommandId>()))
                .Returns(true);

                service.Setup(s => s.Invoke(It.IsAny <CommandId>(), It.IsAny <ICommandContext>()))
                .Callback <CommandId, ICommandContext>(
                    (id, context) =>
                {
                    CreateProjectContext createContext = context as CreateProjectContext;
                    createContext.Result = null;
                })
                .Verifiable();
            }

            var facade = new ScriptBackEndProjectHub(new ProjectHub(service.Object));

            Assert.Throws <FailedToCreateProjectException>(() => facade.NewProject());
            service.Verify(s => s.Invoke(It.IsAny <CommandId>(), It.IsAny <CreateProjectContext>()), Times.Exactly(1));
        }
示例#8
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ScriptHost"/> class.
        /// </summary>
        /// <param name="projects">The object that handles all the project related actions.</param>
        /// <param name="appdomainBuilder">The function that creates a new <see cref="AppDomain"/> with the given name.</param>
        /// <param name="scheduler">The scheduler that will be used to schedule tasks.</param>
        /// <exception cref="ArgumentNullException">
        ///     Thrown if <paramref name="projects"/> is <see langword="null" />.
        /// </exception>
        /// <exception cref="ArgumentNullException">
        ///     Thrown if <paramref name="appdomainBuilder"/> is <see langword="null" />.
        /// </exception>
        public ScriptHost(
            ILinkToProjects projects,
            Func<string, AppDomainPaths, AppDomain> appdomainBuilder,
            TaskScheduler scheduler = null)
        {
            {
                Enforce.Argument(() => projects);
                Enforce.Argument(() => appdomainBuilder);
            }

            m_Projects = new ScriptBackEndProjectHub(projects);
            m_AppDomainBuilder = appdomainBuilder;
            m_Scheduler = scheduler ?? TaskScheduler.Default;
        }
 public void UnloadProjectWithoutCurrentProject()
 {
     var service = new Mock<IUserInterfaceService>();
     var facade = new ScriptBackEndProjectHub(new ProjectHub(service.Object));
     Assert.Throws<CannotUnloadProjectException>(() => facade.UnloadProject());
 }