001package edu.pdx.cs.joy.grader;
002
003import org.junit.jupiter.api.Test;
004
005import java.io.PrintWriter;
006import java.io.StringWriter;
007
008import static org.hamcrest.CoreMatchers.equalTo;
009import static org.hamcrest.MatcherAssert.assertThat;
010
011public class APIDocumentationDocletTest {
012
013  @Test
014  public void removePackageNameFromJavaLangString() {
015    assertThat(APIDocumentationDoclet.removePackageNames("java.lang.String"), equalTo("String"));
016  }
017
018  @Test
019  public void removePackageNameFromArrayOfJavaLangString() {
020    assertThat(APIDocumentationDoclet.removePackageNames("java.lang.String[]"), equalTo("String[]"));
021  }
022
023  @Test
024  public void removePackageNameFromMapOfStringToString() {
025    String fullName = "java.util.Map<java.lang.String,java.lang.String>";
026    String shortName = "Map<String,String>";
027    assertThat(APIDocumentationDoclet.removePackageNames(fullName), equalTo(shortName));
028  }
029
030  @Test
031  public void leadingWhitespaceIsRemovedWhenIndenting() {
032    String rawText = "classes - The names of the classes the student is taking.  A student              \n" +
033      "        may take zero or more classes.";
034    String expected = "    classes - The names of the classes the student is taking. A student\n" +
035                      "    may take zero or more classes.\n";
036    assertThat(indentString(rawText, 4), equalTo(expected));
037  }
038
039  private String indentString(String rawText, int indent) {
040    StringWriter sw = new StringWriter();
041    APIDocumentationDoclet.indent(rawText, indent, new PrintWriter(sw, true));
042    return sw.toString();
043  }
044
045  @Test
046  public void noSpaceAfterDotInMiddleOfWord() {
047    assertThat(indentString("1.2.3", 2), equalTo("  1.2.3\n"));
048  }
049
050  @Test
051  public void spacesAfterPeriodAreCollapsedIntoOneSpace() {
052    String rawText = "One sentence.  Two sentences.";
053    String expected = "  One sentence. Two sentences.\n";
054    assertThat(indentString(rawText, 2), equalTo(expected));
055  }
056
057}