public void TestSameDistance()
        {
            var context = new SimilarityContext();

            context.AddSeeds(new Seed [] { GetSeed(s1, 1.0f) });
            Assert.AreEqual(0f, context.Distance(Scms.FromBytes(Bytes(s1))).Average());
        }
        public void TestEmptyContext()
        {
            var context = new SimilarityContext();

            Assert.IsTrue(context.IsEmpty);
            Assert.AreEqual(float.MaxValue, context.Distance(null).Average());
        }
        public void TestDiscardedDistance()
        {
            // Test with different seed weight
            var distance_s1_s2_discarded = 81.65736f;
            var context = new SimilarityContext();

            context.AddSeeds(new Seed [] { GetSeed(s1, SimilarityContext.DiscardedWeight) });
            Assert.IsFalse(context.IsEmpty);
            Assert.Less(Math.Abs(distance_s1_s2_discarded - context.Distance(Scms.FromBytes(Bytes(s2))).Average()), 0.1);
        }
        public void TestShuffledDistances()
        {
            var distance_s1_s2 = 27.21912f;
            var context        = new SimilarityContext();

            context.AddSeeds(new Seed [] { GetSeed(s1, SimilarityContext.ShuffledWeight) });
            Assert.IsFalse(context.IsEmpty);
            Assert.Less(Math.Abs(distance_s1_s2 - context.Distance(Scms.FromBytes(Bytes(s2))).Average()), 0.1);

            // Add the same seed w/ the same weight; make sure the average is the same
            context.AddSeeds(new Seed [] { GetSeed(s1, SimilarityContext.ShuffledWeight) });
            Assert.Less(Math.Abs(distance_s1_s2 - context.Distance(Scms.FromBytes(Bytes(s2))).Average()), 0.1);
        }