public void ComputationVirtualChannelTest() { const int virtualParameterId = 14; const int loggedParameterId = 22; var expression = SMExpressionParser.ParseOrThrow("sqrt($a + $a)"); var symbolTable = m_repository.Create <IParametersSymbolTable>(); var slowRowStorage = m_repository.Create <ISlowRowStorage <long> >(); symbolTable.Setup(x => x.GetId("a", String.Empty, It.IsAny <Action <int> >(), It.IsAny <Action>())) .Callback <string, string, Action <int>, Action>((s, s1, ok, ko) => ok(loggedParameterId)); var vc = new SingleLoggedParameterVirtualChannel <long>(expression, virtualParameterId, loggedParameterId, 10 * 1000, symbolTable.Object, slowRowStorage.Object, new MillisTimeUtils()); var expected = new[] { 4, 3, 1.414213562373095048 }; double[] output = null; vc.AddValues(1001, loggedParameterId, new[] { 8, 4.5, 1 }, (time, id, values) => { Assert.AreEqual(1001, time); Assert.AreEqual(virtualParameterId, id); output = values; }); CollectionAssert.AreEqual(expected, output); }
public void AdditionWithSlowRowVirtualChannelTest() { const int virtualParameterId = 14; const int loggedParameterId = 22; const int slowRowParameterId = 2003; var expression = SMExpressionParser.ParseOrThrow("$a + nolog($b)"); var symbolTable = m_repository.Create <IParametersSymbolTable>(); var slowRowStorage = m_repository.Create <ISlowRowStorage <long> >(); symbolTable.Setup(x => x.GetId("a", String.Empty, It.IsAny <Action <int> >(), It.IsAny <Action>())) .Callback <string, string, Action <int>, Action>((s, s1, ok, ko) => ok(loggedParameterId)); symbolTable.Setup(x => x.GetId("b", String.Empty, It.IsAny <Action <int> >(), It.IsAny <Action>())) .Callback <string, string, Action <int>, Action>((s, s1, ok, ko) => ok(slowRowParameterId)); var vc = new SingleLoggedParameterVirtualChannel <long>(expression, virtualParameterId, loggedParameterId, 10 * 1000, symbolTable.Object, slowRowStorage.Object, new MillisTimeUtils()); slowRowStorage.Setup(x => x.GetValue(1001, slowRowParameterId, false)).Returns(0.1); slowRowStorage.Setup(x => x.GetValue(1101, slowRowParameterId, false)).Returns(0.1); slowRowStorage.Setup(x => x.GetValue(1201, slowRowParameterId, false)).Returns(0.1); var expected = new[] { 1.1, 2.1, 3.1 }; double[] output = null; vc.AddValues(1001, loggedParameterId, new double[] { 1, 2, 3 }, (time, id, values) => { Assert.AreEqual(1001, time); Assert.AreEqual(virtualParameterId, id); output = values; }); CollectionAssert.AreEqual(expected, output); }