Exemplo n.º 1
0
 private void MaxScalar(EditMom res, MomList mlist, int i, DateTime t)
 {
     if (res.ValueLess(mlist.MeanI(i)))
     {
         res.CopyValueFrom(mlist, i);
         res.Error = mlist.ErrorI(i);
     }
 }
Exemplo n.º 2
0
        //Агрегация по равномерным сегментам
        //На входе функция с параметрами: текущий результат, список и обрабатываемый номер
        private void Agregate(Action <EditMom, MomList, int, DateTime> fun)
        {
            double seglen = _pars[0].Real, segshift = _pars.Length < 2 ? 0 : _pars[1].Real * seglen;
            var    moms = _initialSignal.OutValue;

            if (moms.Count == 0)
            {
                return;
            }
            var mlist = MFactory.NewList(DataType);
            //Добавляем в список границы сегментов
            var t = Connect.PeriodBegin;
            int i = 0;

            while (t < Connect.PeriodEnd.AddMilliseconds(1))
            {
                while (i < moms.Count && moms.TimeI(i) < t)
                {
                    if (moms.TimeI(i) >= Connect.PeriodBegin && moms.TimeI(i) <= Connect.PeriodEnd)
                    {
                        mlist.AddMom(moms.ToMomI(i));
                    }
                    i++;
                }
                AddUniformMom(moms, mlist, i, t);
                t = t.AddSeconds(seglen);
            }
            if (i < moms.Count && moms.TimeI(i) == Connect.PeriodEnd)
            {
                mlist.AddMom(moms.ToMomI(i));
            }

            t = Connect.PeriodBegin;
            i = 0;
            while (t < Connect.PeriodEnd.AddMilliseconds(-1))
            {
                var me = new EditMom(DataType, t.AddSeconds(segshift));
                if (fun.Method.Name == "AverageScalar")
                {
                    me.Real = 0;
                }
                else
                {
                    me.CopyValueFrom(mlist, i);
                }
                t = t.AddSeconds(seglen);
                while (i < mlist.Count && mlist.TimeI(i) <= t)
                {
                    fun(me, mlist, i++, t);
                }
                if (i > 0 && mlist.TimeI(i - 1) == t)
                {
                    i--;
                }
                MomList.AddMom(me);
            }
        }
Exemplo n.º 3
0
        //Добавить особую ошибку в заданный EditMom
        public void PutErr(EditMom mom,
                           string errMess,          //Сообщение ошибки
                           int quality = 2,         //Качество ошибки
                           int errNum  = 0)         //Номер ошибки среди ошибок для одной функции, число от 0 до 8
        {
            var number = CurFun.ErrorNumber + errNum + 1;

            ((MomErrFactory)ErrPool.Factory).AddDescr(number, errMess, quality);
            mom.AddError(ErrPool.MakeError(number, Contextable));
        }
Exemplo n.º 4
0
        public void MomListTime()
        {
            var pool = MakeErrPool();
            var c    = new ContextTest("Context");

            var list = MFactory.NewList(DataType.Time);

            Assert.AreEqual(0, list.Count);
            Assert.AreEqual(DataType.Time, list.DataType);

            var err1 = pool.MakeError(1, c);
            var err2 = pool.MakeError(2, c);

            list.AddMom(RTime(0), RTime(0));
            list.AddMom(RTime(0, 10), RTime(1), err1);
            list.AddMom(RTime(0, 20), RTime(2), err2);
            Assert.AreEqual(3, list.Count);
            Assert.AreEqual(RTime(0), list.TimeI(0));
            Assert.AreEqual(RTime(0, 10), list.TimeI(1));
            Assert.AreEqual(RTime(0, 20), list.TimeI(2));
            Assert.AreEqual(RTime(0), list.DateI(0));
            Assert.AreEqual(RTime(1), list.DateI(1));
            Assert.AreEqual(RTime(2), list.DateI(2));
            Assert.IsNull(list.ErrorI(0));
            Assert.IsNotNull(list.ErrorI(1));
            Assert.AreEqual(1, list.ErrorI(1).Number);
            Assert.AreEqual("Warning", list.ErrorI(1).Text);
            Assert.IsNotNull(list.ErrorI(2));
            Assert.AreEqual(2, list.ErrorI(2).Number);
            Assert.AreEqual("Error", list.ErrorI(2).Text);

            list.CurNum = 1;
            Assert.AreEqual(RTime(1), list.Date);
            Assert.AreEqual(1, list.Error.Number);
            Assert.AreEqual(RTime(0, 10), list.Time);

            var m = list.ToMom(RTime(1), err2);

            Assert.AreEqual(RTime(1), m.Date);
            Assert.AreEqual(1, m.Error.Number);
            Assert.AreEqual(RTime(1), m.Time);

            var me = new EditMom(DataType.Time);

            me.Time = RTime(0, 5);
            me.Date = RTime(0, 30);
            list.AddMom(me);
            me.Time = RTime(0, 15);
            me.Date = RTime(1, 30);
            list.AddMom(me, err1);
            me.Time = RTime(0, 25);
            me.Date = RTime(2, 30);
            list.AddMom(me, err2);
            Assert.AreEqual(6, list.Count);
            Assert.AreEqual(RTime(0), list.TimeI(0));
            Assert.AreEqual(RTime(0, 5), list.TimeI(1));
            Assert.AreEqual(RTime(0, 10), list.TimeI(2));
            Assert.AreEqual(RTime(0, 15), list.TimeI(3));
            Assert.AreEqual(RTime(0, 20), list.TimeI(4));
            Assert.AreEqual(RTime(0, 25), list.TimeI(5));
            Assert.AreEqual(RTime(0), list.DateI(0));
            Assert.AreEqual(RTime(0, 30), list.DateI(1));
            Assert.AreEqual(RTime(1), list.DateI(2));
            Assert.AreEqual(RTime(1, 30), list.DateI(3));
            Assert.AreEqual(RTime(2), list.DateI(4));
            Assert.AreEqual(RTime(2, 30), list.DateI(5));
            Assert.IsNull(list.ErrorI(0));
            Assert.IsNull(list.ErrorI(1));
            Assert.AreEqual(1, list.ErrorI(2).Number);
            Assert.AreEqual(1, list.ErrorI(3).Number);
            Assert.AreEqual(2, list.ErrorI(4).Number);
            Assert.AreEqual(2, list.ErrorI(5).Number);
        }
Exemplo n.º 5
0
        public void MomListString()
        {
            var pool = MakeErrPool();
            var c    = new ContextTest("Context");

            var list = MFactory.NewList(DataType.String);

            Assert.AreEqual(0, list.Count);
            Assert.AreEqual(DataType.String, list.DataType);

            var err1 = pool.MakeError(1, c);
            var err2 = pool.MakeError(2, c);

            list.AddMom(RTime(0), "s0");
            list.AddMom(RTime(0, 10), "s1", err1);
            list.AddMom(RTime(0, 20), "s2", err2);
            Assert.AreEqual(3, list.Count);
            Assert.AreEqual(RTime(0), list.TimeI(0));
            Assert.AreEqual(RTime(0, 10), list.TimeI(1));
            Assert.AreEqual(RTime(0, 20), list.TimeI(2));
            Assert.AreEqual("s0", list.StringI(0));
            Assert.AreEqual("s1", list.StringI(1));
            Assert.AreEqual("s2", list.StringI(2));
            Assert.IsNull(list.ErrorI(0));
            Assert.AreEqual(1, list.ErrorI(1).Number);
            Assert.AreEqual("Error", list.ErrorI(2).Text);

            list.CurNum = 1;
            Assert.AreEqual("s1", list.String);
            Assert.AreEqual(1, list.Error.Number);
            Assert.AreEqual(RTime(0, 10), list.Time);

            var m = list.ToMom(RTime(1), err2);

            Assert.AreEqual("s1", m.String);
            Assert.AreEqual(1, m.Error.Number);
            Assert.AreEqual(RTime(1), m.Time);

            var me = new EditMom(DataType.Real);

            me.Time = RTime(0, 5);
            me.Real = 2;
            list.AddMom(me);
            me.Time = RTime(0, 15);
            me.Real = 2.1;
            list.AddMom(me, err1);
            me.Time = RTime(0, 25);
            me.Real = 2.2;
            list.AddMom(me, err2);
            Assert.AreEqual(6, list.Count);
            Assert.AreEqual(RTime(0), list.TimeI(0));
            Assert.AreEqual(RTime(0, 5), list.TimeI(1));
            Assert.AreEqual(RTime(0, 10), list.TimeI(2));
            Assert.AreEqual(RTime(0, 15), list.TimeI(3));
            Assert.AreEqual(RTime(0, 20), list.TimeI(4));
            Assert.AreEqual(RTime(0, 25), list.TimeI(5));
            Assert.AreEqual("s0", list.StringI(0));
            Assert.AreEqual("2", list.StringI(1));
            Assert.AreEqual("s1", list.StringI(2));
            Assert.AreEqual("2,1", list.StringI(3));
            Assert.AreEqual("s2", list.StringI(4));
            Assert.AreEqual("2,2", list.StringI(5));
            Assert.IsNull(list.ErrorI(0));
            Assert.IsNull(list.ErrorI(1));
            Assert.AreEqual(1, list.ErrorI(2).Number);
            Assert.AreEqual(1, list.ErrorI(3).Number);
            Assert.AreEqual(2, list.ErrorI(4).Number);
            Assert.AreEqual(2, list.ErrorI(5).Number);
        }
Exemplo n.º 6
0
        public void MomListInt()
        {
            var pool = MakeErrPool();
            var c    = new ContextTest("Context");

            var list = new IntMomList();

            Assert.AreEqual(0, list.Count);
            Assert.AreEqual(DataType.Integer, list.DataType);
            Assert.AreEqual(0, list.CurNum);
            Assert.AreEqual(Static.MaxDate, list.NextTime);

            var err1 = pool.MakeError(1, c);
            var err2 = pool.MakeError(2, c);

            list.AddMom(RTime(0), 10);
            list.AddMom(RTime(0, 10), 11, err1);
            list.AddMom(RTime(0, 20), 12, err2);
            Assert.AreEqual(3, list.Count);
            Assert.AreEqual(RTime(0), list.TimeI(0));
            Assert.AreEqual(RTime(0, 10), list.TimeI(1));
            Assert.AreEqual(RTime(0, 20), list.TimeI(2));
            Assert.AreEqual(10, list.IntegerI(0));
            Assert.AreEqual(11, list.IntegerI(1));
            Assert.AreEqual(12, list.IntegerI(2));
            Assert.AreEqual(10.0, list.RealI(0));
            Assert.AreEqual("11", list.StringI(1));
            Assert.AreEqual(true, list.BooleanI(2));
            Assert.IsNull(list.ErrorI(0));
            Assert.IsNotNull(list.ErrorI(1));
            Assert.AreEqual(1, list.ErrorI(1).Number);
            Assert.AreEqual("Warning", list.ErrorI(1).Text);
            Assert.IsNotNull(list.ErrorI(2));
            Assert.AreEqual(2, list.ErrorI(2).Number);
            Assert.AreEqual("Error", list.ErrorI(2).Text);

            list.CurNum = 1;
            Assert.AreEqual(11, list.Integer);
            Assert.AreEqual(11.0, list.Real);
            Assert.AreEqual(1, list.Error.Number);
            Assert.AreEqual(RTime(0, 10), list.Time);

            var m = list.ToMom(RTime(1), err2);

            Assert.AreEqual(11, m.Integer);
            Assert.AreEqual(11.0, m.Real);
            Assert.AreEqual(1, m.Error.Number);
            Assert.AreEqual(RTime(1), m.Time);

            var me = new EditMom(DataType.Integer);

            me.Time    = RTime(0, 5);
            me.Integer = 20;
            list.AddMom(me);
            me.Time    = RTime(0, 15);
            me.Integer = 21;
            list.AddMom(me, err1);
            me.Time    = RTime(0, 25);
            me.Integer = 22;
            list.AddMom(me, err2);
            Assert.AreEqual(6, list.Count);
            Assert.AreEqual(RTime(0), list.TimeI(0));
            Assert.AreEqual(RTime(0, 5), list.TimeI(1));
            Assert.AreEqual(RTime(0, 10), list.TimeI(2));
            Assert.AreEqual(RTime(0, 15), list.TimeI(3));
            Assert.AreEqual(RTime(0, 20), list.TimeI(4));
            Assert.AreEqual(RTime(0, 25), list.TimeI(5));
            Assert.AreEqual(10, list.IntegerI(0));
            Assert.AreEqual(20, list.IntegerI(1));
            Assert.AreEqual(11, list.IntegerI(2));
            Assert.AreEqual(21, list.IntegerI(3));
            Assert.AreEqual(12, list.IntegerI(4));
            Assert.AreEqual(22, list.IntegerI(5));
            Assert.IsNull(list.ErrorI(0));
            Assert.IsNull(list.ErrorI(1));
            Assert.AreEqual(1, list.ErrorI(2).Number);
            Assert.AreEqual(1, list.ErrorI(3).Number);
            Assert.AreEqual(2, list.ErrorI(4).Number);
            Assert.AreEqual(2, list.ErrorI(5).Number);
        }
Exemplo n.º 7
0
 //Добавить обычную ошибку в заданный EditMom, номер ошибки задается для функции по умолчанию
 public void PutErr(EditMom mom)
 {
     mom.AddError(ErrPool.MakeError(CurFun.ErrorNumber, Contextable));
 }
Exemplo n.º 8
0
 //Установить тип данных скалярного значения
 public void SetScalarDataType(DataType dtype)
 {
     ScalarRes = _scalarResTypes[dtype];
     ScalarRes.MakeDefault();
 }
Exemplo n.º 9
0
 public UniformCloneSignal(ClonerConnect connect, string code, DataType dataType, string contextOut, DicS <string> inf)
     : base(connect, code, dataType, contextOut, inf)
 {
     _prevMom  = new EditMom(dataType);
     _beginMom = new EditMom(dataType);
 }
Exemplo n.º 10
0
 private void LastScalar(EditMom res, MomList mlist, int i, DateTime t)
 {
     res.CopyValueFrom(mlist, i);
     res.Error = mlist.ErrorI(i);
 }
Exemplo n.º 11
0
 private void FirstScalar(EditMom res, MomList mlist, int i, DateTime t)
 {
 }
Exemplo n.º 12
0
        private void AverageScalar(EditMom res, MomList mlist, int i, DateTime t)
        {
            DateTime time = (i >= mlist.Count - 1 || mlist.TimeI(i + 1) > t) ? t : mlist.TimeI(i + 1);

            res.Real += mlist.RealI(i) * (time.Subtract(mlist.TimeI(i)).TotalSeconds) / _pars[0].Real;
        }
Exemplo n.º 13
0
 public UniformSignal(SourceConnect connect, string code, DataType dataType, string contextOut, DicS <string> inf)
     : base(connect, code, dataType, contextOut, inf)
 {
     _beginMom = new EditMom(dataType);
     _endMom   = new EditMom(dataType);
 }