Beispiel #1
0
        public void AllowsToSetSetupPlayerOnlyOnce()
        {
            var resolved = new object();

            this._uriModuleItemResolver.Resolve(null, null).ReturnsForAnyArgs(resolved);

            Action <ResolveSetupPlayer> playerSender = null;

            this._resolveSetupFactory
            .Create <object>(Arg.Do <ResolveSetupArgs>(a => playerSender = a.PlayerSender))
            .ReturnsForAnyArgs(Substitute.For <IShellResolveSetup <object> >());

            var uri = new Uri("tst://tab/module/item");

            this.CreateTestObject(uri).Setup <object>();

            var player1 = new ResolveSetupPlayer((pUri, pResolved) => Substitute.For <IDisposable>());
            var player2 = new ResolveSetupPlayer((pUri, pResolved) => Substitute.For <IDisposable>());

            playerSender(player1);

            ExceptionAssert.Throws <InvalidOperationException>(
                ex => ex.Message.Contains(uri.ToString()),
                () => playerSender(player2));
        }
Beispiel #2
0
        /// <summary>
        /// Receives the function for calling setup for an object resolved via an URI.
        /// </summary>
        /// <param name="player">The function for calling setup for an object resolved via an URI.</param>
        private void ReceiveResolveSetupPlayer(ResolveSetupPlayer player)
        {
            if (player == null)
            {
                throw new InvalidOperationException(
                          string.Format(Properties.Resources.ShellResolveSetupPlayerCannotBeNull, this._unresolvedUri));
            }

            if (this._resolveSetupPlayer != null)
            {
                throw new InvalidOperationException(
                          string.Format(Properties.Resources.AttemptToOverwriteShellResolveSetupPlayer, this._unresolvedUri));
            }

            this._resolveSetupPlayer = player;
        }