public void Equals_object()
        {
            var    authors            = new Authors(AuthorName, AuthorStringNameEmailHomepage);
            object objectAuthors      = new Authors(AuthorName, AuthorStringNameEmailHomepage);
            object arrayAuthors       = new Author[] { AuthorName, AuthorStringNameEmailHomepage };
            object arrayAuthorStrings = new[] { AuthorName, AuthorStringNameEmailHomepage };
            var    objectBare         = new object();

            Assert.IsTrue(authors.Equals(objectAuthors));
            Assert.IsTrue(authors.Equals(arrayAuthors));
            Assert.IsTrue(authors.Equals(arrayAuthorStrings));

            Assert.Throws <NotSupportedException>(

                // ReSharper disable once ReturnValueOfPureMethodIsNotUsed
                () => authors.Equals(objectBare), Authors.ExceptionComparisonNotSupported
                );

            Assert.Throws <NotSupportedException>(

                // ReSharper disable once ReturnValueOfPureMethodIsNotUsed
                // ReSharper disable once ExpressionIsAlwaysNull
                () => authors.Equals((object)null), Authors.ExceptionComparisonNotSupported
                );
        }
        public void Equals_object_IEqualityComparer()
        {
            var    authors       = new Authors(AuthorName, AuthorStringNameEmailHomepage);
            object objectAuthors = new Authors(AuthorName, AuthorStringNameEmailHomepage);

            var mockComparer = new Mock <IEqualityComparer>();

            mockComparer.Setup(setupComparer => setupComparer.Equals(It.IsAny <object>(), It.IsAny <object>()))
            ?.Returns <object, object>((a, b) => a?.Equals(b) ?? false);

            Debug.Assert(mockComparer.Object != null, "mockComparer.Object != null");
            Assert.IsTrue(authors.Equals(objectAuthors, mockComparer.Object));
        }
        public void AreEqual_StringArray()
        {
            var authors = new Authors(new Author(AuthorName), new Author(AuthorStringNameEmail));

            Assert.IsTrue(authors.Equals(new[] { AuthorName, AuthorStringNameEmail }));
        }
        public void AreEqual_String()
        {
            var authors = new Authors(new Author(AuthorName), new Author(AuthorStringNameEmail));

            Assert.IsTrue(authors.Equals($"[\"{AuthorName}\", \"{AuthorStringNameEmail}\"]"));
        }