Signal WIP

This commit is contained in:
2024-04-16 09:58:07 +02:00
parent 8922f71130
commit d523dd6880
20 changed files with 511 additions and 0 deletions

View File

@@ -0,0 +1,79 @@
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);
}
}