Files
FileTime2/src/Library/Signal.Tests/MapSignalTests.cs
2024-04-16 09:58:07 +02:00

79 lines
1.8 KiB
C#

using Xunit;
namespace Signal.Tests;
public class MapSignalTests
{
[Fact]
public void Map_WhenNotRead_ShouldBeDirty()
{
// Arrange
var signal = new Signal<string>("test");
var mapped = signal.Map(s => s);
// Act
// Assert
Assert.True(mapped.IsDirty);
}
[Fact]
public async Task Map_WhenNotReadButBaseIsNotDirty_ShouldBeDirty()
{
// Arrange
var signal = new Signal<string>("test");
await signal.GetValueAsync();
var mapped = signal.Map(s => s);
// Act
// Assert
Assert.True(mapped.IsDirty);
}
[Fact]
public async Task Map_WhenAlreadyRead_ShouldNotBeDirty()
{
// Arrange
var signal = new Signal<string>("test");
var mapped = signal.Map(s => s);
// Act
await mapped.GetValueAsync();
// Assert
Assert.False(mapped.IsDirty);
}
[Fact]
public async Task GetValueAsync_WithSyncMapper_ShouldReturnCorrectData()
{
// Arrange
var signal = new Signal<string>("tEsT");
var mapped = signal.Map(s => s.ToUpper());
// Act
var result = await mapped.GetValueAsync();
// Assert
Assert.Equal("TEST", result);
}
[Fact]
public async Task GetValueAsync_WithAsyncMapper_ShouldReturnCorrectData()
{
// Arrange
var signal = new Signal<string>("tEsT");
var mapped = signal.Map(async s =>
{
await Task.Yield();
return s.ToUpper();
});
// Act
var result = await mapped.GetValueAsync();
// Assert
Assert.Equal("TEST", result);
}
}