public void Compare_IntValues_AreEqual()
        {
            // Arrange
            Func <int, int, bool> predicate = delegate(int number1, int number2)
            {
                return(number1 == number2);
            };
            var comparer = new CollectionEqualsComparer <int>(predicate);

            // Act
            var expected = new List <int>()
            {
                0,
                1
            };
            var actual = new List <int>(expected);

            // Assert
            CollectionAssert.AreEqual(expected, actual, comparer);
        }
        public void Convert_ToProductModel_CategoryAddedToModel()
        {
            // Arrange
            Func <CategoryModel, CategoryModel, bool> predicate =
                delegate(CategoryModel model1, CategoryModel model2)
            {
                return(model1.Id == model2.Id &&
                       model1.Name == model2.Name &&
                       model1.Description == model2.Description);
            };
            var comparer = new CollectionEqualsComparer <CategoryModel>(predicate);

            var productDto = new ProductDto()
            {
                Categories = "category 1, category 2"
            };

            var expected = new List <CategoryModel>()
            {
                new CategoryModel()
                {
                    Name = "category 1"
                },
                new CategoryModel()
                {
                    Name = "category 2"
                }
            };

            // Act
            var actual = _productConverter.ConvertTo(productDto);

            // Assert
            Assert.IsTrue(actual.CategoryList.Count() == 2);
            CollectionAssert.AreEqual(expected, actual.CategoryList.ToList(), comparer);
        }