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); }
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); }
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); }
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); }
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); }
public List <CExtendedCodeUnit> GetEqualRows(CExtendedCodeUnit item) { return(m_UnitsContainer[item]); }
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; }
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); }
/// <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); }