Hi,

Below are two of my tests and then a utility method they use. If I
don't call BackToRecordAll() before I call my SetupResults() function
it will throw an error so I do a partially redundant call to
BackToRecordAll() to reset all the expectations\results. I'd assume
that the easy answer is to making my code less ugly would be to
elminate using (_mockRepository.Record()) but i like the way the using
block shows explicitly what is being mocked to newbies. Any other
suggestions on how to make this look cleaner?

--------------------------------
Test code
--------------------------------

      [Test]
      public void DecoderDisabled_UnableToShoot()
      {
         bool sourceGroupEnabled = false;
         bool sourceGroupEnabledWithDecoder = false;

         _mockRepository.BackToRecordAll();
         using (_mockRepository.Record())
         {
            SetupResults(sourceGroupEnabled,
sourceGroupEnabledWithDecoder);
         }

         using (_mockRepository.Playback())
         {
            _dynamiteShooterSm.Init();
         }

         AssertThatCurrentStateIs(_dynamiteShooterSm.qUnableToShoot);
      }

      [Test]
      public void SourceGroupEnabledWithoutDecoder_UnableToShoot()
      {
         _mockRepository.BackToRecordAll();
         using (_mockRepository.Record())
         {
            SetupResults(true, false);
            SetupResult.For(_sourceGroup.Enabled).Return(false);
         }

         using (_mockRepository.Playback())
         {
            _dynamiteShooterSm.Init();
         }
         AssertThatCurrentStateIs(_dynamiteShooterSm.qUnableToShoot);
      }

--------------------------------
Setup code
--------------------------------

      /// <summary>
      /// Method should be called from within a record block and
      /// will setup results for standard things needed during testing
      /// </summary>
      /// <param name="sourceGroupEnabled">The value returned by
      /// DynamiteShooterStateMachine.SourceGroup.Enabled</param>
      /// <param name="sourceGroupEnabledWithDecoders">The value
returned by
      /// DynamiteShooterStateMachine.SourceGroup.EnabledWithDecoders</
param>
      protected void SetupResults(bool sourceGroupEnabled,
                                 bool sourceGroupEnabledWithDecoders)
      {
         SetupResults("TestSourceGroup", sourceGroupEnabled,
            sourceGroupEnabledWithDecoders);
      }

      /// <summary>
      /// Method should be called from within a record block and
      /// will setup results for standard things needed during testing
      /// </summary>
      /// <param name="sourceGroupName">The value returned by
      /// DynamiteShooterStateMachine.SourceGroup.Name which
      /// will be used to make the name of the thread
      /// that the test executes on amoung other things</param>
      /// <param name="sourceGroupEnabled">The value returned by
      /// DynamiteShooterStateMachine.SourceGroup.Enabled</param>
      /// <param name="sourceGroupEnabledWithDecoders">The value
returned by
      /// DynamiteShooterStateMachine.SourceGroup.EnabledWithDecoders</
param>
      protected void SetupResults(string sourceGroupName, bool
sourceGroupEnabled,
                                 bool sourceGroupEnabledWithDecoders)
      {
         if (sourceGroupEnabled == false &&
sourceGroupEnabledWithDecoders == true)
            throw new InvalidOperationException("Error:
sourceGroupEnabled can't be false"
               + " if sourceGroupEnabledWithDecoders is true");

         SetupResult.For(_sourceGroup.Name).Return(sourceGroupName);
 
SetupResult.For(_sourceGroup.Enabled).Return(sourceGroupEnabled);
         SetupResult.For(_sourceGroup.EnabledWithDecoders)
            .Return(sourceGroupEnabledWithDecoders);
      }


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Rhino.Mocks" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/RhinoMocks?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to