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); }
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); }
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); }
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); }
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."); }
public void Should_Override_Already_Added_InnerEvaluator( SimilarityEvaluator <PrimitiveEvaluable> evaluator) { var innerEvaluator = new Int32SimilarityEvaluator(); evaluator.AddInnerEvaluator(innerEvaluator); evaluator.InnerEvaluators.Should().Contain(innerEvaluator); }
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."); }
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); }
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)); }
public void Should_Have_Primitive_Evaluators_When_Created( SimilarityEvaluator <PrimitiveEvaluable> evaluator) { evaluator.InnerEvaluators.ShouldBeEquivalentTo(SimilarityEvaluatorContainer.PrimitiveEvaluators); }