I'm trying to have a mocked boolean property return different values
at different times during my test and I was told in this thread:

http://groups.google.com/group/RhinoMocks/browse_thread/thread/9367c1cee412b651

to use the Do() function to achieve this. I reviewed the documentation
and I can't get it to work. I've put my code below.

-----------------------------------------------------------------
Code
-----------------------------------------------------------------


   #region UnableToShoot


   /// <summary>
   /// Class for testing DynamiteShooterStateMachine UnableToShoot
transitions
   /// </summary>
   [TestFixture]
   public class UnableToShoot : DynamiteShooterStateMachineTestsBase
   {
      bool _sourceGroupEnabled;
      delegate bool BoolPropertyDelegate();


      [Test]
      public void
SourceGroupEnabledWithDecoder_ShooterEnabled_UnableToShoot()
      {
         _sourceGroupEnabled = false;


         using (_mockRepository.Record())
         {
            _sourceGroup =
_mockRepository.DynamicMock<ISourceGroup>();
            _sourcePoint = null;  // Type is ISourcePoint
            _dynamiteShooterSm =


_mockRepository.PartialMock<DynamiteShooterStateMachineTestHarness>
                                 (_sourceGroup, _sourcePoint);  //
This creates a mock DynamiteShooterStateMachine that returns the
source group mock
 
SetupResult.For(_sourceGroup.Name).Return("TestingGroup");
            Expect.Call(_sourceGroup.Enabled).IgnoreArguments()
               .Do(new
BoolPropertyDelegate(GetSourceGroupEnabled));  //
_sourceGroup.Enabled
is a bool property
            SetupResult.For(_sourceGroup.EnabledWithDecoders)
               .Return(false);
         }


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


AssertThatCurrentStateIs(_dynamiteShooterSm.qUnableToShoot);
            _sourceGroupEnabled = true;
            DynamiteShooterStateMachineEvent shooterEnabled
               = new DynamiteShooterStateMachineEvent
               (DynamiteShooterStateMachineSignal.ShooterEnabled,
_sourceGroup);
            _dynamiteShooterSm.Dispatch(shooterEnabled);
 
AssertThatCurrentStateIs(_dynamiteShooterSm.qAbleToShoot);
         }
      }


      protected bool GetSourceGroupEnabled()
      {
         return _sourceGroupEnabled;
      }


   }


-----------------------------------------------------------------
ISourceGroup
-----------------------------------------------------------------

   /// <summary>
   /// Defines the minimum set of properties/methods/events to be
implemented by a source group (ie, fleet, etc).
   /// </summary>
   public interface ISourceGroup : IParameters
   {
      /// <summary>
      /// If this source group is a vibrator fleet, this will be the
logical number for this fleet (NOT the database ID).  For any other
source type, this will be -1.
      /// </summary>
      sbyte FleetNumber { get; }

      /// <summary>
      /// Indicates whether or not this SourceGroup is ready to shoot
      /// </summary>
      /// TODO: Ryan - should this be renamed to ReadyToShoot?
      bool Enabled { get; }

      /// <summary>
      /// Indicates that Source Group is both enabled and has a source
unit (ShotPro decoder for dynamite)
      /// assigned to it
      /// </summary>
      bool EnabledWithDecoders { get; }

      /// <summary>
      /// Indicates that this fleet is not a real fleet, but an
abstraction that means "any fleet."
      /// It is used when source point can be shot by any fleet. This
source point is associated
      /// with "any armed" fleet instead of concrete fleet
      /// </summary>
      bool AnyArmed { get; }

      ///// <summary>
      ///// Returns a bit array of decoder numbers which have been
associated with this source group.  For dynamite crews, this will only
      ///// contain 1 number.
      ///// </summary>
      //uint DecoderNumbersAsBitArray { get; }

      /// <summary>
      /// The type of technology used by this source group to generate
a seismic source.
      /// </summary>
      SourceType SourceType { get; }

      /// <summary>
      /// Returns a dictionary of ISourceControllers which are
assigned to this source group.
      /// </summary>
      Dictionary<int, ISourceController> SourceControllers { get; }
   }

--~--~---------~--~----~------------~-------~--~----~
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