mongo-csharp-driver /src/MongoDB.Bson.TestHelpers/EqualityComparers/ObjectAssertionsExtensions.cs

Language C# Lines 62
MD5 Hash cd2095b6c7c6174b79c0fe6c203f294f
Repository git://github.com/mongodb/mongo-csharp-driver.git View Raw File View Project SPDX
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
/* Copyright 2010-2014 MongoDB Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

using System.Collections;
using FluentAssertions;
using FluentAssertions.Execution;
using FluentAssertions.Primitives;

namespace MongoDB.Bson.TestHelpers.EqualityComparers
{
    public static class ObjectAssertionsExtensions
    {
        // static methods
        public static AndConstraint<ObjectAssertions> BeUsing(this ObjectAssertions assertions, object expected, IEqualityComparer comparer, string because = "", params object[] reasonArgs)
        {
            Execute.Assertion
                .BecauseOf(because, reasonArgs)
                .ForCondition(comparer.Equals(assertions.Subject, expected))
                .FailWith("Expected {context:object} to be {0}{reason}, but found {1}.", expected,
                    assertions.Subject);

            return new AndConstraint<ObjectAssertions>(assertions);
        }

        public static AndConstraint<ObjectAssertions> BeUsing(this ObjectAssertions assertions, object expected, IEqualityComparerSource source, string because = "", params object[] reasonArgs)
        {
            var actual = assertions.Subject;
            var comparer = actual == null ? ReferenceEqualsEqualityComparer.Instance : source.GetComparer(actual.GetType());
            return assertions.BeUsing(expected, comparer, because, reasonArgs);
        }

        public static AndConstraint<ObjectAssertions> NotBeUsing(this ObjectAssertions assertions, object unexpected, IEqualityComparer comparer, string because = "", params object[] reasonArgs)
        {
            Execute.Assertion
                .BecauseOf(because, reasonArgs)
                .ForCondition(!comparer.Equals(assertions.Subject, unexpected))
                .FailWith("Did not expect {context:object} to be equal to {0}{reason}.", unexpected);

            return new AndConstraint<ObjectAssertions>(assertions);
        }

        public static AndConstraint<ObjectAssertions> NotBeUsing(this ObjectAssertions assertions, object unexpected, IEqualityComparerSource source, string because = "", params object[] reasonArgs)
        {
            var actual = assertions.Subject;
            var comparer = actual == null ? ReferenceEqualsEqualityComparer.Instance : source.GetComparer(actual.GetType());
            return assertions.NotBeUsing(unexpected, comparer, because, reasonArgs);
        }
    }
}
Back to Top