Skip to content

Commit de642b6

Browse files
authored
Move code from Sprache to EasyNetQ.Sprache namespace and internalise it. (#935)
1 parent eb5592b commit de642b6

18 files changed

+285
-282
lines changed

Source/EasyNetQ.Tests/AmqpExceptionParserTests.cs

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,24 @@
11
// ReSharper disable InconsistentNaming
22

3-
using Xunit;
43
using EasyNetQ.AmqpExceptions;
54
using FluentAssertions;
5+
using Xunit;
66

77
namespace EasyNetQ.Tests
88
{
99
public class AmqpExceptionParserTests
1010
{
11+
[Fact]
12+
public void Should_fail_on_badly_formatted_exception()
13+
{
14+
Assert.Throws<Sprache.ParseException>(() =>
15+
{
16+
const string originalException = "Do be do od be do do = something else, that I don't know=hello";
17+
18+
AmqpExceptionGrammar.ParseExceptionString(originalException);
19+
});
20+
}
21+
1122
[Fact]
1223
public void Should_parse_first_Amqp_exception_example()
1324
{
@@ -38,17 +49,7 @@ public void Should_parse_second_Amqp_exception_example()
3849
amqpException.MethodId.Should().Be(10);
3950
amqpException.ClassId.Should().Be(40);
4051
}
41-
42-
[Fact]
43-
public void Should_fail_on_badly_formatted_exception()
44-
{
45-
Assert.Throws<Sprache.ParseException>(() => {
46-
const string originalException = "Do be do od be do do = something else, that I don't know=hello";
47-
48-
AmqpExceptionGrammar.ParseExceptionString(originalException);
49-
});
50-
}
5152
}
5253
}
5354

54-
// ReSharper restore InconsistentNaming
55+
// ReSharper restore InconsistentNaming

Source/EasyNetQ.Tests/ConnectionString/ConnectionStringGrammarTests.cs

Lines changed: 17 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,23 @@
22

33
using System.Linq;
44
using EasyNetQ.ConnectionString;
5+
using EasyNetQ.Sprache;
56
using FluentAssertions;
67
using Xunit;
7-
using Sprache;
88

99
namespace EasyNetQ.Tests.ConnectionString
1010
{
1111
public class ConnectionStringGrammarTests
1212
{
13+
[Fact]
14+
public void Should_parse_amqp()
15+
{
16+
var hosts = ConnectionStringGrammar.AMQP.Parse("amqp://localhost/");
17+
18+
hosts.Port.Should().Be(-1);
19+
hosts.Host.Should().Be("localhost");
20+
}
21+
1322
[Fact]
1423
public void Should_parse_host()
1524
{
@@ -35,22 +44,19 @@ public void Should_parse_list_of_hosts()
3544

3645
hosts.Count().Should().Be(3);
3746
hosts.ElementAt(0).Host.Should().Be("host.one");
38-
hosts.ElementAt(0).Port.Should().Be((ushort)1001);
47+
hosts.ElementAt(0).Port.Should().Be((ushort) 1001);
3948
hosts.ElementAt(1).Host.Should().Be("host.two");
40-
hosts.ElementAt(1).Port.Should().Be((ushort)1002);
49+
hosts.ElementAt(1).Port.Should().Be((ushort) 1002);
4150
hosts.ElementAt(2).Host.Should().Be("host.three");
42-
hosts.ElementAt(2).Port.Should().Be((ushort)1003);
51+
hosts.ElementAt(2).Port.Should().Be((ushort) 1003);
4352
}
4453

4554
[Fact]
46-
public void Should_parse_amqp()
55+
public void Should_throw_when_parsing_empty()
4756
{
48-
var hosts = ConnectionStringGrammar.AMQP.Parse("amqp://localhost/");
57+
Assert.Throws<ParseException>(() => ConnectionStringGrammar.ConnectionStringBuilder.Parse(""));
58+
}
4959

50-
hosts.Port.Should().Be(-1);
51-
hosts.Host.Should().Be("localhost");
52-
}
53-
5460
[Fact]
5561
public void Should_try_to_parse_amqp()
5662
{
@@ -59,15 +65,7 @@ public void Should_try_to_parse_amqp()
5965

6066
Assert.Contains(message, exception.Message);
6167
}
62-
63-
[Fact]
64-
public void Should_throw_when_parsing_empty()
65-
{
66-
Assert.Throws<ParseException>(() => ConnectionStringGrammar.ConnectionStringBuilder.Parse(""));
67-
}
6868
}
69-
70-
7169
}
7270

73-
// ReSharper restore InconsistentNaming
71+
// ReSharper restore InconsistentNaming

Source/EasyNetQ.Tests/ConnectionString/ConnectionStringParserTests.cs

Lines changed: 75 additions & 76 deletions
Original file line numberDiff line numberDiff line change
@@ -11,17 +11,73 @@ namespace EasyNetQ.Tests.ConnectionString
1111
{
1212
public class ConnectionStringParserTests
1313
{
14-
private ConnectionStringParser connectionStringParser;
14+
public ConnectionStringParserTests()
15+
{
16+
connectionStringParser = new ConnectionStringParser();
17+
}
18+
19+
private readonly ConnectionStringParser connectionStringParser;
1520

1621
private const string connectionString =
1722
"virtualHost=Copa;username=Copa;host=192.168.1.1;password=abc_xyz;port=12345;" +
1823
"requestedHeartbeat=3;prefetchcount=2;timeout=12;publisherConfirms=true;" +
1924
"useBackgroundThreads=true;" +
2025
"name=unit-test";
2126

22-
public ConnectionStringParserTests()
27+
[Theory]
28+
[MemberData(nameof(AppendixAExamples))]
29+
public void Should_parse_Examples(AmqpSpecification spec)
2330
{
24-
connectionStringParser = new ConnectionStringParser();
31+
var connectionConfiguration = connectionStringParser.Parse(spec.amqpUri.ToString());
32+
33+
connectionConfiguration.Port.Should().Be((ushort) spec.port);
34+
connectionConfiguration.AMQPConnectionString.Should().Be(spec.amqpUri);
35+
connectionConfiguration.Hosts.First().Host.Should().Be(spec.host);
36+
connectionConfiguration.Hosts.First().Port.Should().Be((ushort) spec.port);
37+
connectionConfiguration.VirtualHost.Should().Be(spec.vhost);
38+
}
39+
40+
// ReSharper disable UnusedMethodReturnValue.Local
41+
public static IEnumerable<object[]> AppendixAExamples()
42+
// ReSharper restore UnusedMethodReturnValue.Local
43+
{
44+
yield return new[] {new AmqpSpecification(new Uri("amqp://user:pass@host:10000/vhost"), "host", 10000, "vhost")};
45+
yield return new[] {new AmqpSpecification(new Uri("amqp://"), "", 5672, "/")};
46+
yield return new[] {new AmqpSpecification(new Uri("amqp://host"), "host", 5672, "/")};
47+
yield return new[] {new AmqpSpecification(new Uri("amqps://host"), "host", 5671, "/")};
48+
}
49+
50+
public class AmqpSpecification
51+
{
52+
public readonly Uri amqpUri;
53+
public readonly string host;
54+
55+
public readonly int port;
56+
57+
public readonly string vhost;
58+
59+
public AmqpSpecification(Uri amqpUri, string host, int port, string vhost)
60+
{
61+
this.host = host;
62+
this.port = port;
63+
this.vhost = vhost;
64+
this.amqpUri = amqpUri;
65+
}
66+
67+
public override string ToString()
68+
{
69+
return string.Format("AmqpUri: {0}", amqpUri);
70+
}
71+
}
72+
73+
[Fact]
74+
public void Should_AddHost_ToHosts()
75+
{
76+
var connectionConfiguration = connectionStringParser.Parse("host=local;amqp=amqp://amqphost:1234/");
77+
78+
connectionConfiguration.Hosts.Count().Should().Be(2);
79+
connectionConfiguration.Hosts.First().Host.Should().Be("local");
80+
connectionConfiguration.Hosts.Last().Host.Should().Be("amqphost");
2581
}
2682

2783
[Fact]
@@ -33,22 +89,21 @@ public void Should_correctly_parse_connection_string()
3389
connectionConfiguration.VirtualHost.Should().Be("Copa");
3490
connectionConfiguration.UserName.Should().Be("Copa");
3591
connectionConfiguration.Password.Should().Be("abc_xyz");
36-
connectionConfiguration.Port.Should().Be((ushort)12345);
37-
connectionConfiguration.RequestedHeartbeat.Should().Be((ushort)3);
38-
connectionConfiguration.PrefetchCount.Should().Be((ushort)2);
39-
connectionConfiguration.Timeout.Should().Be((ushort)12);
92+
connectionConfiguration.Port.Should().Be(12345);
93+
connectionConfiguration.RequestedHeartbeat.Should().Be(3);
94+
connectionConfiguration.PrefetchCount.Should().Be(2);
95+
connectionConfiguration.Timeout.Should().Be(12);
4096
connectionConfiguration.PublisherConfirms.Should().BeTrue();
4197
connectionConfiguration.UseBackgroundThreads.Should().BeTrue();
4298
connectionConfiguration.Name.Should().Be("unit-test");
4399
}
44100

45101
[Fact]
46-
public void Should_parse_global_timeout()
102+
public void Should_NotUsePort_From_ConnectionString()
47103
{
48-
const string connectionStringWithTimeout = "host=localhost;timeout=13";
49-
var connectionConfiguration = connectionStringParser.Parse(connectionStringWithTimeout);
104+
var connectionConfiguration = connectionStringParser.Parse("amqp=amqp://host:1234/");
50105

51-
connectionConfiguration.Timeout.Should().Be(13);
106+
connectionConfiguration.Port.Should().Be(1234);
52107
}
53108

54109
[Fact]
@@ -61,9 +116,12 @@ public void Should_parse_global_persistentMessages()
61116
}
62117

63118
[Fact]
64-
public void Should_Throw_Exception_OnInvalidAmqp()
119+
public void Should_parse_global_timeout()
65120
{
66-
Assert.Throws<EasyNetQException>(() => connectionStringParser.Parse("amqp=Foo"));
121+
const string connectionStringWithTimeout = "host=localhost;timeout=13";
122+
var connectionConfiguration = connectionStringParser.Parse(connectionStringWithTimeout);
123+
124+
connectionConfiguration.Timeout.Should().Be(13);
67125
}
68126

69127
[Fact]
@@ -78,27 +136,10 @@ public void Should_throw_exception_for_unknown_key_at_the_end()
78136
Assert.Throws<EasyNetQException>(() => connectionStringParser.Parse("host=localhost;unknownKey=true"));
79137
}
80138

81-
[Theory]
82-
[MemberData(nameof(AppendixAExamples))]
83-
public void Should_parse_Examples(AmqpSpecification spec)
84-
{
85-
var connectionConfiguration = connectionStringParser.Parse(spec.amqpUri.ToString());
86-
87-
connectionConfiguration.Port.Should().Be((ushort)spec.port);
88-
connectionConfiguration.AMQPConnectionString.Should().Be(spec.amqpUri);
89-
connectionConfiguration.Hosts.First().Host.Should().Be(spec.host);
90-
connectionConfiguration.Hosts.First().Port.Should().Be((ushort)spec.port);
91-
connectionConfiguration.VirtualHost.Should().Be(spec.vhost);
92-
}
93-
94-
// ReSharper disable UnusedMethodReturnValue.Local
95-
public static IEnumerable<object[]> AppendixAExamples()
96-
// ReSharper restore UnusedMethodReturnValue.Local
139+
[Fact]
140+
public void Should_Throw_Exception_OnInvalidAmqp()
97141
{
98-
yield return new[] { new AmqpSpecification(new Uri("amqp://user:pass@host:10000/vhost"), "host", 10000, "vhost") };
99-
yield return new[] { new AmqpSpecification(new Uri("amqp://"), "", 5672, "/") };
100-
yield return new[] { new AmqpSpecification(new Uri("amqp://host"), "host", 5672, "/") };
101-
yield return new[] { new AmqpSpecification(new Uri("amqps://host"), "host", 5671, "/") };
142+
Assert.Throws<EasyNetQException>(() => connectionStringParser.Parse("amqp=Foo"));
102143
}
103144

104145
[Fact]
@@ -108,49 +149,7 @@ public void Should_UsePort_From_ConnectionString()
108149

109150
connectionConfiguration.Port.Should().Be(123);
110151
}
111-
112-
[Fact]
113-
public void Should_NotUsePort_From_ConnectionString()
114-
{
115-
var connectionConfiguration = connectionStringParser.Parse("amqp=amqp://host:1234/");
116-
117-
connectionConfiguration.Port.Should().Be(1234);
118-
}
119-
120-
[Fact]
121-
public void Should_AddHost_ToHosts()
122-
{
123-
var connectionConfiguration = connectionStringParser.Parse("host=local;amqp=amqp://amqphost:1234/");
124-
125-
connectionConfiguration.Hosts.Count().Should().Be(2);
126-
connectionConfiguration.Hosts.First().Host.Should().Be("local");
127-
connectionConfiguration.Hosts.Last().Host.Should().Be("amqphost");
128-
}
129-
130-
public class AmqpSpecification
131-
{
132-
public readonly string host;
133-
134-
public readonly int port;
135-
136-
public readonly Uri amqpUri;
137-
138-
public readonly string vhost;
139-
140-
public AmqpSpecification(Uri amqpUri, string host, int port, string vhost)
141-
{
142-
this.host = host;
143-
this.port = port;
144-
this.vhost = vhost;
145-
this.amqpUri = amqpUri;
146-
}
147-
148-
public override string ToString()
149-
{
150-
return string.Format("AmqpUri: {0}", amqpUri);
151-
}
152-
}
153152
}
154153
}
155154

156-
// ReSharper restore InconsistentNaming
155+
// ReSharper restore InconsistentNaming

0 commit comments

Comments
 (0)