MinimalCSharpFrontendTest.java 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. package de.jplag.csharp;
  2. import static de.jplag.csharp.CSharpTokenConstants.*;
  3. import static java.util.stream.Collectors.toList;
  4. import static org.junit.jupiter.api.Assertions.assertEquals;
  5. import static org.junit.jupiter.api.Assertions.assertTrue;
  6. import java.io.File;
  7. import java.nio.file.Path;
  8. import java.util.Arrays;
  9. import java.util.List;
  10. import java.util.stream.StreamSupport;
  11. import org.junit.jupiter.api.BeforeEach;
  12. import org.junit.jupiter.api.Test;
  13. import org.slf4j.Logger;
  14. import org.slf4j.LoggerFactory;
  15. import de.jplag.Token;
  16. import de.jplag.TokenConstants;
  17. import de.jplag.TokenList;
  18. import de.jplag.TokenPrinter;
  19. class MinimalCSharpFrontendTest {
  20. private final Logger logger = LoggerFactory.getLogger("JPlag-Test");
  21. private static final Path BASE_PATH = Path.of("src", "test", "resources", "de", "jplag", "csharp");
  22. private static final String TEST_SUBJECT = "TestClass.cs";
  23. private de.jplag.Language frontend;
  24. private File baseDirectory;
  25. @BeforeEach
  26. public void setUp() {
  27. frontend = new Language();
  28. baseDirectory = BASE_PATH.toFile();
  29. assertTrue(baseDirectory.exists(), "Could not find base directory!");
  30. }
  31. @Test
  32. void testParsingTestClass() {
  33. List<Integer> expectedToken = List.of(CLASS, CLASS_BEGIN, FIELD, CONSTRUCTOR, LOCAL_VARIABLE, METHOD, METHOD_BEGIN, IF, IF_BEGIN, INVOCATION,
  34. IF_END, IF_BEGIN, INVOCATION, IF_END, METHOD_END, PROPERTY, ACCESSORS_BEGIN, ACCESSOR_BEGIN, ACCESSOR_END, ACCESSOR_BEGIN,
  35. ACCESSOR_END, ACCESSORS_END, FIELD, PROPERTY, ACCESSORS_BEGIN, ACCESSOR_BEGIN, RETURN, ACCESSOR_END, ACCESSOR_BEGIN, ASSIGNMENT,
  36. ACCESSOR_END, ACCESSORS_END, CLASS_END, TokenConstants.FILE_END);
  37. // Parse test input
  38. String[] input = new String[] {TEST_SUBJECT};
  39. TokenList result = frontend.parse(baseDirectory, input);
  40. logger.info(TokenPrinter.printTokens(result, baseDirectory, Arrays.asList(input)));
  41. // Compare parsed tokens:
  42. assertEquals(expectedToken.size(), result.size());
  43. List<Integer> actualToken = StreamSupport.stream(result.allTokens().spliterator(), false).map(Token::getType).collect(toList());
  44. assertEquals(expectedToken, actualToken);
  45. }
  46. }