public void SourceFileIDTest()
        {
            long expected            = 34564544664;
            CExtendedCodeUnit target = new CExtendedCodeUnit(new CCodeUnit(new CElementPosition(12, 456), ")"), expected, 3);

            Assert.AreEqual(expected, target.SourceFileID);
        }
        public void EqualsTest()
        {
            CExtendedCodeUnit target = new CExtendedCodeUnit(new CCodeUnit(new CElementPosition(12, 456), ")"), 11, 3);
            CExtendedCodeUnit other  = new CExtendedCodeUnit(new CCodeUnit(new CElementPosition(54, 678), ")"), 22, 44);

            Assert.IsTrue(target.Equals(other));
        }
        public void TextTest3()
        {
            CExtendedCodeUnit target = new CExtendedCodeUnit(new CCodeUnit(new CElementPosition(12, 456), ")"), 11, 3);

            target.Text = string.Empty;
            Assert.AreEqual(string.Empty, target.Text);
        }
        public void CExtendedCodeUnitConstructorTest()
        {
            long FileID              = 11;
            CExtendedCodeUnit other  = new CExtendedCodeUnit(new CCodeUnit(new CElementPosition(12, 456), ")"), FileID, 3);
            CExtendedCodeUnit target = new CExtendedCodeUnit(other);

            Assert.AreEqual(target.SourceFileID, FileID);
        }
Exemple #5
0
        public static CExtendedCodeUnit FromToken(Token token, CTokenizerParms args)
        {
            CElementPosition  pos         = new CElementPosition(token.line, token.col, token.line, token.col + token.val.Length);
            CCodeUnit         simple_unit = new CCodeUnit(pos, token.val);
            CExtendedCodeUnit unit        = new CExtendedCodeUnit(simple_unit, args.GetFileID().SourceFileID);

            return(unit);
        }
Exemple #6
0
        public void AddTest()
        {
            CCodeUnitsCollection target = new CCodeUnitsCollection();
            CExtendedCodeUnit    item   = new CExtendedCodeUnit(new CCodeUnit(new CElementPosition(12, 23), ")"), 1, 1);

            target.Add(item);
            Assert.AreEqual(target.Size(), 1);
            Assert.IsTrue(target[0].EqualsObject(item));
        }
        public void CloneTest()
        {
            CExtendedCodeUnit target = new CExtendedCodeUnit(new CCodeUnit(new CElementPosition(12, 456), ")"), 11, 3);
            object            actual = target.Clone();

            Assert.IsNotNull(actual);
            Assert.IsTrue(target.Equals(actual));
            Assert.IsTrue(target.EqualsObject(actual));
        }
        private void AddAndTestValue(ref CClonedRowsContainer target, CExtendedCodeUnit item, int number)
        {
            Assert.IsNotNull(item);
            target.Add(item);

            List <CExtendedCodeUnit> rows = target.GetEqualRows(item);

            Assert.AreEqual(rows.Count, number);
            Assert.AreEqual(rows[number - 1], item);
        }
        public void IndexEndTest()
        {
            int expected             = 678585678;
            CExtendedCodeUnit target = new CExtendedCodeUnit(new CCodeUnit(new CElementPosition(12, expected), ")"), 11, 3);

            Assert.AreEqual(expected, target.IndexEnd);

            ++expected;
            target.IndexEnd = expected;
            Assert.AreEqual(expected, target.IndexEnd);
        }
        public void TextTest1()
        {
            string            expected = ")))))";
            CExtendedCodeUnit target   = new CExtendedCodeUnit(new CCodeUnit(new CElementPosition(12, 456), expected), 11, 3);

            Assert.AreEqual(expected, target.Text);

            expected    = "(((((";
            target.Text = expected;
            Assert.AreEqual(expected, target.Text);
        }
        public void LineStartTest()
        {
            long expected            = 126785685;
            CExtendedCodeUnit target = new CExtendedCodeUnit(new CCodeUnit(new CElementPosition(expected, 456), ")"), 11, 3);

            Assert.AreEqual(expected, target.LineStart);

            --expected;
            target.LineStart = expected;
            Assert.AreEqual(expected, target.LineStart);
        }
Exemple #12
0
        public void ItemTest()
        {
            CCodeUnitsCollection target = CreateObj();

            Assert.IsTrue(target[1].EqualsObject(new CExtendedCodeUnit(new CCodeUnit(new CElementPosition(13, 33), ")"), 1, 1)));

            CExtendedCodeUnit expected = new CExtendedCodeUnit(new CCodeUnit(new CElementPosition(12, 23), ")"), 1, 1);

            target[1] = expected;
            Assert.IsTrue(target[1].EqualsObject(expected));
        }
        public void AddTest1()
        {
            const int top_limit = 111;

            CClonedRowsContainer target = new CClonedRowsContainer();

            for (long counter = CElementPosition.LINE_NUMBER_LOW_BOUND; counter < top_limit; ++counter)
            {
                CExtendedCodeUnit item = new CExtendedCodeUnit(new CCodeUnit(new CElementPosition(counter, 0), counter.ToString()), FileID, counter);
                AddAndTestValue(ref target, item, 1);
            }

            Assert.AreEqual(target.Count, top_limit - 1);
        }
        public void CompareToTest()
        {
            CExtendedCodeUnit first = new CExtendedCodeUnit(new CCodeUnit(new CElementPosition(12, 456), ")"), CExtendedCodeUnit.DEFAULT_SOURCE_FILE_ID + 1, 3);

            Assert.AreEqual(first.CompareTo(first), 0);

            CExtendedCodeUnit second = new CExtendedCodeUnit(new CCodeUnit(new CElementPosition(12, 456), ")"), CExtendedCodeUnit.DEFAULT_SOURCE_FILE_ID + 1, 3);

            Assert.AreEqual(first.CompareTo(second), 0);

            second = new CExtendedCodeUnit(new CCodeUnit(new CElementPosition(12, 456), ")"), CExtendedCodeUnit.DEFAULT_SOURCE_FILE_ID + 1, 4);
            Assert.AreEqual(first.CompareTo(second), -1);
            Assert.AreEqual(second.CompareTo(first), 1);
        }
        public void AddTest2()
        {
            const int            max_iteration = 111;
            int                  first_row     = int.MaxValue / 2;
            int                  second_row    = int.MaxValue;
            CClonedRowsContainer target        = new CClonedRowsContainer();

            for (long counter = CElementPosition.LINE_NUMBER_LOW_BOUND; counter < max_iteration; counter++)
            {
                CExtendedCodeUnit item1 = new CExtendedCodeUnit(new CCodeUnit(new CElementPosition(counter, 0), first_row.ToString()), FileID, counter);//(counter, first_row.ToString(), FileID, counter);
                AddAndTestValue(ref target, item1, (int)counter);

                CExtendedCodeUnit item2 = new CExtendedCodeUnit(new CCodeUnit(new CElementPosition(counter, 0), second_row.ToString()), FileID, counter);//(counter, second_row.ToString(), FileID, counter);
                AddAndTestValue(ref target, item2, (int)counter);
            }

            Assert.AreEqual(target.Count, 2);
        }
Exemple #16
0
 public void Add(CExtendedCodeUnit item)
 {
     if (item != null)
     {
         if (m_UnitsContainer.ContainsKey(item))
         {
             m_UnitsContainer[item].Add(item);
         }
         else
         {
             List <CExtendedCodeUnit> list = new List <CExtendedCodeUnit>()
             {
                 item
             };
             m_UnitsContainer.Add(item, list);
         }
     }
     else
     {
         throw new ArgumentNullException("item");
     }
 }
        /// <summary>
        /// Выполнить поиск дублирующихся строк программного кода
        /// </summary>
        /// <param name="AllSourceRows"></param>
        public override void FindDuplicatedRows(List <CExtendedCodeUnit> AllSourceRows)
        {
            OnCloneSearchStart();

            m_ClonedRowsMatrix = new CClonedRowsMatrix(AllSourceRows.Count);

            if (!GetCancelOperationFlag())
            {
                for (int first_rows_counter = 0; first_rows_counter < AllSourceRows.Count; first_rows_counter++)
                {
                    if (!GetCancelOperationFlag())
                    {
                        for (int second_rows_counter = first_rows_counter + 1; second_rows_counter < AllSourceRows.Count; second_rows_counter++)
                        {
                            if (!GetCancelOperationFlag())
                            {
                                CExtendedCodeUnit first  = AllSourceRows[first_rows_counter];
                                CExtendedCodeUnit second = AllSourceRows[second_rows_counter];

                                if (first.Text.Equals(second.Text))
                                {
                                }
                            }
                            else
                            {
                                break;
                            }
                        }
                        OnCloneSearchProgress();
                    }
                    else
                    {
                        break;
                    }
                }
            }

            OnCloneSearchEnd();
        }
 public void CExtendedCodeUnitConstructorTest3()
 {
     CExtendedCodeUnit target = new CExtendedCodeUnit(new CCodeUnit(new CElementPosition(12, 456), ")"), CExtendedCodeUnit.DEFAULT_SOURCE_FILE_ID + 1, CElementPosition.LINE_NUMBER_LOW_BOUND - 1);
 }
Exemple #19
0
 public List <CExtendedCodeUnit> GetEqualRows(CExtendedCodeUnit item)
 {
     return(m_UnitsContainer[item]);
 }
Exemple #20
0
 public void backTest2()
 {
     CCodeUnitsCollection target = new CCodeUnitsCollection();
     CExtendedCodeUnit    unit   = target.back();
 }
        public void TextTest2()
        {
            CExtendedCodeUnit target = new CExtendedCodeUnit(new CCodeUnit(new CElementPosition(12, 456), ")"), 11, 3);

            target.Text = null;
        }
Exemple #22
0
 public void frontTest2()
 {
     CCodeUnitsCollection target = new CCodeUnitsCollection();
     CExtendedCodeUnit    unit   = target.front();
 }
        public void CExtendedCodeUnitConstructorTest1()
        {
            CExtendedCodeUnit target = new CExtendedCodeUnit(new CCodeUnit(new CElementPosition(12, 456), ")"), 11, 3);

            Assert.IsNotNull(target);
        }
 public void CExtendedCodeUnitConstructorTest2()
 {
     CExtendedCodeUnit target = new CExtendedCodeUnit(new CCodeUnit(new CElementPosition(12, 456), ")"), CExtendedCodeUnit.DEFAULT_SOURCE_FILE_ID, 3);
 }
Exemple #25
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="PreProcessingOptions"></param>
        /// <param name="OriginalCodeUnitsCollection"></param>
        /// <returns></returns>
        public override CCodeUnitsCollection PreProcessing(CCodePreProcessingOptions PreProcessingOptions, CCodeUnitsCollection OriginalCodeUnitsCollection)
        {
            ClearMembers();
            m_ModifiedCollection.Clear();

            string ScanningSymbol = string.Empty;

            for (int units_counter = 0; units_counter < OriginalCodeUnitsCollection.Size(); ++units_counter)
            {
                CExtendedCodeUnit current_unit = OriginalCodeUnitsCollection[units_counter];
                CExtendedCodeUnit new_codeunit = new CExtendedCodeUnit(current_unit);

                #region // Удаление комментариев из кода

                if (PreProcessingOptions.DeleteComments)
                {
                    m_OnelineCodeFragments.Clear();
                    ClearProcessingCommentSymbol();

                    // Суть алгоритма в следующем: перебираем все строки; в каждой строке перебираем все символы.
                    // Если текущий символ является одним из возможных символов комментариев, то добавляем его в строку.
                    // Если длина этой строки лежит в пределах от минимальной до максимальной из возможных длин комментариев, то проверяем является ли эта строка комментарием.
                    for (int char_counter = 0; char_counter < current_unit.Text.Length; char_counter++)
                    {
                        char current_char = current_unit.Text[char_counter];

                        if (PreProcessingOptions.CommentSymbols.IsCommentChar(current_char))
                        {
                            m_ProcessingCommentSymbol      += current_char;
                            m_IndexOfCommentSymbolBeginning = (m_IndexOfCommentSymbolBeginning == CElementPosition.INDEX_NUMBER_LOW_BOUND - 1) ? char_counter : m_IndexOfCommentSymbolBeginning;

                            if (m_ProcessingCommentSymbol.Length >= PreProcessingOptions.CommentSymbols.MinCommentLength)
                            {
                                if (m_ProcessingCommentSymbol.Length <= PreProcessingOptions.CommentSymbols.MaxCommentLength)
                                {
                                    if (!String.IsNullOrEmpty(ScanningSymbol))
                                    {
                                        if (m_ProcessingCommentSymbol == ScanningSymbol)
                                        {
                                            AddFragment(GetRealLineNumber(units_counter), char_counter);
                                            ScanningSymbol = string.Empty;
                                            ClearProcessingCommentSymbol();
                                        }
                                        else
                                        {
                                            if (m_ProcessingCommentSymbol.Length >= ScanningSymbol.Length)
                                            {
                                                ClearProcessingCommentSymbol();
                                            }
                                        }
                                    }
                                    else
                                    {
                                        // Попробуем  поискать такой символ комментария, при этом нужно узнать парный ли он.
                                        bool IsNotPair = false;

                                        if (PreProcessingOptions.CommentSymbols.IsCommentSymbol(m_ProcessingCommentSymbol, ref IsNotPair))
                                        {
                                            if (IsNotPair)
                                            {
                                                // Если комментарий непарный, то нужно удалить всё до конца строки
                                                CCommentedCodeFragment new_fragment = new CCommentedCodeFragment(new CElementPosition(GetRealLineNumber(units_counter), m_IndexOfCommentSymbolBeginning, GetRealLineNumber(units_counter), current_unit.Text.Length - 1), new CPair <string>(m_ProcessingCommentSymbol, string.Empty));
                                                m_OnelineCodeFragments.Add(new_fragment);
                                                break;
                                            }
                                            else
                                            {
                                                if (PreProcessingOptions.PairCommentDictionary.ContainsKey(m_ProcessingCommentSymbol))
                                                {
                                                    m_PairCommentStack.Push(new CCommentedCodeFragment(new CElementPosition(GetRealLineNumber(units_counter), m_IndexOfCommentSymbolBeginning), new CPair <string>(m_ProcessingCommentSymbol, PreProcessingOptions.PairCommentDictionary[m_ProcessingCommentSymbol])));
                                                    ClearProcessingCommentSymbol();
                                                }
                                                else
                                                {
                                                    AddFragment(GetRealLineNumber(units_counter), char_counter);
                                                    ClearProcessingCommentSymbol();
                                                }
                                            }
                                        }
                                    }
                                }
                                else
                                {
                                    ClearProcessingCommentSymbol();
                                }
                            }
                        }
                        else
                        {
                            ClearProcessingCommentSymbol();
                        }
                    }


                    if (m_OnelineCodeFragments.Count > 0)
                    {
                        new_codeunit.Text = string.Empty;

                        int starting_index = 0;
                        foreach (CCommentedCodeFragment fragment in m_OnelineCodeFragments)
                        {
                            //try
                            //{
                            new_codeunit.Text = new_codeunit.Text + current_unit.Text.Substring(starting_index, fragment.IndexStart - starting_index);
                            //}
                            //catch (ArgumentOutOfRangeException)
                            //{
                            //   throw;
                            //}
                            starting_index = fragment.IndexEnd + 1;
                        }

                        if (starting_index < current_unit.Text.Length)
                        {
                            //try
                            //{
                            new_codeunit.Text = new_codeunit.Text + current_unit.Text.Substring(starting_index);
                            //}
                            //catch (ArgumentOutOfRangeException)
                            //{
                            //   throw;
                            //}
                        }
                    }

                    if (m_PairCommentStack.Count > 0)
                    {
                        CCommentedCodeFragment open_fragment = m_PairCommentStack.Peek();
                        ScanningSymbol = open_fragment.CommentSymbolPair.Second;

                        if (open_fragment.IsBelongOneLine(GetRealLineNumber(units_counter)))
                        {
                            int index = new_codeunit.Text.IndexOf(open_fragment.CommentSymbolPair.First);
                            new_codeunit.Text = new_codeunit.Text.Substring(0, index);
                        }
                        else
                        {
                            new_codeunit.Text = string.Empty;
                        }
                    }
                }

                #endregion

                if (PreProcessingOptions.DeleteWhiteSpaces)
                {
                    new_codeunit.Text = CStringConverter.RemoveMultipleWhiteSpaces(new_codeunit.Text.Trim());
                }

                if (!PreProcessingOptions.DeleteEmptyLines || !String.IsNullOrEmpty(new_codeunit.Text))
                {
                    m_ModifiedCollection.Add(new_codeunit);
                }
            }
            return(m_ModifiedCollection);
        }