1
+ // This source code is dual-licensed under the Apache License, version
2
+ // 2.0, and the Mozilla Public License, version 1.1.
3
+ //
4
+ // The APL v2.0:
5
+ //
6
+ //---------------------------------------------------------------------------
7
+ // Copyright (c) 2007-2016 Pivotal Software, Inc.
8
+ //
9
+ // Licensed under the Apache License, Version 2.0 (the "License");
10
+ // you may not use this file except in compliance with the License.
11
+ // You may obtain a copy of the License at
12
+ //
13
+ // http://www.apache.org/licenses/LICENSE-2.0
14
+ //
15
+ // Unless required by applicable law or agreed to in writing, software
16
+ // distributed under the License is distributed on an "AS IS" BASIS,
17
+ // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
18
+ // See the License for the specific language governing permissions and
19
+ // limitations under the License.
20
+ //---------------------------------------------------------------------------
21
+ //
22
+ // The MPL v1.1:
23
+ //
24
+ //---------------------------------------------------------------------------
25
+ // The contents of this file are subject to the Mozilla Public License
26
+ // Version 1.1 (the "License"); you may not use this file except in
27
+ // compliance with the License. You may obtain a copy of the License
28
+ // at http://www.mozilla.org/MPL/
29
+ //
30
+ // Software distributed under the License is distributed on an "AS IS"
31
+ // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
32
+ // the License for the specific language governing rights and
33
+ // limitations under the License.
34
+ //
35
+ // The Original Code is RabbitMQ.
36
+ //
37
+ // The Initial Developer of the Original Code is Pivotal Software, Inc.
38
+ // Copyright (c) 2007-2016 Pivotal Software, Inc. All rights reserved.
39
+ //---------------------------------------------------------------------------
40
+
41
+ using NUnit . Framework ;
42
+ using System ;
43
+ using System . Collections . Generic ;
44
+ using System . Threading ;
45
+
46
+ namespace RabbitMQ . Client . Unit
47
+ {
48
+ public class TestEndpointResolver : IEndpointResolver
49
+ {
50
+ private IEnumerable < AmqpTcpEndpoint > endpoints ;
51
+ public TestEndpointResolver ( IEnumerable < AmqpTcpEndpoint > endpoints )
52
+ {
53
+ this . endpoints = endpoints ;
54
+ }
55
+
56
+ public IEnumerable < AmqpTcpEndpoint > All ( )
57
+ {
58
+ return endpoints ;
59
+ }
60
+ }
61
+
62
+ class TestEndpointException : Exception
63
+ {
64
+ public TestEndpointException ( string message ) : base ( message )
65
+ {
66
+ }
67
+ }
68
+
69
+ public class TestIEndpointResolverExtensions
70
+ {
71
+ [ Test ]
72
+ public void SelectOneShouldReturnDefaultWhenThereAreNoEndpoints ( )
73
+ {
74
+ var ep = new TestEndpointResolver ( new List < AmqpTcpEndpoint > ( ) ) ;
75
+ Assert . IsNull ( ep . SelectOne < AmqpTcpEndpoint > ( ( x ) => null ) ) ;
76
+ }
77
+
78
+ [ Test ]
79
+ public void SelectOneShouldRaiseThrownExceptionWhenThereAreOnlyInaccessibleEndpoints ( )
80
+ {
81
+ var ep = new TestEndpointResolver ( new List < AmqpTcpEndpoint > { new AmqpTcpEndpoint ( ) } ) ;
82
+ Assert . Throws < TestEndpointException > ( ( ) => ep . SelectOne < AmqpTcpEndpoint > ( ( x ) => { throw new TestEndpointException ( "bananas" ) ; } ) ) ;
83
+ }
84
+
85
+ [ Test ]
86
+ public void SelectOneShouldReturnFoundEndpoint ( )
87
+ {
88
+ var ep = new TestEndpointResolver ( new List < AmqpTcpEndpoint > { new AmqpTcpEndpoint ( ) } ) ;
89
+ Assert . IsNotNull ( ep . SelectOne < AmqpTcpEndpoint > ( ( e ) => e ) ) ;
90
+ }
91
+ }
92
+ }
0 commit comments