a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
67 lines
1.7 KiB
C#
67 lines
1.7 KiB
C#
// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information.
|
|
|
|
using Xunit;
|
|
|
|
namespace System.Web.Mvc.Test
|
|
{
|
|
public class ViewDataInfoTest
|
|
{
|
|
[Fact]
|
|
public void ViewDataInfoDoesNotCallAccessorUntilValuePropertyAccessed()
|
|
{
|
|
// Arrange
|
|
bool called = false;
|
|
ViewDataInfo vdi = new ViewDataInfo(() =>
|
|
{
|
|
called = true;
|
|
return 21;
|
|
});
|
|
|
|
// Act & Assert
|
|
Assert.False(called);
|
|
object result = vdi.Value;
|
|
Assert.True(called);
|
|
Assert.Equal(21, result);
|
|
}
|
|
|
|
[Fact]
|
|
public void AccessorIsOnlyCalledOnce()
|
|
{
|
|
// Arrange
|
|
int callCount = 0;
|
|
ViewDataInfo vdi = new ViewDataInfo(() =>
|
|
{
|
|
++callCount;
|
|
return null;
|
|
});
|
|
|
|
// Act & Assert
|
|
Assert.Equal(0, callCount);
|
|
object unused;
|
|
unused = vdi.Value;
|
|
unused = vdi.Value;
|
|
unused = vdi.Value;
|
|
Assert.Equal(1, callCount);
|
|
}
|
|
|
|
[Fact]
|
|
public void SettingExplicitValueOverridesAccessorMethod()
|
|
{
|
|
// Arrange
|
|
bool called = false;
|
|
ViewDataInfo vdi = new ViewDataInfo(() =>
|
|
{
|
|
called = true;
|
|
return null;
|
|
});
|
|
|
|
// Act & Assert
|
|
Assert.False(called);
|
|
vdi.Value = 42;
|
|
object result = vdi.Value;
|
|
Assert.False(called);
|
|
Assert.Equal(42, result);
|
|
}
|
|
}
|
|
}
|