コード例 #1
0
        public void Should_Evaluate_Distance_Between_Two_Objects_01(
            SimilarityEvaluator <PrimitiveEvaluable> evaluator)
        {
            var item1 = PrimitiveEvaluable.Sample1;
            var item2 = PrimitiveEvaluable.Sample1;

            evaluator.EvaluateDistance(item1, item2).Should().Be(0);
        }
コード例 #2
0
        public void Should_Evaluate_Distance_Between_Two_Objects_03(
            SimilarityEvaluator <PrimitiveEvaluable> evaluator)
        {
            var item1 = PrimitiveEvaluable.Sample2;
            var item2 = PrimitiveEvaluable.Sample1;

            evaluator.EvaluateDistance(item1, item2).Should().Be(63646799623.253987m);
        }
コード例 #3
0
        public void Should_Evaluate_Differenct_Between_Two_Nested_Objects_03(
            SimilarityEvaluator <NestedEvaluable> evaluator)
        {
            var item1 = NestedEvaluable.Sample2;
            var item2 = NestedEvaluable.Sample1;

            evaluator.EvaluateDistance(item1, item2).Should().Be(3);
        }
コード例 #4
0
        public void When_Evaluating_Two_Objects_With_List_Should_Calculate_Distance_07(
            SimilarityEvaluator <ListEvaluable> evaluator)
        {
            var item1 = ListEvaluable.Sample3;
            var item2 = ListEvaluable.Sample1;

            evaluator.EvaluateDistance(item1, item2).Should().Be(4);
        }
コード例 #5
0
        public void When_Evaluating_Object_With_Unknown_Type_Should_Throw_Exception(
            UnknownTypeEvaluable item1,
            UnknownTypeEvaluable item2,
            SimilarityEvaluator <UnknownTypeEvaluable> evaluator)
        {
            var exception = Assert.Throws <Exception>(() => evaluator.EvaluateDistance(item1, item2));

            exception.Message.Should().Be("No inner evaluator was found for type System.Object.");
        }
コード例 #6
0
        public void Should_Override_Already_Added_InnerEvaluator(
            SimilarityEvaluator <PrimitiveEvaluable> evaluator)
        {
            var innerEvaluator = new Int32SimilarityEvaluator();

            evaluator.AddInnerEvaluator(innerEvaluator);

            evaluator.InnerEvaluators.Should().Contain(innerEvaluator);
        }
コード例 #7
0
        public void Should_Throw_Exeception_With_Non_Generic_Enumerable(
            SimilarityEvaluator <EnumerableEvaluable> evaluator)
        {
            var item1 = new EnumerableEvaluable();
            var item2 = new EnumerableEvaluable();

            var exception = Assert.Throws <Exception>(() => evaluator.EvaluateDistance(item1, item2));

            exception.Message.Should().Be($"Type {typeof(IEnumerable)} implements {typeof(IEnumerable)}, " +
                                          $"but it does not implement {typeof(IEnumerable<>)}." +
                                          "Evaluation of non-generic enumerable is not possible.");
        }
コード例 #8
0
        public void Should_Override_Already_Added_InnerEvaluators(
            SimilarityEvaluator <PrimitiveEvaluable> evaluator)
        {
            var innerEvaluators = new SimilarityEvaluatorBase[]
            {
                new Int32SimilarityEvaluator(),
                new Int64SimilarityEvaluator()
            };

            evaluator.AddInnerEvaluators(innerEvaluators);

            evaluator.InnerEvaluators.Should().Contain(innerEvaluators);
        }
コード例 #9
0
        public static IEnumerable <ProductModel> GetSimilarProducts(ProductModel product)
        {
            var evaluations = new List <Tuple <decimal, ProductModel> >();
            var evaluator   = new SimilarityEvaluator <ProductModel>();

            foreach (var repositoryProduct in Products)
            {
                var distance = evaluator.EvaluateDistance(product, repositoryProduct);
                evaluations.Add(new Tuple <decimal, ProductModel>(distance, repositoryProduct));
            }

            return(evaluations.OrderBy(e => e.Item1).Select(e => e.Item2).Take(2));
        }
コード例 #10
0
 public void Should_Have_Primitive_Evaluators_When_Created(
     SimilarityEvaluator <PrimitiveEvaluable> evaluator)
 {
     evaluator.InnerEvaluators.ShouldBeEquivalentTo(SimilarityEvaluatorContainer.PrimitiveEvaluators);
 }