2017-02-10 8 views
1

私は与えられたテキストをデコードするプログラムを持っています。それは必要なように機能します。私はユニットテストを作成し、プロジェクトを参照しました。問題は、結果が予想された結果と等しいかどうかを確認するテストに失敗しますが、プロジェクトを実行すると結果が期待通りになります。ユニットテストは参照プロジェクトからの戻り値を受け取りません

私はそれをデバッグし、参照されるプロジェクトからの文字列の戻り値を受け取っていないことがわかります。それは暗号化されたものを受け取る。 Encodeクラスの要素は公開されていないと言います。

私はEncodeクラスには問題がないので、私はEncodeクラスを含んでいませんでした。それが重要なのはパブリックな静的です。テストは動作しないものです。 誰でも問題を教えてもらえますか? なぜ彼らは公開されていないと言いますか?

+0

機能 –

+0

私はそれが役立つ場合、あまりにも機能を掲載しました。 –

+0

あなたも囲むクラスを投稿することができます、関数はOKと見えます –

答えて

1

キーは大文字で、文字列は小文字です。だから、文

if (key[j] == toEncrypt[i]) 

else if (key[j+1] == toEncrypt[i]) 

真になることはありません、あなたが機能であなたの鍵を.ToLower()すべき

編集:あなたは、あなたのエンコードを示さなかった

public static Tuple<string, int[]> Encode(string key, string toEncrypt) 
{ 
    key = key.ToLower(); 
    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"); 
} 
+0

それは問題でした。テストは合格しました。どうもありがとうございます。 –

関連する問題