I think you're correct in assuming the TimeZoneInfo equality checks.
I just did a quick test of this:

[TestMethod]
public void Check()
{
        var tzi1 = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
        var tzi2 = TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time");
        
        Assert.AreSame(tzi1, tzi2);
}

And the test failed.  So FindSystemTimeZoneById is returning a new
object even if it represents the same timezone.  You may have to write
a wrapper for TimeZoneInfo that overrides Equals and do your own
equality comparison.

---
Patrick Steele
http://weblogs.asp.net/psteele



On Sun, Apr 18, 2010 at 12:46 AM, Ryan W <[email protected]> wrote:
> I'm having a hard time getting expectations to work for TimeZoneInfo,
> and was hoping someone could take a look and verify I'm doing this
> correctly?  Here's some sample code:
>
>
> public interface IServiceThatUsesTimeZoneInfo
> {
>    string MethodWithTimeZoneInfoParameter(TimeZoneInfo tzInfo);
> }
>
> public class CodeUnderTest
> {
>    IServiceThatUsesTimeZoneInfo _service;
>
>    public CodeUnderTest(IServiceThatUsesTimeZoneInfo service)
>    {
>        _service = service;
>    }
>
>    public string MethodToTest()
>    {
>        return
> _service.MethodWithTimeZoneInfoParameter(TimeZoneInfo.FindSystemTimeZoneById("Pacific
> Standard Time"));
>    }
> }
>
> [TestFixture]
> public class TimeZoneInfoTest
> {
>    [Test]
>    public void TestTimeZoneInfoMock()
>    {
>        RhinoMocks.Logger = new
> TextWriterExpectationLogger(Console.Out);
>        IServiceThatUsesTimeZoneInfo fakeService =
> MockRepository.GenerateMock<IServiceThatUsesTimeZoneInfo>();
>        fakeService.Expect(service =>
> service.MethodWithTimeZoneInfoParameter(TimeZoneInfo.FindSystemTimeZoneById("Pacific
> Standard Time"))).Return("hello world");
>        //fakeService.Expect(service =>
> service.MethodWithTimeZoneInfoParameter(TimeZoneInfo.FindSystemTimeZoneById("Pacific
> Standard Time"))).IgnoreArguments().Return("hello world");
>        CodeUnderTest c = new CodeUnderTest(fakeService);
>        string s = c.MethodToTest();
>        Assert.AreEqual("hello world", s);
>        fakeService.VerifyAllExpectations();
>    }
> }
>
>
> This test fails, unless I add the IgnoreArguments.  But you'll see
> with the Expectation Logger that they appear to be equal instances of
> TimeZoneInfo.  Perhaps this is a problem with TimeZoneInfo, and doing
> equality checks with them?  How can I get to TimeZoneInfo instances to
> match up with Rhino Mocks expectations?
>
> Thanks!

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