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); }
public LinearWeight[] GetLinearWeigths(GeoCellTuple cell, object interpolationContext) { throw new NotImplementedException(); }