public void GetValuesFromGwModel() { Quantity dischargeQuantity = new Quantity(new Unit(PredefinedUnits.CubicMeterPerSecond), null, "Discharge"); Quantity waterlevelQuantity = new Quantity(new Unit(PredefinedUnits.Meter), null, "Water Level"); ElementSet idBasedElementSetA = new ElementSet(null, "ElmSet-A", ElementType.IdBased); idBasedElementSetA.AddElement(new Element("elm-1")); Input queryItem1 = new Input("discharge, to be retrieved from some output item", dischargeQuantity, idBasedElementSetA); queryItem1.TimeSet = new TimeSet(); Input queryItem2 = new Input("water level, to be retrieved from some output item", waterlevelQuantity, idBasedElementSetA); queryItem2.TimeSet = new TimeSet(); // Connect query item(s) to output item(s) // Take care that component becomes valid (and has produced initial output for connected items) ITimeSpaceComponent gwModel = new GWModelLC(); gwModel.Initialize(); ITimeSpaceOutput storageOnGrid = UTHelper.FindOutputItem(gwModel, "Grid.Storage"); storageOnGrid.AddConsumer(queryItem1); gwModel.Validate(); Assert.IsTrue(gwModel.Status == LinkableComponentStatus.Valid); gwModel.Prepare(); Assert.IsTrue(gwModel.Status == LinkableComponentStatus.Updated); // check initial values Assert.AreEqual(4, ValueSet.GetElementCount(storageOnGrid.Values), "#values for " + storageOnGrid.Id); Assert.AreEqual(0.0, (double)storageOnGrid.Values.GetValue(0, 0), "Value[0] as property"); // get values for specified query times queryItem1.TimeSet.SetSingleTimeStamp(new DateTime(2005, 1, 3, 0, 0, 0)); ITimeSpaceValueSet values = storageOnGrid.GetValues(queryItem1); Assert.IsNotNull(values, "values != null"); Assert.AreEqual(0.0, (double)values.GetValue(0, 0), "value[0] from GetValues 1"); // set next query time queryItem1.TimeSet.SetSingleTimeStamp(new DateTime(2005, 2, 4, 0, 0, 0)); values = storageOnGrid.GetValues(queryItem1); Assert.IsNotNull(values, "values != null"); Assert.AreEqual(0.0, (double)values.GetValue(0, 0), "value[0] from GetValues 1"); // ask for same time again values = storageOnGrid.GetValues(queryItem1); Assert.IsNotNull(values, "values != null"); Assert.AreEqual(0.0, (double)values.GetValue(0, 0), "value[0] from GetValues 1"); try { // set query time back in time queryItem1.TimeSet.SetSingleTimeStamp(new DateTime(2005, 2, 3, 0, 0, 0)); storageOnGrid.GetValues(queryItem1); } catch (Exception e) { Assert.IsTrue(e.Message.StartsWith("Could not update engine \"")); } try { // set query time beyond time horizon queryItem1.TimeSet.SetSingleTimeStamp(new DateTime(2005, 2, 28, 0, 0, 0)); storageOnGrid.GetValues(queryItem1); } catch (Exception e) { Assert.IsTrue(e.Message.StartsWith("Could not update engine \"")); } }