Skip to content

Commit 3dc41da

Browse files
committed
Move tests into the right places
1 parent f5c093e commit 3dc41da

File tree

5 files changed

+196
-168
lines changed

5 files changed

+196
-168
lines changed

Orleans.slnx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@
122122
<Project Path="test/Orleans.Placement.Tests/Orleans.Placement.Tests.csproj" />
123123
<Project Path="test/Orleans.GrainDirectory.Tests/Orleans.GrainDirectory.Tests.csproj" />
124124
<Project Path="test/Orleans.Streaming.Tests/Orleans.Streaming.Tests.csproj" />
125+
<Project Path="test/Orleans.BroadcastChannel.Tests/Orleans.BroadcastChannel.Tests.csproj" />
125126
<Project Path="test/Orleans.EventSourcing.Tests/Orleans.EventSourcing.Tests.csproj" />
126127
<Project Path="test/Orleans.DurableJobs.Tests/Orleans.DurableJobs.Tests.csproj" />
127128
</Folder>
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
using System;
2+
using Orleans.BroadcastChannel;
3+
using Orleans.Serialization.TypeSystem;
4+
using Xunit;
5+
6+
namespace UnitTests;
7+
8+
/// <summary>
9+
/// Tests for <see cref="ConstructorChannelNamespacePredicateProvider"/> predicate type registration and resolution.
10+
/// </summary>
11+
[TestCategory("BVT"), TestCategory("Predicates")]
12+
public class ConstructorChannelNamespacePredicateProviderTests
13+
{
14+
[Fact]
15+
public void RegisteredPredicateType_Succeeds()
16+
{
17+
var provider = new ConstructorChannelNamespacePredicateProvider();
18+
provider.RegisterPredicateType(typeof(TestChannelPredicate));
19+
var pattern = ConstructorChannelNamespacePredicateProvider.FormatPattern(typeof(TestChannelPredicate), constructorArgument: null);
20+
21+
var result = provider.TryGetPredicate(pattern, out var predicate);
22+
23+
Assert.True(result);
24+
Assert.NotNull(predicate);
25+
Assert.IsType<TestChannelPredicate>(predicate);
26+
}
27+
28+
[Fact]
29+
public void RegisteredPredicateTypeWithArg_Succeeds()
30+
{
31+
var provider = new ConstructorChannelNamespacePredicateProvider();
32+
provider.RegisterPredicateType(typeof(TestChannelPredicateWithArg));
33+
var pattern = ConstructorChannelNamespacePredicateProvider.FormatPattern(typeof(TestChannelPredicateWithArg), constructorArgument: "ch-ns");
34+
35+
var result = provider.TryGetPredicate(pattern, out var predicate);
36+
37+
Assert.True(result);
38+
Assert.NotNull(predicate);
39+
Assert.IsType<TestChannelPredicateWithArg>(predicate);
40+
Assert.True(predicate.IsMatch("ch-ns"));
41+
}
42+
43+
[Fact]
44+
public void UnregisteredType_Throws()
45+
{
46+
var provider = new ConstructorChannelNamespacePredicateProvider();
47+
var pattern = $"ctor:{RuntimeTypeNameFormatter.Format(typeof(System.IO.FileInfo))}:C:\\temp\\evil.txt";
48+
49+
Assert.Throws<InvalidOperationException>(() => provider.TryGetPredicate(pattern, out _));
50+
}
51+
52+
[Fact]
53+
public void UnregisteredArbitraryType_Throws()
54+
{
55+
var provider = new ConstructorChannelNamespacePredicateProvider();
56+
var pattern = $"ctor:{RuntimeTypeNameFormatter.Format(typeof(System.Collections.ArrayList))}";
57+
58+
Assert.Throws<InvalidOperationException>(() => provider.TryGetPredicate(pattern, out _));
59+
}
60+
61+
[Fact]
62+
public void NonMatchingPrefix_ReturnsFalse()
63+
{
64+
var provider = new ConstructorChannelNamespacePredicateProvider();
65+
66+
var result = provider.TryGetPredicate("namespace:test", out var predicate);
67+
68+
Assert.False(result);
69+
Assert.Null(predicate);
70+
}
71+
72+
public class TestChannelPredicate : IChannelNamespacePredicate
73+
{
74+
public string PredicatePattern => ConstructorChannelNamespacePredicateProvider.FormatPattern(typeof(TestChannelPredicate), constructorArgument: null);
75+
76+
public bool IsMatch(string streamNamespace) => true;
77+
}
78+
79+
public class TestChannelPredicateWithArg : IChannelNamespacePredicate
80+
{
81+
private readonly string _namespace;
82+
83+
public TestChannelPredicateWithArg(string ns) => _namespace = ns;
84+
85+
public string PredicatePattern => ConstructorChannelNamespacePredicateProvider.FormatPattern(typeof(TestChannelPredicateWithArg), _namespace);
86+
87+
public bool IsMatch(string streamNamespace) => string.Equals(_namespace, streamNamespace, StringComparison.Ordinal);
88+
}
89+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
<PropertyGroup>
3+
<RootNamespace>UnitTests</RootNamespace>
4+
<TargetFrameworks>$(TestTargetFrameworks)</TargetFrameworks>
5+
</PropertyGroup>
6+
7+
<ItemGroup>
8+
<PackageReference Include="Microsoft.NET.Test.Sdk" />
9+
<PackageReference Include="xunit" />
10+
<PackageReference Include="xunit.runner.visualstudio" />
11+
</ItemGroup>
12+
13+
<ItemGroup>
14+
<ProjectReference Include="$(SourceRoot)src\Orleans.BroadcastChannel\Orleans.BroadcastChannel.csproj" />
15+
<ProjectReference Include="$(SourceRoot)test\TestInfrastructure\TestExtensions\TestExtensions.csproj" />
16+
</ItemGroup>
17+
</Project>

test/Orleans.Core.Tests/General/ConstructorPredicateProviderTests.cs

Lines changed: 0 additions & 168 deletions
This file was deleted.
Lines changed: 89 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,89 @@
1+
using System;
2+
using Orleans.Serialization.TypeSystem;
3+
using Orleans.Streams;
4+
using Xunit;
5+
6+
namespace UnitTests;
7+
8+
/// <summary>
9+
/// Tests for <see cref="ConstructorStreamNamespacePredicateProvider"/> predicate type registration and resolution.
10+
/// </summary>
11+
[TestCategory("BVT"), TestCategory("Predicates")]
12+
public class ConstructorStreamNamespacePredicateProviderTests
13+
{
14+
[Fact]
15+
public void RegisteredPredicateType_Succeeds()
16+
{
17+
var provider = new ConstructorStreamNamespacePredicateProvider();
18+
provider.RegisterPredicateType(typeof(TestStreamPredicate));
19+
var pattern = ConstructorStreamNamespacePredicateProvider.FormatPattern(typeof(TestStreamPredicate), constructorArgument: null);
20+
21+
var result = provider.TryGetPredicate(pattern, out var predicate);
22+
23+
Assert.True(result);
24+
Assert.NotNull(predicate);
25+
Assert.IsType<TestStreamPredicate>(predicate);
26+
}
27+
28+
[Fact]
29+
public void RegisteredPredicateTypeWithArg_Succeeds()
30+
{
31+
var provider = new ConstructorStreamNamespacePredicateProvider();
32+
provider.RegisterPredicateType(typeof(TestStreamPredicateWithArg));
33+
var pattern = ConstructorStreamNamespacePredicateProvider.FormatPattern(typeof(TestStreamPredicateWithArg), constructorArgument: "test-ns");
34+
35+
var result = provider.TryGetPredicate(pattern, out var predicate);
36+
37+
Assert.True(result);
38+
Assert.NotNull(predicate);
39+
Assert.IsType<TestStreamPredicateWithArg>(predicate);
40+
Assert.True(predicate.IsMatch("test-ns"));
41+
}
42+
43+
[Fact]
44+
public void UnregisteredType_Throws()
45+
{
46+
var provider = new ConstructorStreamNamespacePredicateProvider();
47+
var pattern = $"ctor:{RuntimeTypeNameFormatter.Format(typeof(System.IO.FileInfo))}:C:\\temp\\evil.txt";
48+
49+
Assert.Throws<InvalidOperationException>(() => provider.TryGetPredicate(pattern, out _));
50+
}
51+
52+
[Fact]
53+
public void UnregisteredArbitraryType_Throws()
54+
{
55+
var provider = new ConstructorStreamNamespacePredicateProvider();
56+
var pattern = $"ctor:{RuntimeTypeNameFormatter.Format(typeof(System.Collections.ArrayList))}";
57+
58+
Assert.Throws<InvalidOperationException>(() => provider.TryGetPredicate(pattern, out _));
59+
}
60+
61+
[Fact]
62+
public void NonMatchingPrefix_ReturnsFalse()
63+
{
64+
var provider = new ConstructorStreamNamespacePredicateProvider();
65+
66+
var result = provider.TryGetPredicate("namespace:test", out var predicate);
67+
68+
Assert.False(result);
69+
Assert.Null(predicate);
70+
}
71+
72+
public class TestStreamPredicate : IStreamNamespacePredicate
73+
{
74+
public string PredicatePattern => ConstructorStreamNamespacePredicateProvider.FormatPattern(typeof(TestStreamPredicate), constructorArgument: null);
75+
76+
public bool IsMatch(string streamNamespace) => true;
77+
}
78+
79+
public class TestStreamPredicateWithArg : IStreamNamespacePredicate
80+
{
81+
private readonly string _namespace;
82+
83+
public TestStreamPredicateWithArg(string ns) => _namespace = ns;
84+
85+
public string PredicatePattern => ConstructorStreamNamespacePredicateProvider.FormatPattern(typeof(TestStreamPredicateWithArg), _namespace);
86+
87+
public bool IsMatch(string streamNamespace) => string.Equals(_namespace, streamNamespace, StringComparison.Ordinal);
88+
}
89+
}

0 commit comments

Comments
 (0)