import org.junit.Test;
import org.junit.Ignore;

import java.util.Arrays;
import java.util.List;

import static org.junit.Assert.assertEquals;

public class CryptoSquareTest {


    @Test
    public void strangeCharactersAreStrippedDuringNormalization() {
        Crypto crypto = new Crypto("s#$%^&plunk");
        String expectedOutput = "splunk";

        assertEquals(expectedOutput, crypto.getNormalizedPlaintext());
    }

    @Ignore
    @Test
    public void lettersAreLowerCasedDuringNormalization() {
        Crypto crypto = new Crypto("WHOA HEY!");
        String expectedOutput = "whoahey";

        assertEquals(expectedOutput, crypto.getNormalizedPlaintext());
    }

    @Ignore
    @Test
    public void numbersAreKeptDuringNormalization() {
        Crypto crypto = new Crypto("1, 2, 3, GO!");
        String expectedOutput = "123go";

        assertEquals(expectedOutput, crypto.getNormalizedPlaintext());
    }

    @Ignore
    @Test
    public void smallestSquareSizeIs2() {
        Crypto crypto = new Crypto("1234");
        int expectedOutput = 2;

        assertEquals(expectedOutput, crypto.getSquareSize());
    }

    @Ignore
    @Test
    public void sizeOfTextWhoseLengthIsPerfectSquareIsItsSquareRoot() {
        Crypto crypto = new Crypto("123456789");
        int expectedOutput = 3;

        assertEquals(expectedOutput, crypto.getSquareSize());
    }

    @Ignore
    @Test
    public void sizeOfTextWhoseLengthIsNoPerfectSquareIsNextBiggestSquareRoot() {
        Crypto crypto = new Crypto("123456789abc");
        int expectedOutput = 4;

        assertEquals(expectedOutput, crypto.getSquareSize());
    }

    @Ignore
    @Test
    public void sizeIsDeterminedByNormalizedText() {
        Crypto crypto = new Crypto("Oh hey, this is nuts!");
        int expectedOutput = 4;

        assertEquals(expectedOutput, crypto.getSquareSize());
    }

    @Ignore
    @Test
    public void segmentsAreSplitBySquareSize() {
        Crypto crypto = new Crypto("Never vex thine heart with idle woes");
        List<String> expectedOutput = Arrays.asList(new String[]{"neverv", "exthin", "eheart", "withid", "lewoes"});

        assertEquals(expectedOutput, crypto.getPlaintextSegments());
    }

    @Ignore
    @Test
    public void segmentsAreSplitBySquareSizeUntilTextRunsOut() {
        Crypto crypto = new Crypto("ZOMG! ZOMBIES!!!");
        List<String> expectedOutput = Arrays.asList(new String[]{"zomg", "zomb", "ies"});

        assertEquals(expectedOutput, crypto.getPlaintextSegments());
    }

    @Ignore
    @Test
    public void cipherTextCombinesTextByColumn() {
        Crypto crypto = new Crypto("First, solve the problem. Then, write the code.");
        String expectedOutput = "foeewhilpmrervrticseohtottbeedshlnte";

        assertEquals(expectedOutput, crypto.getCipherText());
    }

    @Ignore
    @Test
    public void cipherTextSkipsCellsWithNoText() {
        Crypto crypto = new Crypto("Time is an illusion. Lunchtime doubly so.");
        String expectedOutput = "tasneyinicdsmiohooelntuillibsuuml";

        assertEquals(expectedOutput, crypto.getCipherText());
    }

    @Ignore
    @Test
    public void normalizedCipherTextIsSplitByHeightOfSquare() {
        Crypto crypto = new Crypto("Vampires are people too!");
        String expectedOutput = "vrel aepe mset paoo irpo";

        assertEquals(expectedOutput, crypto.getNormalizedCipherText());
    }

    @Ignore
    @Test
    public void normalizedCipherNotExactlyDivisibleBy5SpillsIntoSmallerSegment() {
        Crypto crypto = new Crypto("Madness, and then illumination.");
        String expectedOutput = "msemo aanin dnin ndla etlt shui";

        assertEquals(expectedOutput, crypto.getNormalizedCipherText());
    }

    @Ignore
    @Test
    public void normalizedCipherIsSplitIntoSegmentsOfCorrectSize() {
        Crypto crypto = new Crypto("If man was meant to stay on the ground god would have given us roots");
        String expectedOutput = "imtgdvs fearwer mayoogo anouuio ntnnlvt wttddes aohghn sseoau";

        assertEquals(expectedOutput, crypto.getNormalizedCipherText());
    }

    @Ignore
    @Test
    public void normalizedCipherTextIsSplitIntoSegmentsOfCorrectSizeWithPunctuation() {
        Crypto crypto = new Crypto("Have a nice day. Feed the dog & chill out!");
        String expectedOutput = "hifei acedl veeol eddgo aatcu nyhht";

        assertEquals(expectedOutput, crypto.getNormalizedCipherText());
    }
}

@@ -424,33 +424,55 @@
   %7D%0A%0A    @Ignore
+(%22Remove to run test%22)
 %0A
-
     @Test%0A    pu
@@ -699,32 +699,54 @@
   %7D%0A%0A    @Ignore
+(%22Remove to run test%22)
 %0A    @Test%0A    p
@@ -969,32 +969,54 @@
   %7D%0A%0A    @Ignore
+(%22Remove to run test%22)
 %0A    @Test%0A    p
@@ -1201,32 +1201,54 @@
   %7D%0A%0A    @Ignore
+(%22Remove to run test%22)
 %0A    @Test%0A    p
@@ -1468,32 +1468,54 @@
   %7D%0A%0A    @Ignore
+(%22Remove to run test%22)
 %0A    @Test%0A    p
@@ -1748,32 +1748,54 @@
   %7D%0A%0A    @Ignore
+(%22Remove to run test%22)
 %0A    @Test%0A    p
@@ -2008,32 +2008,54 @@
   %7D%0A%0A    @Ignore
+(%22Remove to run test%22)
 %0A    @Test%0A    p
@@ -2371,32 +2371,54 @@
   %7D%0A%0A    @Ignore
+(%22Remove to run test%22)
 %0A    @Test%0A    p
@@ -2703,32 +2703,54 @@
   %7D%0A%0A    @Ignore
+(%22Remove to run test%22)
 %0A    @Test%0A    p
@@ -3027,32 +3027,54 @@
   %7D%0A%0A    @Ignore
+(%22Remove to run test%22)
 %0A    @Test%0A    p
@@ -3342,32 +3342,54 @@
   %7D%0A%0A    @Ignore
+(%22Remove to run test%22)
 %0A    @Test%0A    p
@@ -3654,32 +3654,54 @@
   %7D%0A%0A    @Ignore
+(%22Remove to run test%22)
 %0A    @Test%0A    p
@@ -3999,32 +3999,54 @@
   %7D%0A%0A    @Ignore
+(%22Remove to run test%22)
 %0A    @Test%0A    p
@@ -4386,32 +4386,32 @@
 Text());%0A    %7D%0A%0A
-
     @Ignore%0A    
@@ -4405,16 +4405,38 @@
  @Ignore
+(%22Remove to run test%22)
 %0A    @Te

add hint to @Ignore annotations