Exemple #1
0
        protected BaseFunctions()
        {
            var factory = new MomErrFactory(ErrSourceCode, MomErrType.Calc);

            factory.AddGoodDescr(0);
            ErrPool = new MomErrPool(factory);

            using (var rec = new AdoReader(ItStatic.InfoTaskDir() + @"General\General.accdb",
                                           "SELECT FunctionsOverloads.*, Functions.Name, Functions.Synonym, Functions.Code, Functions.CalcType FROM Functions INNER JOIN FunctionsOverloads ON Functions.Id = FunctionsOverloads.FunctionId " +
                                           "WHERE " + FunsWhereCondition + " ORDER BY FunctionsOverloads.FunctionId, FunctionsOverloads.RunNumber"))
                while (rec.Read())
                {
                    string name    = rec.GetString("Name");
                    string synonym = rec.GetString("Synonym");
                    if (!synonym.IsEmpty())
                    {
                        name += " (" + synonym + ")";
                    }
                    string code = (rec.GetString("Code") ?? (synonym ?? name)) + "_";
                    for (int i = 1; i <= 9 && rec.GetString("Operand" + i) != null; i++)
                    {
                        code += rec.GetString("Operand" + i).ToDataType().ToLetter();
                    }
                    for (int i = 1; i <= 2 && rec.GetString("More" + i) != null; i++)
                    {
                        code += rec.GetString("More" + i).ToDataType().ToLetter();
                    }
                    var errNum = rec.GetInt("IdOverload") * 10;
                    var ftype  = rec.GetString("CalcType");
                    Funs.Add(code, CreateFun(code, ftype, errNum));
                    factory.AddDescr(errNum, "Недопустимые параметры функции " + name);
                }
        }
Exemple #2
0
 //Создать пул ошибок
 protected override void MakeErrPool()
 {
     if (ErrPool == null)
     {
         ErrPool = new MomErrPool(MakeErrFactory());
     }
 }
Exemple #3
0
        public void Pool()
        {
            var ef = new MomErrFactory("ErrSource", MomErrType.Source);

            ef.AddGoodDescr(0);
            ef.AddDescr(1, "Ошибка1", ErrQuality.Warning);
            ef.AddDescr(2, "Ошибка2");
            ef.AddDescr(3, "Ошибка3");

            var c1   = new ContextTest("Context1");
            var c2   = new ContextTest("Context2");
            var pool = new MomErrPool(ef);

            Assert.AreEqual(0, pool.UsedErrorDescrs.Count());
            var em = pool.MakeError(1, c1);

            Assert.AreEqual("Context1", em.Address);
            Assert.AreEqual(1, em.Number);
            Assert.AreEqual(ErrQuality.Warning, em.Quality);
            Assert.AreEqual("Ошибка1", em.Text);
            em = pool.MakeError(1, c2);
            Assert.AreEqual("Context2", em.Address);
            Assert.AreEqual(1, em.Number);
            Assert.AreEqual(ErrQuality.Warning, em.Quality);
            Assert.AreEqual("Ошибка1", em.Text);
            em = pool.MakeError(1, c1);
            Assert.AreEqual("Context1", em.Address);
            Assert.AreEqual(1, em.Number);
            Assert.AreEqual(ErrQuality.Warning, em.Quality);
            Assert.AreEqual("Ошибка1", em.Text);
            Assert.IsNull(pool.MakeError(0, c2));
            em = pool.MakeError(2, c1);
            Assert.AreEqual("Context1", em.Address);
            Assert.AreEqual(2, em.Number);
            Assert.AreEqual(ErrQuality.Error, em.Quality);
            Assert.AreEqual("Ошибка2", em.Text);
            Assert.AreEqual(2, pool.UsedErrorDescrs.Count());
            pool.ClearErrors();
            em = pool.MakeError(2, c1);
            Assert.AreEqual("Context1", em.Address);
            Assert.AreEqual(2, em.Number);
            Assert.AreEqual(ErrQuality.Error, em.Quality);
            Assert.AreEqual("Ошибка2", em.Text);
            em = pool.MakeError(3, c2);
            Assert.AreEqual("Context2", em.Address);
            Assert.AreEqual(3, em.Number);
            Assert.AreEqual(ErrQuality.Error, em.Quality);
            Assert.AreEqual("Ошибка3", em.Text);
            Assert.AreEqual(2, pool.UsedErrorDescrs.Count());
        }