pulumi/sdk/dotnet/Pulumi.Tests/Core/OutputTests.cs

115 lines
4.2 KiB
C#

// Copyright 2016-2019, Pulumi Corporation
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;
using Xunit;
namespace Pulumi.Tests.Core
{
public partial class OutputTests : PulumiTest
{
private static Output<T> CreateOutput<T>(T value, bool isKnown, bool isSecret = false)
=> new Output<T>(Task.FromResult(OutputData.Create(
ImmutableHashSet<Resource>.Empty, value, isKnown, isSecret)));
public class PreviewTests
{
[Fact]
public Task ApplyCanRunOnKnownValue()
=> RunInPreview(async () =>
{
var o1 = CreateOutput(0, isKnown: true);
var o2 = o1.Apply(a => a + 1);
var data = await o2.DataTask.ConfigureAwait(false);
Assert.True(data.IsKnown);
Assert.Equal(1, data.Value);
});
[Fact]
public Task ApplyProducesUnknownDefaultOnUnknown()
=> RunInPreview(async () =>
{
var o1 = CreateOutput(0, isKnown: false);
var o2 = o1.Apply(a => a + 1);
var data = await o2.DataTask.ConfigureAwait(false);
Assert.False(data.IsKnown);
Assert.Equal(0, data.Value);
});
[Fact]
public Task ApplyPreservesSecretOnKnown()
=> RunInPreview(async () =>
{
var o1 = CreateOutput(0, isKnown: true, isSecret: true);
var o2 = o1.Apply(a => a + 1);
var data = await o2.DataTask.ConfigureAwait(false);
Assert.True(data.IsKnown);
Assert.True(data.IsSecret);
Assert.Equal(1, data.Value);
});
[Fact]
public Task ApplyPreservesSecretOnUnknown()
=> RunInPreview(async () =>
{
var o1 = CreateOutput(0, isKnown: false, isSecret: true);
var o2 = o1.Apply(a => a + 1);
var data = await o2.DataTask.ConfigureAwait(false);
Assert.False(data.IsKnown);
Assert.True(data.IsSecret);
Assert.Equal(0, data.Value);
});
}
public class NormalTests
{
[Fact]
public Task ApplyCanRunOnKnownValue()
=> RunInNormal(async () =>
{
var o1 = CreateOutput(0, isKnown: true);
var o2 = o1.Apply(a => a + 1);
var data = await o2.DataTask.ConfigureAwait(false);
Assert.True(data.IsKnown);
Assert.Equal(1, data.Value);
});
[Fact]
public Task ApplyProducesKnownOnUnknown()
=> RunInNormal(async () =>
{
var o1 = CreateOutput(0, isKnown: false);
var o2 = o1.Apply(a => a + 1);
var data = await o2.DataTask.ConfigureAwait(false);
Assert.False(data.IsKnown);
Assert.Equal(1, data.Value);
});
[Fact]
public Task ApplyPreservesSecretOnKnown()
=> RunInNormal(async () =>
{
var o1 = CreateOutput(0, isKnown: true, isSecret: true);
var o2 = o1.Apply(a => a + 1);
var data = await o2.DataTask.ConfigureAwait(false);
Assert.True(data.IsKnown);
Assert.True(data.IsSecret);
Assert.Equal(1, data.Value);
});
[Fact]
public Task ApplyPreservesSecretOnUnknown()
=> RunInNormal(async () =>
{
var o1 = CreateOutput(0, isKnown: false, isSecret: true);
var o2 = o1.Apply(a => a + 1);
var data = await o2.DataTask.ConfigureAwait(false);
Assert.False(data.IsKnown);
Assert.True(data.IsSecret);
Assert.Equal(1, data.Value);
});
}
}
}