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); } }
//Создать пул ошибок protected override void MakeErrPool() { if (ErrPool == null) { ErrPool = new MomErrPool(MakeErrFactory()); } }
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()); }