Мне нужно кодировать/декодировать строку алгоритмом «Gaderypoluki». Все работает, если я сделаю это в моем собственном решении, код:Единичный тест алгоритма «Gaderypoluki»
using System;
using System.Linq;
using System.Text;
namespace algorithm
{
public class Gaderypoluki
{
public static Tuple<string, int[]> Encode(string key, string toEncrypt)
{
int[] iterations = new int[] { 0, 0, 0, 0, 0, 0 };
if (key.Length % 2 == 0)
{
if (key.Length == key.Distinct().Count())
{
var encodedText = new StringBuilder(toEncrypt);
for (int i = 0; i < toEncrypt.Length ; i++)
{
for (int j = 0; j < key.Length; j += 2)
{
if (key[j] == toEncrypt[i])
{
encodedText[i] = key[j + 1];
iterations[j/2] += 1;
}
else if (key[j+1] == toEncrypt[i])
{
encodedText[i] = key[j];
iterations[j/2] += 1;
}
}
}
return Tuple.Create(encodedText.ToString(), iterations);
}
else throw new ArgumentException("Key cannot contain the same chars");
}
else throw new ArgumentException("You have to put a key which is dividable by 2");
}
static void Main(string[] args)
{
var key = "gaderypoluki";
var encodedText = "gug mg iptg";
try
{
Console.WriteLine(Encode(key, encodedText).Item1);
Console.ReadLine();
}
catch (ArgumentException ex)
{
throw ex;
}
}
}
}
В этом случае решение мейды все хорошо. Результат будет «ala ma kota», так что это хороший результат. Но проблема начинается, когда я хочу, чтобы проверить его с помощью функции автоматического тестирования, таких как:
using Microsoft.VisualStudio.TestTools.UnitTesting;
using System;
namespace algorithm
{
[TestClass]
public class GaderypolukiTests
{
[TestMethod]
public void TestMethod1()
{
var key = "GADERYPOLUKI";
var encodedText = "gug mg iptg";
var expectedText = "ala ma kota";
Tuple<string, int[]> actual = Gaderypoluki.Encode(key, encodedText);
Assert.AreEqual(expectedText.ToLower(), actual.Item1.ToLower());
}
}
}
Теперь, если я начну тест, метод Encode()
не делает совершенно ничего. При отладке, даже если if (key[j] == toEncrypt[i])
равно, компилятор говорит, что это не так и продолжается. Я действительно не знаю, почему, много искал эту проблему, но эта проблема еще не решена (или я мог бы искать лучше). Спасибо за помощь!
Хотя эта ссылка может ответить на этот вопрос, то лучше включить основные части ответа здесь и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. - [Из обзора] (/ review/low-quality-posts/14406240) –
Спасибо за эти подсказки;) В следующий раз я буду придерживаться этих правил – DawidK