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)); }
/// <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; }