コード例 #1
0
    private static IReadOnlyList <int> AssertSkipsProperly(IReadOnlyList <int> list, int n, bool last)
    {
        var s        = Skipper(last);
        var actual   = s(list, n);
        var expected = ReferenceImplementation(last)(list, n).ToArray();

        actual.AssertListEquals(expected);
        return(actual);
    }
コード例 #2
0
 public void SkipsTrackMutations()
 {
     foreach (var last in new[] { false, true })
     {
         var li = 3.Range().ToList();
         var s  = Skipper(last)(li, 2);
         foreach (var action in new Action[] { () => li.Add(3), () => li.Remove(2), () => li.Remove(3), () => li.Clear() })
         {
             action();
             s.AssertListEquals(ReferenceImplementation(last)(li, 2));
         }
     }
 }
コード例 #3
0
        public void RTreeMemoryIndexAddTests()
        {
            // build test-data.
            var testDataList = new List<KeyValuePair<BoxF2D, DataTestClass>>();
            const int count = 10000;
            var randomGenerator = new RandomGenerator(66707770); // make this deterministic
            for (int idx = 0; idx < count; idx++)
            {
                double x1 = randomGenerator.Generate(1.0);
                double x2 = randomGenerator.Generate(1.0);
                double y1 = randomGenerator.Generate(1.0);
                double y2 = randomGenerator.Generate(1.0);

                var box = new BoxF2D(new PointF2D(x1, y1), new PointF2D(x2, y2));
                var testData = new DataTestClass();
                testData.Data = idx.ToString(System.Globalization.CultureInfo.InvariantCulture);

                testDataList.Add(new KeyValuePair<BoxF2D, DataTestClass>(
                    box, testData));
            }

            // create the index and reference index.
            var index = new RTreeMemoryIndex<DataTestClass>();
            var reference = new ReferenceImplementation<DataTestClass>();

            // add all the data.
            for (int idx = 0; idx < count; idx++)
            {
                var keyValuePair = testDataList[idx];
                index.Add(keyValuePair.Key, keyValuePair.Value);
                reference.Add(keyValuePair.Key, keyValuePair.Value);

                //Assert.AreEqual(reference.Count(), index.Count());
            }

            //Assert.AreEqual(count, index.Count());

            // generate random boxes and compare results.
            for (int idx = 0; idx < 200; idx++)
            {
                double x1 = randomGenerator.Generate(1.0);
                double x2 = randomGenerator.Generate(1.0);
                double y1 = randomGenerator.Generate(1.0);
                double y2 = randomGenerator.Generate(1.0);

                var box = new BoxF2D(new PointF2D(x1, y1), new PointF2D(x2, y2));

                var resultIndex = new HashSet<DataTestClass>(index.Get(box));
                var resultReference = new HashSet<DataTestClass>(reference.Get(box));

                foreach (var data in resultIndex)
                {
                    Assert.IsTrue(resultReference.Contains(data));
                }
                foreach (var data in resultReference)
                {
                    Assert.IsTrue(resultIndex.Contains(data));
                }
            }
        }