private string RunAlgorithmWithShift(string text, int shift) { var sb = new StringBuilder(); foreach (var item in Split(text)) { var firstLetterIndexes = _indexHelper.GetIndexes(_key, item.FirstLetter); var secondLetterIndexes = _indexHelper.GetIndexes(_key, item.LastLetter); if (firstLetterIndexes.RowIndex == secondLetterIndexes.RowIndex) { firstLetterIndexes.ColumnIndex = ShiftIndex(firstLetterIndexes.ColumnIndex, shift, true); secondLetterIndexes.ColumnIndex = ShiftIndex(secondLetterIndexes.ColumnIndex, shift, true); } else if (firstLetterIndexes.ColumnIndex == secondLetterIndexes.ColumnIndex) { firstLetterIndexes.RowIndex = ShiftIndex(firstLetterIndexes.RowIndex, shift, false); secondLetterIndexes.RowIndex = ShiftIndex(secondLetterIndexes.RowIndex, shift, false); } else { SwapRows(firstLetterIndexes, secondLetterIndexes); } sb.Append(GetCharePareByIndex(firstLetterIndexes, secondLetterIndexes).ToString()); } return(sb.ToString()); }
public void GetRecordIndexes_MixedRecords_Works() { // Arrange, const string text = "[ .MANUAL_LIBRETA Manual_Libreta_TU01A.msb .VISORES [ .XYZ ( 241.0 - 248.0 0 ) .ESC EXTERIOR .CAMARA 0 ] " + ".MUSICA [ .MUSICAS ( ( Battle.WAV EXTERIOR ) ( Shadows.WAV INTERIOR ) ) .MUSICA_POR_DEFECTO EXTERIOR ] .BRIEFING [ .INICIAL TU01A.BRI ]"; var tokens = text.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); // Act, var result = IndexHelper.GetIndexes(tokens, 19); // Assert, Assert.AreEqual(19, result.nameIndex); Assert.AreEqual(20, result.startIndex); Assert.AreEqual(29, result.endIndex); }