public async Task LinearWeightsContextFactoryFacadeTest()
        {
            var lwcff = new LinearWeightsContextFactoryFacade <RealValueNodesStub>(new Stub4(), new Stub3());

            var cells = new GeoCellTuple[] { new GeoCellTuple()
                                             {
                                                 LatMax = 11.0, LonMin = 13.0, LatMin = 17.0, LonMax = 19.0
                                             } };

            var request = new FetchRequest("dummy", FetchDomain.CreateCells(new double[] { 17.0 }, new double[] { 13.0 }, new double[] { 11.0 }, new double[] { 19.0 }, new TimeRegion()));

            var storage        = TestDataStorageFactory.GetStorage("msds:memory");
            var requestContext = RequestContextStub.GetStub(storage, request);


            var lwc = await lwcff.CreateAsync(requestContext, cells);

            var combs = lwc.Combinations.ToArray();

            Assert.AreEqual(1, combs.Length);
            Assert.AreEqual(cells[0], combs[0].Item1);

            RealValueNodes             nodes   = combs[0].Item2;
            IEnumerable <LinearWeight> weights = combs[0].Item3;

            var result = weights.Sum(w => w.Weight * nodes.Values[w.DataIndex]);

            Assert.AreEqual(847.0, result);
        }
            public LinearWeight[] GetLinearWeigths(GeoCellTuple cell, Nodes nodes)
            {
                int N = nodes.Lons.Length;

                LinearWeight[] weights = new LinearWeight[N];

                for (int i = 0; i < N; i++)
                {
                    weights[i] = new LinearWeight(N - i - 1, cell.LatMax * (i + 1));
                }

                return(weights);
            }
        public void GeoCellTupleToPointLinearInterpolatorAdapterTest()
        {
            var adapter = new GeoCellTupleToPointLinearInterpolatorAdapter(new Stub());
            var context = adapter.GetInterpolationContext(new NodesStub());

            var cell = new GeoCellTuple()
            {
                LatMin = 5.0, LatMax = 7.0, LonMin = 11.0, LonMax = 13.0
            };

            var result = adapter.GetLinearWeigths(cell, context);

            Assert.AreEqual(2, result.Length);
            Assert.AreEqual(0, result[0].DataIndex);
            Assert.AreEqual(1, result[1].DataIndex);
            Assert.AreEqual(2620.0 / 8580.0, result[0].Weight, TestConstants.DoublePrecision); //manual camputation
            Assert.AreEqual(5960.0 / 8580.0, result[1].Weight, TestConstants.DoublePrecision);
        }
Esempio n. 4
0
 public LinearWeight[] GetLinearWeigths(GeoCellTuple cell, object interpolationContext)
 {
     throw new NotImplementedException();
 }