001package daikon.test;
002
003import static org.junit.Assert.assertEquals;
004
005import daikon.tools.jtb.AnnotateVisitor;
006import org.junit.Test;
007
008/** Tests that Annotate respects tabs. */
009public final class TestAnnotate {
010
011  @Test
012  public void testGetTabbedIndex() {
013
014    String[] tabbed =
015        new String[] {
016          "private int[]\telems;",
017          "\tprivate\tint\tnumberOfElements\t;",
018          "\t\tprivate\t\tint\t\tmax;",
019          "   \tpublic   \tuniqueBoundedStack()   \t{",
020          "   \t   \tnumberOfElements\t= 0;",
021          "\tmax = 2;\t\t",
022          "\telems\t=\tnew int[max]\t;",
023          "\tpublic void push(int k) {",
024          "\t       int index;",
025          "\t       for (index = 0; index<numberOfElements; index++) {",
026          "                        if (k==elems[index]) {"
027        };
028
029    String[] untabbed =
030        new String[] {
031          "private int[]   elems;",
032          "        private int     numberOfElements        ;",
033          "                private         int             max;",
034          "        public          uniqueBoundedStack()    {",
035          "                numberOfElements        = 0;",
036          "        max = 2;",
037          "        elems   =       new int[max]    ;",
038          "        public void push(int k) {",
039          "               int index;",
040          "               for (index = 0; index<numberOfElements; index++) {",
041          "                        if (k==elems[index]) {"
042        };
043
044    for (int i = 0; i < tabbed.length; i++) {
045
046      String tabbedString = tabbed[i];
047      String untabbedString = untabbed[i];
048      for (int j = 0; j < untabbedString.length(); j++) {
049        char untabbedChar = untabbedString.charAt(j);
050        if (untabbedChar != ' ') {
051          char tabbedChar = tabbedString.charAt(AnnotateVisitor.getTabbedIndex(j, tabbedString));
052          assertEquals(untabbedChar, tabbedChar);
053        }
054      }
055    }
056  }
057}