예제 #1
0
        public static Processor RenameProcessor(Processor processor, string newTag)
        {
            if (processor == null)
            {
                throw new ArgumentNullException(nameof(processor));
            }
            if (processor.Tag == newTag)
            {
                return(processor);
            }
            if (string.IsNullOrWhiteSpace(newTag))
            {
                throw new ArgumentException($"\"{nameof(newTag)}\" не может быть пустым или содержать только пробел.", nameof(newTag));
            }

            SignValue[,] sv = new SignValue[processor.Width, processor.Height];
            for (int i = 0; i < processor.Width; i++)
            {
                for (int j = 0; j < processor.Height; j++)
                {
                    sv[i, j] = processor[i, j];
                }
            }
            return(new Processor(sv, newTag));
        }
예제 #2
0
 /// <summary>
 ///     Получает заданную часть указанной карты.
 ///     Часть эта по размерам соответствует полям <see cref="MapWidth" /> и <see cref="MapHeight" />.
 /// </summary>
 /// <param name="processor">Карта, часть которой необходимо получить.</param>
 /// <param name="x">Координата X необходимой части карты.</param>
 /// <param name="y">Координата Y необходимой части карты.</param>
 /// <returns>Возвращает указанную часть карты в виде массива <see cref="SignValue" />.</returns>
 protected SignValue[,] GetMapPiece(Processor processor, int x, int y)
 {
     SignValue[,] sv = new SignValue[MapWidth, MapHeight];
     for (int cy = y, y1 = 0, my = y + MapHeight; cy < my; cy++, y1++)
     {
         for (int cx = x, x1 = 0, mx = x + MapWidth; cx < mx; cx++, x1++)
         {
             sv[x1, y1] = processor[cx, cy];
         }
     }
     return(sv);
 }
예제 #3
0
        /// <summary>
        ///     Определяет, содержит ли текущий экземпляр <see cref="DynamicReflex" /> карту с подобным содержимым или нет.
        ///     В случае нахождения карты с совпадающим содержимым, метод возвращает значение <see langword="null" />, в противном
        ///     случае -
        ///     массив данных, сведения о котором указаны в параметре <see cref="Registered" />.
        /// </summary>
        /// <param name="processor">Карта, из которой необходимо получить целевую карту.</param>
        /// <param name="registered">Сведения о получаемой карте.</param>
        /// <returns>
        ///     В случае нахождения карты с совпадающим содержимым, метод возвращает значение <see langword="null" />, в противном
        ///     случае -
        ///     массив данных, сведения о котором указаны в параметре <see cref="Registered" />.
        /// </returns>
        static Processor GetProcessorFromField(Processor processor, Registered registered)
        {
            SignValue[,] values = new SignValue[registered.Region.Width, registered.Region.Height];
            for (int y = registered.Y, y1 = 0; y < registered.Bottom; y++, y1++)
            {
                for (int x = registered.X, x1 = 0; x < registered.Right; x++, x1++)
                {
                    values[x1, y1] = processor[x, y];
                }
            }

            return(new Processor(values, registered.Register.SelectedProcessor.Tag));
        }
예제 #4
0
            /// <summary>
            /// Находит наиболее подходящие друг к другу изображения, сравнивая знаки, содержащиеся в списках, и вычисляя, какое изображение соответствует более всего,
            /// т.е. имеет наименьшую разницу в знаках и встречающееся более всего раз. Его номер возвращается. Количество раз, которое оно встретилось,
            /// возвращается в переменную "count".
            /// </summary>
            /// <param name="lst1">Знаки первого искомого изображения.</param>
            /// <param name="lst2">Знаки второго искомого изображения.</param>
            /// <param name="lst3">Знаки третьего искомого изображения.</param>
            /// <param name="count">Степень соответствия. Чем больше, тем лучше.</param>
            /// <returns>Возвращает номер наиболее подходящего изображения.</returns>
            public byte GetBySign(List <SignValue> lst1, List <SignValue> lst2, List <SignValue> lst3, out int count)
            {
                count = 0;
                if (Img1 == null && Img2 == null && Img3 == null)
                {
                    return(0);
                }
                int i1 = 0, i2 = 0, i3 = 0;

                for (int k = 0; k < Map.AllMax; k++)
                {
                    SignValue sv1 = SignValue.MaxValue, sv2 = SignValue.MaxValue, sv3 = SignValue.MaxValue;
                    if (Img1 != null)
                    {
                        sv1 = Img1[k] - lst1[k];
                    }
                    if (Img2 != null)
                    {
                        sv2 = Img2[k] - lst2[k];
                    }
                    if (Img3 != null)
                    {
                        sv3 = Img3[k] - lst3[3];
                    }
                    if (sv1 < sv2 && sv1 < sv3)
                    {
                        i1++;
                        continue;
                    }
                    if (sv2 < sv1 && sv2 < sv3)
                    {
                        i2++;
                        continue;
                    }
                    i3++;
                }
                if (i1 > i2 && i1 > i3)
                {
                    count = i1;
                    return(1);
                }
                if (i2 > i1 && i2 > i3)
                {
                    count = i2;
                    return(2);
                }
                count = i3;
                return(3);
            }
예제 #5
0
        /// <summary>
        /// Сжимает указанный список знаков по две позиции за каждый раз.
        /// </summary>
        /// <param name="target">Преобразуемый список.</param>
        /// <param name="k">Стартовая позиция для преобразования.</param>
        /// <param name="sv">Знак для преобразования.</param>
        /// <returns>Возвращает знак после преобразования или null в случае окончания операции.</returns>
        static SignValue?Parse(List <SignValue> target, ref int k, SignValue sv)
        {
            Map map = new Map();
            int mx  = (target.Count % 2 != 0) ? target.Count - 1 : target.Count;

            for (int x = 0; x < 2 && k < mx; x++, k++)
            {
                map.Add(new MapObject {
                    Sign = target[k]
                });
            }
            Processor ce = new Processor(map);

            return(ce.Run(sv));
        }
예제 #6
0
        /// <summary>
        /// Преобразует изображение в список знаков, размера, меньшего или равного Map.AllMax, чтобы уместить их на карту.
        /// При этом, каждый знак, добавляемый в список, проходит прогон по определённому знаку.
        /// Количество знаков для прогонов зависит от размера изображения.
        /// </summary>
        /// <param name="target">Преобразуемое изображение.</param>
        /// <returns>Возвращает список знаков, размера, меньшего или равного Map.AllMax.</returns>
        static List <SignValue> GetSign(Bitmap target)
        {
            List <SignValue> lst = BitmapToList(target);
            int plus = SignValue.MaxValue.Value / Map.AllMax; SignValue sv = SignValue.MinValue;

            while (lst.Count > Map.AllMax)
            {
                List <SignValue> nlst = new List <SignValue>();
                int k = 0; SignValue?val = null;
                while ((val = Parse(lst, ref k, sv)) != null)
                {
                    nlst.Add(val.Value);
                }
                sv  = new SignValue(sv + plus);
                lst = nlst;
            }
            return(lst);
        }
예제 #7
0
        /// <summary>
        ///     Объединяет указанные карты в единую карту в соответствии с расположением карт в указанном массиве.
        ///     При этом важно, чтобы все указанные карты были одного размера.
        ///     Карты со значением <see langword="null" /> должны отсутствовать.
        /// </summary>
        /// <param name="processors">Карты, которые необходимо объединить.</param>
        /// <returns>Возвращает итоговую карту в виде массива <see cref="SignValue" />.</returns>
        protected SignValue[,] MapCreator(Processor[,] processors)
        {
            int mx = ProcessorWidth, my = ProcessorHeight;

            SignValue[,] sv = new SignValue[mx, my];
            for (int y = 0, pry = 0; y < my; y += MapHeight, pry++)
            {
                for (int x = 0, prx = 0; x < mx; x += MapWidth, prx++)
                {
                    Processor p = processors[prx, pry];
                    for (int cy = y, pryy = 0, py = y + MapHeight; cy < py; cy++, pryy++)
                    {
                        for (int cx = x, prxx = 0, px = x + MapWidth; cx < px; cx++, prxx++)
                        {
                            sv[cx, cy] = p[prxx, pryy];
                        }
                    }
                }
            }
            return(sv);
        }
예제 #8
0
 /// <summary>
 /// Вызывается при отладочной остановке.
 /// </summary>
 /// <param name="objNew">Порождаемый объект.</param>
 /// <param name="objStart">Стартовый объект.</param>
 /// <param name="objFind">Найденный объект.</param>
 /// <param name="count">Количество пройденных объектов.</param>
 /// <returns>Возвращает определённое пользователем состояние отладчика.</returns>
 bool DebugObject(SignValue objNew, SignValue objStart, MapObject objFind, int count)
 {
     try
     {
         Invoke((Action)(() =>
         {
             try
             {
                 _currentPainter.DrawDebugNew = objNew;
                 _currentPainter.DrawDebugStart = objStart;
                 _currentPainter.DrawDebugFind = objFind;
                 _btnSave.Enabled = false;
                 _btnLoad.Enabled = false;
                 _lblDiscountTotal.Text = string.Format(CultureInfo.CurrentCulture, "{0}/{1}", count, _currentMap.Count);
                 _txtSign.Text = objStart.ToString();
                 _currentPainter.Paint();
             }
             catch (Exception ex)
             {
                 MessageBox.Show(this, ex.Message);
             }
         }));
         _currentDebuggerWait = false;
         while (!_currentDebuggerWait)
         {
             Thread.Sleep(50);
         }
         _currentDebuggerWait = false;
         return(_currentDebuggerState);
     }
     catch (Exception ex)
     {
         _currentDebuggerState = false;
         _currentDebuggerWait  = false;
         MessageBox.Show(this, ex.Message);
         return(false);
     }
 }
예제 #9
0
파일: Main.cs 프로젝트: Centronics/Imitator
 /// <summary>
 /// Осуществляет вставку объекта карты из буфера обмена.
 /// </summary>
 void MapObjectPaste()
 {
     try
     {
         SignValue curSign = new SignValue(Convert.ToInt32(Clipboard.GetText()));
         MapObject obj     = _currentMap.GetObjectByXY(_currentPainter.ObjectScrX, _currentPainter.ObjectScrY);
         if (obj == null)
         {
             _currentMap.Add(new MapObject {
                 Sign = curSign, ObjectX = _currentPainter.ObjectScrX, ObjectY = _currentPainter.ObjectScrY
             });
             return;
         }
         obj.Sign = curSign;
     }
     catch (Exception ex)
     {
         MessageBox.Show(this, ex.Message);
     }
     finally
     {
         MapCount();
     }
 }
        public void PHTest()
        {
            ProcessorHandler ph = new ProcessorHandler();

            Assert.AreEqual(string.Empty, ph.ToString());
            Assert.AreEqual(0, ph.Processors.ToArray().Length);

            ph.Add(new Processor(new[] { new SignValue(2) }, "A"));

            List <Processor> procs = CheckProcessorHandler1(ph);

            procs.Add(new Processor(new[] { new SignValue(2000) }, "w"));
            CheckProcessorHandler1(ph);

            ph.Add(new Processor(new[] { new SignValue(3) }, "b"));

            procs = ph.Processors.ToList();
            Assert.AreNotEqual(null, procs);
            CheckSize(procs);
            Assert.AreEqual(2, procs.Count);
            Assert.AreEqual(new SignValue(2), procs[0][0, 0]);
            Assert.AreEqual("A", procs[0].Tag);
            Assert.AreEqual(new SignValue(3), procs[1][0, 0]);
            Assert.AreEqual("b", procs[1].Tag);
            Assert.AreEqual("AB", ph.ToString());

            ph.Add(new Processor(new[] { new SignValue(4) }, "C"));

            CheckProcessorHandler2(ph);

            ph.Add(new Processor(new[] { new SignValue(2) }, "A"));

            CheckProcessorHandler2(ph);

            ph.Add(new Processor(new[] { new SignValue(3) }, "b"));

            CheckProcessorHandler2(ph);

            ph.Add(new Processor(new[] { new SignValue(4) }, "C"));

            CheckProcessorHandler2(ph);

            ph.Add(new Processor(new[] { new SignValue(2) }, "A1"));

            CheckProcessorHandler2(ph);

            ph.Add(new Processor(new[] { new SignValue(3) }, "b1"));

            CheckProcessorHandler2(ph);

            ph.Add(new Processor(new[] { new SignValue(4) }, "C1"));

            CheckProcessorHandler2(ph);

            ph.Add(new Processor(new[] { new SignValue(2) }, "a1"));

            CheckProcessorHandler2(ph);

            ph.Add(new Processor(new[] { new SignValue(3) }, "B1"));

            CheckProcessorHandler2(ph);

            ph.Add(new Processor(new[] { new SignValue(4) }, "c1"));

            CheckProcessorHandler2(ph);

            ph.Add(new Processor(new[] { new SignValue(13) }, "b1"));

            procs = ph.Processors.ToList();
            Assert.AreNotEqual(null, procs);
            CheckSize(procs);
            Assert.AreEqual(4, procs.Count);
            Assert.AreEqual(new SignValue(2), procs[0][0, 0]);
            Assert.AreEqual("A", procs[0].Tag);
            Assert.AreEqual(new SignValue(3), procs[1][0, 0]);
            Assert.AreEqual("b", procs[1].Tag);
            Assert.AreEqual(new SignValue(4), procs[2][0, 0]);
            Assert.AreEqual("C", procs[2].Tag);
            Assert.AreEqual(new SignValue(13), procs[3][0, 0]);
            Assert.AreEqual("b1", procs[3].Tag);
            Assert.AreEqual("ABCB", ph.ToString());

            ph.Add(new Processor(new[] { new SignValue(14) }, "B1"));

            procs = ph.Processors.ToList();
            Assert.AreNotEqual(null, procs);
            CheckSize(procs);
            Assert.AreEqual(5, procs.Count);
            Assert.AreEqual(new SignValue(2), procs[0][0, 0]);
            Assert.AreEqual("A", procs[0].Tag);
            Assert.AreEqual(new SignValue(3), procs[1][0, 0]);
            Assert.AreEqual("b", procs[1].Tag);
            Assert.AreEqual(new SignValue(4), procs[2][0, 0]);
            Assert.AreEqual("C", procs[2].Tag);
            Assert.AreEqual(new SignValue(13), procs[3][0, 0]);
            Assert.AreEqual("b1", procs[3].Tag);
            Assert.AreEqual(new SignValue(14), procs[4][0, 0]);
            Assert.AreEqual("B10", procs[4].Tag);
            Assert.AreEqual("ABCBB", ph.ToString());

            ph.Add(new Processor(new[] { new SignValue(15) }, "B"));

            procs = ph.Processors.ToList();
            Assert.AreNotEqual(null, procs);
            CheckSize(procs);
            Assert.AreEqual(6, procs.Count);
            Assert.AreEqual(new SignValue(2), procs[0][0, 0]);
            Assert.AreEqual("A", procs[0].Tag);
            Assert.AreEqual(new SignValue(3), procs[1][0, 0]);
            Assert.AreEqual("b", procs[1].Tag);
            Assert.AreEqual(new SignValue(4), procs[2][0, 0]);
            Assert.AreEqual("C", procs[2].Tag);
            Assert.AreEqual(new SignValue(13), procs[3][0, 0]);
            Assert.AreEqual("b1", procs[3].Tag);
            Assert.AreEqual(new SignValue(14), procs[4][0, 0]);
            Assert.AreEqual("B10", procs[4].Tag);
            Assert.AreEqual(new SignValue(15), procs[5][0, 0]);
            Assert.AreEqual("B0", procs[5].Tag);
            Assert.AreEqual("ABCBBB", ph.ToString());

            ph.Add(new Processor(new[] { new SignValue(16) }, "b"));

            procs = ph.Processors.ToList();
            Assert.AreNotEqual(null, procs);
            CheckSize(procs);
            Assert.AreEqual(7, procs.Count);
            Assert.AreEqual(new SignValue(2), procs[0][0, 0]);
            Assert.AreEqual("A", procs[0].Tag);
            Assert.AreEqual(new SignValue(3), procs[1][0, 0]);
            Assert.AreEqual("b", procs[1].Tag);
            Assert.AreEqual(new SignValue(4), procs[2][0, 0]);
            Assert.AreEqual("C", procs[2].Tag);
            Assert.AreEqual(new SignValue(13), procs[3][0, 0]);
            Assert.AreEqual("b1", procs[3].Tag);
            Assert.AreEqual(new SignValue(14), procs[4][0, 0]);
            Assert.AreEqual("B10", procs[4].Tag);
            Assert.AreEqual(new SignValue(15), procs[5][0, 0]);
            Assert.AreEqual("B0", procs[5].Tag);
            Assert.AreEqual(new SignValue(16), procs[6][0, 0]);
            Assert.AreEqual("b00", procs[6].Tag);
            Assert.AreEqual("ABCBBBB", ph.ToString());

            bool bex = false;

            try
            {
                SignValue[,] prc = new SignValue[2, 1];
                prc[0, 0]        = new SignValue(16);
                prc[1, 0]        = new SignValue(100);
                ph.Add(new Processor(prc, "b"));
            }
            catch (Exception ex)
            {
                Assert.AreEqual(typeof(ArgumentException), ex.GetType());
                Assert.AreEqual("Добавляемая карта отличается по размерам от первой карты, добавленной в коллекцию. Требуется: 1, 1. Фактически: 2, 1.", ex.Message);
                bex = true;
            }

            Assert.AreEqual(true, bex);

            bex = false;
            try
            {
                SignValue[,] prc = new SignValue[1, 2];
                prc[0, 0]        = new SignValue(16);
                prc[0, 1]        = new SignValue(100);
                ph.Add(new Processor(prc, "b"));
            }
            catch (Exception ex)
            {
                Assert.AreEqual(typeof(ArgumentException), ex.GetType());
                Assert.AreEqual("Добавляемая карта отличается по размерам от первой карты, добавленной в коллекцию. Требуется: 1, 1. Фактически: 1, 2.", ex.Message);
                bex = true;
            }

            Assert.AreEqual(true, bex);

            ph.Add(new Processor(new[] { new SignValue(3) }, "r"));

            procs = ph.Processors.ToList();
            Assert.AreNotEqual(null, procs);
            CheckSize(procs);
            Assert.AreEqual(8, procs.Count);
            Assert.AreEqual(new SignValue(2), procs[0][0, 0]);
            Assert.AreEqual("A", procs[0].Tag);
            Assert.AreEqual(new SignValue(3), procs[1][0, 0]);
            Assert.AreEqual("b", procs[1].Tag);
            Assert.AreEqual(new SignValue(4), procs[2][0, 0]);
            Assert.AreEqual("C", procs[2].Tag);
            Assert.AreEqual(new SignValue(13), procs[3][0, 0]);
            Assert.AreEqual("b1", procs[3].Tag);
            Assert.AreEqual(new SignValue(14), procs[4][0, 0]);
            Assert.AreEqual("B10", procs[4].Tag);
            Assert.AreEqual(new SignValue(15), procs[5][0, 0]);
            Assert.AreEqual("B0", procs[5].Tag);
            Assert.AreEqual(new SignValue(16), procs[6][0, 0]);
            Assert.AreEqual("b00", procs[6].Tag);
            Assert.AreEqual(new SignValue(3), procs[7][0, 0]);
            Assert.AreEqual("r", procs[7].Tag);
            Assert.AreEqual("ABCBBBBR", ph.ToString());

            ph.Add(new Processor(new[] { new SignValue(2) }, "v1"));

            procs = ph.Processors.ToList();
            Assert.AreNotEqual(null, procs);
            CheckSize(procs);
            Assert.AreEqual(9, procs.Count);
            Assert.AreEqual(new SignValue(2), procs[0][0, 0]);
            Assert.AreEqual("A", procs[0].Tag);
            Assert.AreEqual(new SignValue(3), procs[1][0, 0]);
            Assert.AreEqual("b", procs[1].Tag);
            Assert.AreEqual(new SignValue(4), procs[2][0, 0]);
            Assert.AreEqual("C", procs[2].Tag);
            Assert.AreEqual(new SignValue(13), procs[3][0, 0]);
            Assert.AreEqual("b1", procs[3].Tag);
            Assert.AreEqual(new SignValue(14), procs[4][0, 0]);
            Assert.AreEqual("B10", procs[4].Tag);
            Assert.AreEqual(new SignValue(15), procs[5][0, 0]);
            Assert.AreEqual("B0", procs[5].Tag);
            Assert.AreEqual(new SignValue(16), procs[6][0, 0]);
            Assert.AreEqual("b00", procs[6].Tag);
            Assert.AreEqual(new SignValue(3), procs[7][0, 0]);
            Assert.AreEqual("r", procs[7].Tag);
            Assert.AreEqual(new SignValue(2), procs[8][0, 0]);
            Assert.AreEqual("v1", procs[8].Tag);
            Assert.AreEqual("ABCBBBBRV", ph.ToString());

            ph.Add(new Processor(new[] { new SignValue(8418982) }, "q"));

            procs = ph.Processors.ToList();
            Assert.AreNotEqual(null, procs);
            CheckSize(procs);
            Assert.AreEqual(10, procs.Count);
            Assert.AreEqual(new SignValue(2), procs[0][0, 0]);
            Assert.AreEqual("A", procs[0].Tag);
            Assert.AreEqual(new SignValue(3), procs[1][0, 0]);
            Assert.AreEqual("b", procs[1].Tag);
            Assert.AreEqual(new SignValue(4), procs[2][0, 0]);
            Assert.AreEqual("C", procs[2].Tag);
            Assert.AreEqual(new SignValue(13), procs[3][0, 0]);
            Assert.AreEqual("b1", procs[3].Tag);
            Assert.AreEqual(new SignValue(14), procs[4][0, 0]);
            Assert.AreEqual("B10", procs[4].Tag);
            Assert.AreEqual(new SignValue(15), procs[5][0, 0]);
            Assert.AreEqual("B0", procs[5].Tag);
            Assert.AreEqual(new SignValue(16), procs[6][0, 0]);
            Assert.AreEqual("b00", procs[6].Tag);
            Assert.AreEqual(new SignValue(3), procs[7][0, 0]);
            Assert.AreEqual("r", procs[7].Tag);
            Assert.AreEqual(new SignValue(2), procs[8][0, 0]);
            Assert.AreEqual("v1", procs[8].Tag);
            Assert.AreEqual(new SignValue(8418982), procs[9][0, 0]);
            Assert.AreEqual("q", procs[9].Tag);
            Assert.AreEqual("ABCBBBBRVQ", ph.ToString());

            ph.Add(new Processor(new[] { new SignValue(12451893) }, "q"));

            procs = ph.Processors.ToList();
            Assert.AreNotEqual(null, procs);
            CheckSize(procs);
            Assert.AreEqual(11, procs.Count);
            Assert.AreEqual(new SignValue(2), procs[0][0, 0]);
            Assert.AreEqual("A", procs[0].Tag);
            Assert.AreEqual(new SignValue(3), procs[1][0, 0]);
            Assert.AreEqual("b", procs[1].Tag);
            Assert.AreEqual(new SignValue(4), procs[2][0, 0]);
            Assert.AreEqual("C", procs[2].Tag);
            Assert.AreEqual(new SignValue(13), procs[3][0, 0]);
            Assert.AreEqual("b1", procs[3].Tag);
            Assert.AreEqual(new SignValue(14), procs[4][0, 0]);
            Assert.AreEqual("B10", procs[4].Tag);
            Assert.AreEqual(new SignValue(15), procs[5][0, 0]);
            Assert.AreEqual("B0", procs[5].Tag);
            Assert.AreEqual(new SignValue(16), procs[6][0, 0]);
            Assert.AreEqual("b00", procs[6].Tag);
            Assert.AreEqual(new SignValue(3), procs[7][0, 0]);
            Assert.AreEqual("r", procs[7].Tag);
            Assert.AreEqual(new SignValue(2), procs[8][0, 0]);
            Assert.AreEqual("v1", procs[8].Tag);
            Assert.AreEqual(new SignValue(8418982), procs[9][0, 0]);
            Assert.AreEqual("q", procs[9].Tag);
            Assert.AreEqual(new SignValue(12451893), procs[10][0, 0]);
            Assert.AreEqual("q0", procs[10].Tag);
            Assert.AreEqual("ABCBBBBRVQQ", ph.ToString());

            Processor renameProcessor2 = ProcessorHandler.ChangeProcessorTag(new Processor(new[] { SignValue.MaxValue }, "mmM"), "zZz");

            Assert.AreNotEqual(null, renameProcessor2);
            Assert.AreEqual("zZz", renameProcessor2.Tag);
            Assert.AreEqual(SignValue.MaxValue, renameProcessor2[0, 0]);
            Assert.AreEqual(1, renameProcessor2.Width);
            Assert.AreEqual(1, renameProcessor2.Height);

            Processor renameProcessor3 = ProcessorHandler.ChangeProcessorTag(new Processor(new[] { SignValue.MaxValue }, "mmM"), "mmM");

            Assert.AreNotEqual(null, renameProcessor3);
            Assert.AreEqual("mmM", renameProcessor3.Tag);
            Assert.AreEqual(SignValue.MaxValue, renameProcessor3[0, 0]);
            Assert.AreEqual(1, renameProcessor3.Width);
            Assert.AreEqual(1, renameProcessor3.Height);
        }