#region Copyright
/*
* Copyright (c) 2005,2006,2007, OpenMI Association
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the OpenMI Association nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY "OpenMI Association" ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL "OpenMI Association" BE LIABLE FOR ANY
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#endregion
using System;
using System.IO;
using System.Collections;
using OpenMI.Standard;
using RTCTools.OpenMI.Sdk.Backbone;
using RTCTools.OpenMI.Sdk.Buffer;
using NUnit.Framework;
namespace RTCTools.OpenMI.Sdk.Buffer.UnitTest
{
///
/// The SmartBufferTest class serves as teting of all public methods in the
/// RTCTools.OpenMI.Sdk.Buffer.SmartBuffer class. The SmartBufferTest class
/// is used with the NUnit software.
///
[TestFixture]
public class SmartBufferTest
{
[Test]
public void SmartBuffer()
{
// Testing the overloaded constructor SmartBuffer.SmartBuffer(SmartBuffer buffer)
// Note: this test does not include testing for buffers containing VectorSets
SmartBuffer smartBufferA = new SmartBuffer();
smartBufferA.AddValues(new TimeStamp(1), new ScalarSet(new double[3] { 1, 2, 3 }));
smartBufferA.AddValues(new TimeStamp(3), new ScalarSet(new double[3] { 3, 4, 5 }));
smartBufferA.AddValues(new TimeStamp(6), new ScalarSet(new double[3] { 6, 7, 8 }));
SmartBuffer buffer1 = new SmartBuffer(smartBufferA);
Assert.AreEqual(smartBufferA.TimesCount, buffer1.TimesCount);
for (int i = 0; i < smartBufferA.TimesCount; i++)
{
Assert.AreEqual(((ITimeStamp)smartBufferA.GetTimeAt(i)).ModifiedJulianDay, ((ITimeStamp)buffer1.GetTimeAt(i)).ModifiedJulianDay);
for (int n = 0; n < smartBufferA.ValuesCount; n++)
{
Assert.AreEqual(((IScalarSet) smartBufferA.GetValuesAt(i)).GetScalar(n),((IScalarSet) buffer1.GetValuesAt(i)).GetScalar(n));
}
}
SmartBuffer smartBufferB = new SmartBuffer();
smartBufferB.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(1),new TimeStamp(2)), new ScalarSet(new double[3] { 11, 12, 13 }));
smartBufferB.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(2),new TimeStamp(3)), new ScalarSet(new double[3] { 13, 14, 15 }));
smartBufferB.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(3),new TimeStamp(5)), new ScalarSet(new double[3] { 16, 17, 18 }));
SmartBuffer buffer2 = new SmartBuffer(smartBufferB);
Assert.AreEqual(smartBufferB.TimesCount, buffer2.TimesCount);
for (int i = 0; i < smartBufferB.TimesCount; i++)
{
Assert.AreEqual(((ITimeSpan)smartBufferB.GetTimeAt(i)).Start.ModifiedJulianDay, ((ITimeSpan)buffer2.GetTimeAt(i)).Start.ModifiedJulianDay);
Assert.AreEqual(((ITimeSpan)smartBufferB.GetTimeAt(i)).End.ModifiedJulianDay, ((ITimeSpan)buffer2.GetTimeAt(i)).End.ModifiedJulianDay);
for (int n = 0; n < smartBufferB.ValuesCount; n++)
{
Assert.AreEqual(((IScalarSet) smartBufferB.GetValuesAt(i)).GetScalar(n),((IScalarSet) buffer2.GetValuesAt(i)).GetScalar(n));
}
}
}
[Test] // testing the Initialise method
public void GetValues_TimeStampsToTimeStamp_01()
{
SmartBuffer smartBuffer = new SmartBuffer();
smartBuffer.AddValues(new TimeStamp(1), new ScalarSet(new double[3] { 1, 2, 3 }));
smartBuffer.AddValues(new TimeStamp(3), new ScalarSet(new double[3] { 3, 4, 5 }));
//ScalarSet scalarSet = (ScalarSet) smartBuffer.GetValues(new TimeStamp(2));
double a = smartBuffer.RelaxationFactor;
// Extrapolation
Assert.AreEqual(new ScalarSet(new double[3] { (1-3)/(3-1)*(1-a)+1, (2-4)/(3-1)*(1-a)+2, (3-5)/(3-1)*(1-a)+3 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(0)));
// "Hit" first TimeStamp
Assert.AreEqual(new ScalarSet(new double[3] { 1, 2, 3 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(1)));
// Interpolation
Assert.AreEqual(new ScalarSet(new double[3] { 2, 3, 4 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(2)));
// "Hit" last TimeStamp
Assert.AreEqual(new ScalarSet(new double[3] { 3, 4, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(3)));
// Extrapolation
Assert.AreEqual(new ScalarSet(new double[3] { (3-1)/(3-1)*(1-a)+3, (4-2)/(3-1)*(1-a)+4, (5-3)/(3-1)*(1-a)+5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(4)));
}
[Test] // testing the Initialise method
public void GetValues_TimeStampsToTimeStamp_02()
{
// GetValues_TimeStampsToTimeStamp_02()method is teting situation where the Times in
// the buffer is of type ITimeStamp and the requested values is associated to a ITimeStamp
//
// Three different relaxation factors are used
// See drawing at the following link.
// http://projects.dhi.dk/harmonIT/WP6/SourceCodeDocumentation/RTCTools.OpenMI.Sdk.Buffer.TestCode.htm
SmartBuffer smartBuffer = new SmartBuffer();
// --Populate the SmartBuffer --
smartBuffer.AddValues(new TimeStamp(10), new ScalarSet(new double[3] { 11, 2, 6}));
smartBuffer.AddValues(new TimeStamp(13), new ScalarSet(new double[3] { 5 , 5, 6}));
smartBuffer.AddValues(new TimeStamp(16), new ScalarSet(new double[3] { 2 ,14, 6}));
smartBuffer.AddValues(new TimeStamp(20), new ScalarSet(new double[3] { 2 , 2, 6}));
smartBuffer.AddValues(new TimeStamp(27), new ScalarSet(new double[3] { 2 , 9, 6}));
smartBuffer.AddValues(new TimeStamp(30), new ScalarSet(new double[3] {-4, 9, 6}));
smartBuffer.AddValues(new TimeStamp(48), new ScalarSet(new double[3] { 8,- 3, 6}));
smartBuffer.RelaxationFactor = 0.0;
Assert.AreEqual(new ScalarSet(new double[3] {13,1,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(9)));
Assert.AreEqual(new ScalarSet(new double[3] {11,2,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(10)));
Assert.AreEqual(new ScalarSet(new double[3] {9,3,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(11)));
Assert.AreEqual(new ScalarSet(new double[3] {7,4,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(12)));
Assert.AreEqual(new ScalarSet(new double[3] {5,5,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(13)));
Assert.AreEqual(new ScalarSet(new double[3] {4,8,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(14)));
Assert.AreEqual(new ScalarSet(new double[3] {3,11,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(15)));
Assert.AreEqual(new ScalarSet(new double[3] {2,14,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(16)));
Assert.AreEqual(new ScalarSet(new double[3] {2,11,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(17)));
Assert.AreEqual(new ScalarSet(new double[3] {2,2,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(20)));
Assert.AreEqual(new ScalarSet(new double[3] {2,3,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(21)));
Assert.AreEqual(new ScalarSet(new double[3] {2,5,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(23)));
Assert.AreEqual(new ScalarSet(new double[3] {2,9,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(27)));
Assert.AreEqual(new ScalarSet(new double[3] {0,9,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(28)));
Assert.AreEqual(new ScalarSet(new double[3] {-2,9,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(29)));
Assert.AreEqual(new ScalarSet(new double[3] {-4,9,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(30)));
Assert.AreEqual(new ScalarSet(new double[3] {-2,7,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(33)));
Assert.AreEqual(new ScalarSet(new double[3] {0,5,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(36)));
Assert.AreEqual(new ScalarSet(new double[3] {4,1,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(42)));
Assert.AreEqual(new ScalarSet(new double[3] {8,-3,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(48)));
Assert.AreEqual(new ScalarSet(new double[3] {12,-7,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(54)));
smartBuffer.RelaxationFactor = 1.0;
Assert.AreEqual(new ScalarSet(new double[3] {11,2,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(9)));
Assert.AreEqual(new ScalarSet(new double[3] {11,2,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(10)));
Assert.AreEqual(new ScalarSet(new double[3] {9,3,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(11)));
Assert.AreEqual(new ScalarSet(new double[3] {7,4,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(12)));
Assert.AreEqual(new ScalarSet(new double[3] {5,5,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(13)));
Assert.AreEqual(new ScalarSet(new double[3] {4,8,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(14)));
Assert.AreEqual(new ScalarSet(new double[3] {3,11,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(15)));
Assert.AreEqual(new ScalarSet(new double[3] {2,14,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(16)));
Assert.AreEqual(new ScalarSet(new double[3] {2,11,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(17)));
Assert.AreEqual(new ScalarSet(new double[3] {2,2,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(20)));
Assert.AreEqual(new ScalarSet(new double[3] {2,3,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(21)));
Assert.AreEqual(new ScalarSet(new double[3] {2,5,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(23)));
Assert.AreEqual(new ScalarSet(new double[3] {2,9,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(27)));
Assert.AreEqual(new ScalarSet(new double[3] {0,9,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(28)));
Assert.AreEqual(new ScalarSet(new double[3] {-2,9,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(29)));
Assert.AreEqual(new ScalarSet(new double[3] {-4,9,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(30)));
Assert.AreEqual(new ScalarSet(new double[3] {-2,7,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(33)));
Assert.AreEqual(new ScalarSet(new double[3] {0,5,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(36)));
Assert.AreEqual(new ScalarSet(new double[3] {4,1,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(42)));
Assert.AreEqual(new ScalarSet(new double[3] {8,-3,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(48)));
Assert.AreEqual(new ScalarSet(new double[3] {8,-3,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(54)));
double a = 0.7;
smartBuffer.RelaxationFactor = a;
Assert.AreEqual(new ScalarSet(new double[3] {11 + (1 - a) * 2,2 - (1 - a)* 1 ,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(9)));
Assert.AreEqual(new ScalarSet(new double[3] {11,2,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(10)));
Assert.AreEqual(new ScalarSet(new double[3] {9,3,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(11)));
Assert.AreEqual(new ScalarSet(new double[3] {7,4,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(12)));
Assert.AreEqual(new ScalarSet(new double[3] {5,5,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(13)));
Assert.AreEqual(new ScalarSet(new double[3] {4,8,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(14)));
Assert.AreEqual(new ScalarSet(new double[3] {3,11,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(15)));
Assert.AreEqual(new ScalarSet(new double[3] {2,14,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(16)));
Assert.AreEqual(new ScalarSet(new double[3] {2,11,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(17)));
Assert.AreEqual(new ScalarSet(new double[3] {2,2,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(20)));
Assert.AreEqual(new ScalarSet(new double[3] {2,3,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(21)));
Assert.AreEqual(new ScalarSet(new double[3] {2,5,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(23)));
Assert.AreEqual(new ScalarSet(new double[3] {2,9,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(27)));
Assert.AreEqual(new ScalarSet(new double[3] {0,9,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(28)));
Assert.AreEqual(new ScalarSet(new double[3] {-2,9,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(29)));
Assert.AreEqual(new ScalarSet(new double[3] {-4,9,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(30)));
Assert.AreEqual(new ScalarSet(new double[3] {-2,7,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(33)));
Assert.AreEqual(new ScalarSet(new double[3] {0,5,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(36)));
Assert.AreEqual(new ScalarSet(new double[3] {4,1,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(42)));
Assert.AreEqual(new ScalarSet(new double[3] {8,-3,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(48)));
Assert.AreEqual(new ScalarSet(new double[3] {8 + (1 - a) * 4,-3 - (1 - a) *4, 6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(54)));
}
///
///
///
[Test]
public void GetValues_TimeStampsToTimeStamp_05()
{
//-------------------------------------------------------------------------------------------------
// Only two ValueSets in buffer
//-------------------------------------------------------------------------------------------------
SmartBuffer smartBuffer = new SmartBuffer();
smartBuffer.RelaxationFactor = 0;
smartBuffer.AddValues(new TimeStamp(10), new ScalarSet(new double[3] { 11, 2, 6}));
smartBuffer.AddValues(new TimeStamp(13), new ScalarSet(new double[3] { 5 , 5, 6}));
Assert.AreEqual(new ScalarSet(new double[3] {13,1,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(9)));
Assert.AreEqual(new ScalarSet(new double[3] {11,2,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(10)));
Assert.AreEqual(new ScalarSet(new double[3] {9,3,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(11)));
Assert.AreEqual(new ScalarSet(new double[3] {7,4,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(12)));
Assert.AreEqual(new ScalarSet(new double[3] {5,5,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(13)));
Assert.AreEqual(new ScalarSet(new double[3] {3,6,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(14)));
}
[Test]
public void GetValues_TimeStampsToTimeStamp_06()
{
//-------------------------------------------------------------------------------------------------
// Only one ValueSets in buffer
//-------------------------------------------------------------------------------------------------
SmartBuffer smartBuffer = new SmartBuffer();
smartBuffer.RelaxationFactor = 0;
smartBuffer.AddValues(new TimeStamp(10), new ScalarSet(new double[3] { 11, 2, 6}));
Assert.AreEqual(new ScalarSet(new double[3] {11,2,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(9)));
Assert.AreEqual(new ScalarSet(new double[3] {11,2,6}),(ScalarSet) smartBuffer.GetValues(new TimeStamp(10)));
Assert.AreEqual(new ScalarSet(new double[3] {11,2,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(11)));
Assert.AreEqual(new ScalarSet(new double[3] {11,2,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(12)));
Assert.AreEqual(new ScalarSet(new double[3] {11,2,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(13)));
Assert.AreEqual(new ScalarSet(new double[3] {11,2,6}), (ScalarSet) smartBuffer.GetValues(new TimeStamp(14)));
}
[Test]
public void GetValues_TimeSpansToTimeStamp_01()
{
//-------------------------------------------------------------------------------------------------
// Teting Getvalues when buffer contains TimeSpans and the requested value corresponds to a
// TimeStamp. Three different relaxation factors are used.
//-------------------------------------------------------------------------------------------------
SmartBuffer smartBuffer = new SmartBuffer();
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(10),new TimeStamp(13)), new ScalarSet(new double[3] { 5, 12, 5 }));
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(13),new TimeStamp(16)), new ScalarSet(new double[3] { 7, 11, 5 }));
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(16),new TimeStamp(20)), new ScalarSet(new double[3] { 9, 10, 5 }));
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(20),new TimeStamp(27)), new ScalarSet(new double[3] { 2, 7, 5 }));
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(27),new TimeStamp(30)), new ScalarSet(new double[3] { -5, 6, 5 }));
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(30),new TimeStamp(48)), new ScalarSet(new double[3] { 7, 3, 5 }));
smartBuffer.RelaxationFactor = 0.0;
Assert.AreEqual(new ScalarSet(new double[3] { 1, 14, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(4)));
Assert.AreEqual(new ScalarSet(new double[3] { 3, 13, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(7)));
Assert.AreEqual(new ScalarSet(new double[3] { 5, 12, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(10)));
Assert.AreEqual(new ScalarSet(new double[3] { 5, 12, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(11)));
Assert.AreEqual(new ScalarSet(new double[3] { 5, 12, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(12)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 11, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(13)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 11, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(14)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 11, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(15)));
Assert.AreEqual(new ScalarSet(new double[3] { 9, 10, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(16)));
Assert.AreEqual(new ScalarSet(new double[3] { 9, 10, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(17)));
Assert.AreEqual(new ScalarSet(new double[3] { 2, 7, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(20)));
Assert.AreEqual(new ScalarSet(new double[3] { 2, 7, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(21)));
Assert.AreEqual(new ScalarSet(new double[3] { 2, 7, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(23)));
Assert.AreEqual(new ScalarSet(new double[3] {-5, 6, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(27)));
Assert.AreEqual(new ScalarSet(new double[3] {-5, 6, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(28)));
Assert.AreEqual(new ScalarSet(new double[3] {-5, 6, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(29)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 3, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(30)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 3, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(33)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 3, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(36)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 3, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(42)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 3, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(48)));
Assert.AreEqual(new ScalarSet(new double[3] {11, 2, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(54)));
Assert.AreEqual(new ScalarSet(new double[3] {15, 1, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(60)));
smartBuffer.RelaxationFactor = 1.0;
Assert.AreEqual(new ScalarSet(new double[3] { 5, 12, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(4)));
Assert.AreEqual(new ScalarSet(new double[3] { 5, 12, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(7)));
Assert.AreEqual(new ScalarSet(new double[3] { 5, 12, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(10)));
Assert.AreEqual(new ScalarSet(new double[3] { 5, 12, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(11)));
Assert.AreEqual(new ScalarSet(new double[3] { 5, 12, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(12)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 11, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(13)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 11, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(14)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 11, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(15)));
Assert.AreEqual(new ScalarSet(new double[3] { 9, 10, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(16)));
Assert.AreEqual(new ScalarSet(new double[3] { 9, 10, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(17)));
Assert.AreEqual(new ScalarSet(new double[3] { 2, 7, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(20)));
Assert.AreEqual(new ScalarSet(new double[3] { 2, 7, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(21)));
Assert.AreEqual(new ScalarSet(new double[3] { 2, 7, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(23)));
Assert.AreEqual(new ScalarSet(new double[3] {-5, 6, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(27)));
Assert.AreEqual(new ScalarSet(new double[3] {-5, 6, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(28)));
Assert.AreEqual(new ScalarSet(new double[3] {-5, 6, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(29)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 3, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(30)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 3, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(33)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 3, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(36)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 3, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(42)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 3, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(48)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 3, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(54)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 3, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(60)));
double a = 0.7;
smartBuffer.RelaxationFactor = a;
Assert.AreEqual(new ScalarSet(new double[3] { 5 - (1 - a)*(5 -1), 12 - (1-a)*(12-14), 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(4)));
Assert.AreEqual(new ScalarSet(new double[3] { 5 - (1 - a)*(5 - 3), 12 - (1 -a)* (12-13), 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(7)));
Assert.AreEqual(new ScalarSet(new double[3] { 5, 12, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(10)));
Assert.AreEqual(new ScalarSet(new double[3] { 5, 12, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(11)));
Assert.AreEqual(new ScalarSet(new double[3] { 5, 12, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(12)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 11, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(13)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 11, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(14)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 11, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(15)));
Assert.AreEqual(new ScalarSet(new double[3] { 9, 10, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(16)));
Assert.AreEqual(new ScalarSet(new double[3] { 9, 10, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(17)));
Assert.AreEqual(new ScalarSet(new double[3] { 2, 7, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(20)));
Assert.AreEqual(new ScalarSet(new double[3] { 2, 7, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(21)));
Assert.AreEqual(new ScalarSet(new double[3] { 2, 7, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(23)));
Assert.AreEqual(new ScalarSet(new double[3] {-5, 6, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(27)));
Assert.AreEqual(new ScalarSet(new double[3] {-5, 6, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(28)));
Assert.AreEqual(new ScalarSet(new double[3] {-5, 6, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(29)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 3, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(30)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 3, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(33)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 3, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(36)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 3, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(42)));
Assert.AreEqual(new ScalarSet(new double[3] { 7, 3, 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(48)));
Assert.AreEqual(new ScalarSet(new double[3] { 7+(1-a)*(11-7), 3+(1-a)*(2-3), 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(54)));
Assert.AreEqual(new ScalarSet(new double[3] { 7+(1-a)*(15-7), 3+(1-a)*(1-3), 5 }), (ScalarSet) smartBuffer.GetValues(new TimeStamp(60)));
}
[Test]
public void GetValues_TimeSpansToTimeSpans()
{
SmartBuffer smartBuffer = new SmartBuffer();
smartBuffer.RelaxationFactor = 1.0;
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(10),new TimeStamp(13)), new ScalarSet(new double[1] { 1 }));
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(13),new TimeStamp(16)), new ScalarSet(new double[1] { 2 }));
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(16),new TimeStamp(19)), new ScalarSet(new double[1] { 3 }));
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(19),new TimeStamp(27)), new ScalarSet(new double[1] { 4 }));
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(27),new TimeStamp(30)), new ScalarSet(new double[1] { 5 }));
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(30),new TimeStamp(48)), new ScalarSet(new double[1] { 6 }));
Assert.AreEqual( 1.0 , ((ScalarSet) smartBuffer.GetValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(9),new TimeStamp(13)))).GetScalar(0));
Assert.AreEqual( 1.0 , ((ScalarSet) smartBuffer.GetValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(10),new TimeStamp(13)))).GetScalar(0));
Assert.AreEqual( 1.0 , ((ScalarSet) smartBuffer.GetValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(11),new TimeStamp(12)))).GetScalar(0));
Assert.AreEqual( 2.5 , ((ScalarSet) smartBuffer.GetValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(13),new TimeStamp(19)))).GetScalar(0));
Assert.AreEqual( 2.5 , ((ScalarSet) smartBuffer.GetValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(14.5),new TimeStamp(17.5)))).GetScalar(0));
smartBuffer.RelaxationFactor = 1.0;
Assert.AreEqual( 1.0 , ((ScalarSet) smartBuffer.GetValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(10),new TimeStamp(13)))).GetScalar(0));
Assert.AreEqual( 1.0 , ((ScalarSet) smartBuffer.GetValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(11),new TimeStamp(12)))).GetScalar(0));
Assert.AreEqual( 2.5 , ((ScalarSet) smartBuffer.GetValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(13),new TimeStamp(19)))).GetScalar(0));
Assert.AreEqual( 2.5 , ((ScalarSet) smartBuffer.GetValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(14.5),new TimeStamp(17.5)))).GetScalar(0));
}
[Test]
public void GetValues_TimeStampsToTimeSpan_01()
{
SmartBuffer smartBuffer = new SmartBuffer();
smartBuffer.AddValues(new TimeStamp(2), new ScalarSet(new double[1] {2}));
smartBuffer.AddValues(new TimeStamp(4), new ScalarSet(new double[1] {4}));
smartBuffer.AddValues(new TimeStamp(7), new ScalarSet(new double[1] {4}));
smartBuffer.AddValues(new TimeStamp(11), new ScalarSet(new double[1] {6}));
smartBuffer.AddValues(new TimeStamp(13), new ScalarSet(new double[1] {4}));
smartBuffer.AddValues(new TimeStamp(15), new ScalarSet(new double[1] {3}));
smartBuffer.RelaxationFactor = 1.0;
Assert.AreEqual( 24.5/6 , ((ScalarSet) smartBuffer.GetValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(3),new TimeStamp(9)))).GetScalar(0),0.0000000001);
Assert.AreEqual( 49.25/11 , ((ScalarSet) smartBuffer.GetValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(3),new TimeStamp(14)))).GetScalar(0),0.0000000001);
Assert.AreEqual( 13.0/4.0 , ((ScalarSet) smartBuffer.GetValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(13),new TimeStamp(17)))).GetScalar(0));
smartBuffer.RelaxationFactor = 0.0;
Assert.AreEqual( 3 , ((ScalarSet) smartBuffer.GetValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(13),new TimeStamp(17)))).GetScalar(0));
smartBuffer.RelaxationFactor = 1.0;
Assert.AreEqual( 3, ((ScalarSet) smartBuffer.GetValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(1),new TimeStamp(5)))).GetScalar(0));
}
[Test]
public void AddValues_01()
{
try
{
SmartBuffer smartBuffer = new SmartBuffer();
smartBuffer.DoExtendedDataVerification = true;
ScalarSet scalarSet = new ScalarSet(new double[3] { 0, 1, 2 });
TimeStamp timeStamp = new TimeStamp(1);
smartBuffer.AddValues(timeStamp, scalarSet);
timeStamp.ModifiedJulianDay = 2;
scalarSet.data[0] = 10;
scalarSet.data[1] = 11;
scalarSet.data[2] = 12;
smartBuffer.AddValues(timeStamp, scalarSet);
smartBuffer.AddValues(new TimeStamp(3), new ScalarSet(new double[3] { 110, 111, 112 }));
smartBuffer.AddValues(new TimeStamp(4), new ScalarSet(new double[3] { 1110, 1111, 1112 }));
Assert.AreEqual(0,((IScalarSet) smartBuffer.GetValuesAt(0)).GetScalar(0));
Assert.AreEqual(1,((IScalarSet) smartBuffer.GetValuesAt(0)).GetScalar(1));
Assert.AreEqual(2,((IScalarSet) smartBuffer.GetValuesAt(0)).GetScalar(2));
Assert.AreEqual(10,((IScalarSet) smartBuffer.GetValuesAt(1)).GetScalar(0));
Assert.AreEqual(11,((IScalarSet) smartBuffer.GetValuesAt(1)).GetScalar(1));
Assert.AreEqual(12,((IScalarSet) smartBuffer.GetValuesAt(1)).GetScalar(2));
Assert.AreEqual(110,((IScalarSet) smartBuffer.GetValuesAt(2)).GetScalar(0));
Assert.AreEqual(111,((IScalarSet) smartBuffer.GetValuesAt(2)).GetScalar(1));
Assert.AreEqual(112,((IScalarSet) smartBuffer.GetValuesAt(2)).GetScalar(2));
Assert.AreEqual(1110,((IScalarSet) smartBuffer.GetValuesAt(3)).GetScalar(0));
Assert.AreEqual(1111,((IScalarSet) smartBuffer.GetValuesAt(3)).GetScalar(1));
Assert.AreEqual(1112,((IScalarSet) smartBuffer.GetValuesAt(3)).GetScalar(2));
Assert.AreEqual(4,smartBuffer.TimesCount);
Assert.AreEqual(3,smartBuffer.ValuesCount);
}
catch (System.Exception e)
{
WriteException(e);
throw (e);
}
}
[Test]
public void ClearAfter()
{
SmartBuffer smartBuffer = new SmartBuffer();
smartBuffer.DoExtendedDataVerification = true;
// --Populate the SmartBuffer --
smartBuffer.AddValues(new TimeStamp(10), new ScalarSet(new double[2] {11, 21}));
smartBuffer.AddValues(new TimeStamp(13), new ScalarSet(new double[2] {12 ,22}));
smartBuffer.AddValues(new TimeStamp(16), new ScalarSet(new double[2] {13 ,23}));
smartBuffer.AddValues(new TimeStamp(20), new ScalarSet(new double[2] {14 ,24}));
smartBuffer.AddValues(new TimeStamp(27), new ScalarSet(new double[2] {15 ,25}));
smartBuffer.AddValues(new TimeStamp(30), new ScalarSet(new double[2] {16, 26}));
smartBuffer.AddValues(new TimeStamp(48), new ScalarSet(new double[2] {17, 27}));
RTCTools.OpenMI.Sdk.Backbone.TimeStamp time = new RTCTools.OpenMI.Sdk.Backbone.TimeStamp();
time.ModifiedJulianDay = 50; // this time is after the last time in buffer
smartBuffer.ClearAfter(time);
Assert.AreEqual(7,smartBuffer.TimesCount); //nothing removed
Assert.AreEqual(11,((IScalarSet) smartBuffer.GetValuesAt(0)).GetScalar(0));
Assert.AreEqual(27,((IScalarSet) smartBuffer.GetValuesAt(6)).GetScalar(1));
time.ModifiedJulianDay = 30;
smartBuffer.ClearAfter(time);
Assert.AreEqual(5,smartBuffer.TimesCount);
Assert.AreEqual(11,((IScalarSet) smartBuffer.GetValuesAt(0)).GetScalar(0));
Assert.AreEqual(25,((IScalarSet) smartBuffer.GetValuesAt(4)).GetScalar(1));
time.ModifiedJulianDay = 16.5;
smartBuffer.ClearAfter(time);
Assert.AreEqual(3,smartBuffer.TimesCount);
Assert.AreEqual(11,((IScalarSet) smartBuffer.GetValuesAt(0)).GetScalar(0));
Assert.AreEqual(23,((IScalarSet) smartBuffer.GetValuesAt(2)).GetScalar(1));
time.ModifiedJulianDay = 9;
smartBuffer.ClearAfter(time);
Assert.AreEqual(0,smartBuffer.TimesCount);
time.ModifiedJulianDay = 9;
smartBuffer.ClearAfter(time);
Assert.AreEqual(0,smartBuffer.TimesCount);
smartBuffer.AddValues(new TimeStamp(10), new ScalarSet(new double[2] {11, 21}));
smartBuffer.AddValues(new TimeStamp(13), new ScalarSet(new double[2] {12 ,22}));
smartBuffer.AddValues(new TimeStamp(16), new ScalarSet(new double[2] {13 ,23}));
smartBuffer.AddValues(new TimeStamp(20), new ScalarSet(new double[2] {14 ,24}));
smartBuffer.AddValues(new TimeStamp(27), new ScalarSet(new double[2] {15 ,25}));
smartBuffer.AddValues(new TimeStamp(30), new ScalarSet(new double[2] {16, 26}));
smartBuffer.AddValues(new TimeStamp(48), new ScalarSet(new double[2] {17, 27}));
RTCTools.OpenMI.Sdk.Backbone.TimeStamp start = new RTCTools.OpenMI.Sdk.Backbone.TimeStamp(50);
RTCTools.OpenMI.Sdk.Backbone.TimeStamp end = new RTCTools.OpenMI.Sdk.Backbone.TimeStamp(55);
RTCTools.OpenMI.Sdk.Backbone.TimeSpan timeSpan = new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(start,end);
start.ModifiedJulianDay = 50; // this time is after the last time in buffer
smartBuffer.ClearAfter(timeSpan);
Assert.AreEqual(7,smartBuffer.TimesCount); //nothing removed
Assert.AreEqual(11,((IScalarSet) smartBuffer.GetValuesAt(0)).GetScalar(0));
Assert.AreEqual(27,((IScalarSet) smartBuffer.GetValuesAt(6)).GetScalar(1));
start.ModifiedJulianDay = 30;
smartBuffer.ClearAfter(timeSpan);
Assert.AreEqual(5,smartBuffer.TimesCount);
Assert.AreEqual(11,((IScalarSet) smartBuffer.GetValuesAt(0)).GetScalar(0));
Assert.AreEqual(25,((IScalarSet) smartBuffer.GetValuesAt(4)).GetScalar(1));
start.ModifiedJulianDay = 16.5;
smartBuffer.ClearAfter(timeSpan);
Assert.AreEqual(3,smartBuffer.TimesCount);
Assert.AreEqual(11,((IScalarSet) smartBuffer.GetValuesAt(0)).GetScalar(0));
Assert.AreEqual(23,((IScalarSet) smartBuffer.GetValuesAt(2)).GetScalar(1));
start.ModifiedJulianDay = 9;
smartBuffer.ClearAfter(timeSpan);
Assert.AreEqual(0,smartBuffer.TimesCount);
start.ModifiedJulianDay = 9;
smartBuffer.ClearAfter(timeSpan);
Assert.AreEqual(0,smartBuffer.TimesCount);
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(10),new TimeStamp(13)), new ScalarSet(new double[2] {11, 21}));
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(13),new TimeStamp(16)), new ScalarSet(new double[2] {12, 22}));
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(16),new TimeStamp(20)), new ScalarSet(new double[2] {13, 23}));
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(20),new TimeStamp(27)), new ScalarSet(new double[2] {14, 24}));
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(27),new TimeStamp(30)), new ScalarSet(new double[2] {15, 25}));
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(30),new TimeStamp(48)), new ScalarSet(new double[2] {16, 26}));
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(48),new TimeStamp(55)), new ScalarSet(new double[2] {17, 27}));
time.ModifiedJulianDay = 50; // this time is after the last time in buffer
smartBuffer.ClearAfter(time);
Assert.AreEqual(7,smartBuffer.TimesCount); //nothing removed
Assert.AreEqual(11,((IScalarSet) smartBuffer.GetValuesAt(0)).GetScalar(0));
Assert.AreEqual(27,((IScalarSet) smartBuffer.GetValuesAt(6)).GetScalar(1));
time.ModifiedJulianDay = 30;
smartBuffer.ClearAfter(time);
Assert.AreEqual(5,smartBuffer.TimesCount);
Assert.AreEqual(11,((IScalarSet) smartBuffer.GetValuesAt(0)).GetScalar(0));
Assert.AreEqual(25,((IScalarSet) smartBuffer.GetValuesAt(4)).GetScalar(1));
time.ModifiedJulianDay = 16.5;
smartBuffer.ClearAfter(time);
Assert.AreEqual(3,smartBuffer.TimesCount);
Assert.AreEqual(11,((IScalarSet) smartBuffer.GetValuesAt(0)).GetScalar(0));
Assert.AreEqual(23,((IScalarSet) smartBuffer.GetValuesAt(2)).GetScalar(1));
time.ModifiedJulianDay = 9;
smartBuffer.ClearAfter(time);
Assert.AreEqual(0,smartBuffer.TimesCount);
time.ModifiedJulianDay = 9;
smartBuffer.ClearAfter(time);
Assert.AreEqual(0,smartBuffer.TimesCount);
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(10),new TimeStamp(13)), new ScalarSet(new double[2] {11, 21}));
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(13),new TimeStamp(16)), new ScalarSet(new double[2] {12, 22}));
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(16),new TimeStamp(20)), new ScalarSet(new double[2] {13, 23}));
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(20),new TimeStamp(27)), new ScalarSet(new double[2] {14, 24}));
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(27),new TimeStamp(30)), new ScalarSet(new double[2] {15, 25}));
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(30),new TimeStamp(48)), new ScalarSet(new double[2] {16, 26}));
smartBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(48),new TimeStamp(55)), new ScalarSet(new double[2] {17, 27}));
start.ModifiedJulianDay = 50; // this time is after the last time in buffer
smartBuffer.ClearAfter(timeSpan);
Assert.AreEqual(7,smartBuffer.TimesCount); //nothing removed
Assert.AreEqual(11,((IScalarSet) smartBuffer.GetValuesAt(0)).GetScalar(0));
Assert.AreEqual(27,((IScalarSet) smartBuffer.GetValuesAt(6)).GetScalar(1));
start.ModifiedJulianDay = 30;
smartBuffer.ClearAfter(timeSpan);
Assert.AreEqual(5,smartBuffer.TimesCount);
Assert.AreEqual(11,((IScalarSet) smartBuffer.GetValuesAt(0)).GetScalar(0));
Assert.AreEqual(25,((IScalarSet) smartBuffer.GetValuesAt(4)).GetScalar(1));
start.ModifiedJulianDay = 16.5;
smartBuffer.ClearAfter(timeSpan);
Assert.AreEqual(3,smartBuffer.TimesCount);
Assert.AreEqual(11,((IScalarSet) smartBuffer.GetValuesAt(0)).GetScalar(0));
Assert.AreEqual(23,((IScalarSet) smartBuffer.GetValuesAt(2)).GetScalar(1));
start.ModifiedJulianDay = 9;
smartBuffer.ClearAfter(timeSpan);
Assert.AreEqual(0,smartBuffer.TimesCount);
start.ModifiedJulianDay = 9;
smartBuffer.ClearAfter(timeSpan);
Assert.AreEqual(0,smartBuffer.TimesCount);
}
[Test]
public void ClearBefore()
{
SmartBuffer smartBuffer = new SmartBuffer();
smartBuffer.AddValues(new TimeStamp(1), new ScalarSet(new double[3] { 1.1, 2.1, 3.1 }));
smartBuffer.AddValues(new TimeStamp(3), new ScalarSet(new double[3] { 4.1, 5.1, 6.1 }));
smartBuffer.AddValues(new TimeStamp(4), new ScalarSet(new double[3] { 7.1, 8.1, 9.1 }));
smartBuffer.AddValues(new TimeStamp(5), new ScalarSet(new double[3] { 10.1, 11.1, 12.1 }));
smartBuffer.ClearBefore(new TimeStamp(0.5));
Assert.AreEqual(4,smartBuffer.TimesCount);
smartBuffer.CheckBuffer();
smartBuffer.ClearBefore(new TimeStamp(1));
Assert.AreEqual(4,smartBuffer.TimesCount);
smartBuffer.CheckBuffer();
smartBuffer.ClearBefore(new TimeStamp(1.1));
Assert.AreEqual(4,smartBuffer.TimesCount);
Assert.AreEqual(1.1,((ScalarSet) smartBuffer.GetValuesAt(0)).GetScalar(0));
Assert.AreEqual(1, ((ITimeStamp) smartBuffer.GetTimeAt(0)).ModifiedJulianDay);
smartBuffer.CheckBuffer();
smartBuffer.ClearBefore(new TimeStamp(4.1));
Assert.AreEqual(2, smartBuffer.TimesCount);
Assert.AreEqual(7.1,((ScalarSet) smartBuffer.GetValuesAt(0)).GetScalar(0));
Assert.AreEqual(4, ((ITimeStamp) smartBuffer.GetTimeAt(0)).ModifiedJulianDay);
smartBuffer.CheckBuffer();
smartBuffer.ClearBefore(new TimeStamp(5.1));
Assert.AreEqual(1, smartBuffer.TimesCount);
Assert.AreEqual(10.1,((ScalarSet) smartBuffer.GetValuesAt(0)).GetScalar(0));
Assert.AreEqual(5, ((ITimeStamp) smartBuffer.GetTimeAt(0)).ModifiedJulianDay);
smartBuffer.CheckBuffer();
SmartBuffer timeSpanBuffer = new SmartBuffer();
timeSpanBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(1),new TimeStamp(3)), new ScalarSet(new double[3] { 1.1, 2.1, 3.1 }));
timeSpanBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(3),new TimeStamp(5)), new ScalarSet(new double[3] { 4.1, 5.1, 6.1 }));
timeSpanBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(5),new TimeStamp(7)), new ScalarSet(new double[3] { 7.1, 8.1, 9.1 }));
timeSpanBuffer.AddValues(new RTCTools.OpenMI.Sdk.Backbone.TimeSpan(new TimeStamp(7),new TimeStamp(9)), new ScalarSet(new double[3] { 10.1, 11.1, 12.1 }));
timeSpanBuffer.ClearBefore(new TimeStamp(0.5));
Assert.AreEqual(4,timeSpanBuffer.TimesCount);
timeSpanBuffer.CheckBuffer();
timeSpanBuffer.ClearBefore(new TimeStamp(1.0));
Assert.AreEqual(4,timeSpanBuffer.TimesCount);
timeSpanBuffer.CheckBuffer();
timeSpanBuffer.ClearBefore(new TimeStamp(2.0));
Assert.AreEqual(4,timeSpanBuffer.TimesCount);
timeSpanBuffer.CheckBuffer();
timeSpanBuffer.ClearBefore(new TimeStamp(3.0));
Assert.AreEqual(4,timeSpanBuffer.TimesCount);
timeSpanBuffer.CheckBuffer();
timeSpanBuffer.ClearBefore(new TimeStamp(4.0));
Assert.AreEqual(4,timeSpanBuffer.TimesCount);
Assert.AreEqual(1.1,((ScalarSet) timeSpanBuffer.GetValuesAt(0)).GetScalar(0));
Assert.AreEqual(1, ((ITimeSpan) timeSpanBuffer.GetTimeAt(0)).Start.ModifiedJulianDay);
Assert.AreEqual(3, ((ITimeSpan) timeSpanBuffer.GetTimeAt(0)).End.ModifiedJulianDay);
timeSpanBuffer.CheckBuffer();
timeSpanBuffer.ClearBefore(new TimeStamp(7.0));
Assert.AreEqual(3,timeSpanBuffer.TimesCount);
Assert.AreEqual(4.1,((ScalarSet) timeSpanBuffer.GetValuesAt(0)).GetScalar(0));
Assert.AreEqual(3, ((ITimeSpan) timeSpanBuffer.GetTimeAt(0)).Start.ModifiedJulianDay);
Assert.AreEqual(5, ((ITimeSpan) timeSpanBuffer.GetTimeAt(0)).End.ModifiedJulianDay);
timeSpanBuffer.CheckBuffer();
timeSpanBuffer.ClearBefore(new TimeStamp(10.0));
Assert.AreEqual(1,timeSpanBuffer.TimesCount);
Assert.AreEqual(10.1,((ScalarSet) timeSpanBuffer.GetValuesAt(0)).GetScalar(0));
Assert.AreEqual(7, ((ITimeSpan) timeSpanBuffer.GetTimeAt(0)).Start.ModifiedJulianDay);
Assert.AreEqual(9, ((ITimeSpan) timeSpanBuffer.GetTimeAt(0)).End.ModifiedJulianDay);
timeSpanBuffer.CheckBuffer();
}
private void WriteException(System.Exception e)
{
Console.WriteLine(" ");
Console.WriteLine("------- System.Exception ----------------------------- ");
Console.WriteLine("Catched in....: org.OpenMITest.Utilities.Wrapper.GetValues_River_Trigger_IDBased()");
Console.WriteLine("Message.......: " + e.Message);
Console.WriteLine("Stact trace...: " + e.StackTrace);
Console.WriteLine("TargetSite....: " + e.TargetSite.Name);
Console.WriteLine("Source........: " + e.Source);
Console.WriteLine(" ");
}
}
}