Example #1
0
    private void ProvideLocalValuesAcrossThreads()
    {
        var expectedA = DateTime.MinValue;
        var expectedB = DateTime.MaxValue;
        var actualA   = DateTime.Today;
        var actualB   = DateTime.Today;

        var threadA = new Thread(() =>
        {
            TimeContext.Init(() => expectedA);
            actualA = TimeContext.Now;
        });

        var threadB = new Thread(() =>
        {
            TimeContext.Init(() => expectedB);
            actualB = TimeContext.Now;
        });

        threadA.Start();
        threadB.Start();
        threadA.Join();
        threadB.Join();

        Assert.Equal(expectedA, actualA);
        Assert.Equal(expectedB, actualB);
    }
Example #2
0
    private void AllowReturningUtcTime()
    {
        var fakeTime = new DateTime(2000, 1, 1);

        TimeContext.Init(() => fakeTime);

        var actual = TimeContext.UtcNow;

        Assert.Equal(fakeTime.ToUniversalTime(), actual);
    }
Example #3
0
    private void AllowInitialization()
    {
        var expected = new DateTime(2000, 1, 1);

        TimeContext.Init(() => expected);

        var actual = TimeContext.Now;

        Assert.Equal(expected, actual);
    }
Example #4
0
    private void AllowResettingInitalization()
    {
        var fakeTime = new DateTime(1900, 1, 1);

        TimeContext.Init(() => fakeTime);

        var fakeTimeResult = TimeContext.Now;

        TimeContext.Reset();
        var resetTimeResult = TimeContext.Now;

        Assert.NotEqual(fakeTimeResult.Year, resetTimeResult.Year);
    }
Example #5
0
    private void ThrowInvalidOperation_WhenInitImplementationIsNull()
    {
        var exception = Record.Exception(() => TimeContext.Init(null));

        Assert.IsType <InvalidOperationException>(exception);
    }