@Test
  public void testGetAnnotationTargetWrongArg() throws ReflectiveOperationException {
    final SuppressWarningsHolder holder = new SuppressWarningsHolder();
    final Method getAnnotationTarget =
        holder.getClass().getDeclaredMethod("getAnnotationTarget", DetailAST.class);
    getAnnotationTarget.setAccessible(true);

    final DetailAST methodDef = new DetailAST();
    methodDef.setType(TokenTypes.METHOD_DEF);
    methodDef.setText("Method Def");

    final DetailAST parent = new DetailAST();
    parent.setType(TokenTypes.ASSIGN);
    parent.setText("Parent ast");
    parent.addChild(methodDef);
    parent.setLineNo(0);
    parent.setColumnNo(0);

    try {
      getAnnotationTarget.invoke(holder, methodDef);
      fail("Exception expected");
    } catch (InvocationTargetException ex) {
      assertTrue(ex.getCause() instanceof IllegalArgumentException);
      assertEquals("Unexpected container AST: Parent ast[0x0]", ex.getCause().getMessage());
    }
  }
  @Test
  public void testIsSuppressed() throws Exception {
    final Class<?> entry =
        Class.forName("com.puppycrawl.tools.checkstyle.checks.SuppressWarningsHolder$Entry");
    final Constructor<?> entryConstructor =
        entry.getDeclaredConstructor(String.class, int.class, int.class, int.class, int.class);
    entryConstructor.setAccessible(true);

    final Object entryInstance = entryConstructor.newInstance("MockEntry", 100, 100, 350, 350);

    final List<Object> entriesList = new ArrayList<>();
    entriesList.add(entryInstance);

    final ThreadLocal<?> threadLocal = mock(ThreadLocal.class);
    PowerMockito.doReturn(entriesList).when(threadLocal, "get");

    final SuppressWarningsHolder holder = new SuppressWarningsHolder();
    final Field entries = holder.getClass().getDeclaredField("ENTRIES");
    entries.setAccessible(true);
    entries.set(holder, threadLocal);

    final Checker source = new Checker();
    final LocalizedMessage message =
        new LocalizedMessage(100, 10, null, null, null, "id", MemberNameCheck.class, "message");
    final AuditEvent event = new AuditEvent(source, "fileName", message);

    assertFalse(SuppressWarningsHolder.isSuppressed(event));
  }
  @Test
  public void testSetAliasListWrong() {
    final SuppressWarningsHolder holder = new SuppressWarningsHolder();

    try {
      holder.setAliasList("SomeAlias");
      fail("Exception expected");
    } catch (ConversionException ex) {
      assertEquals("'=' expected in alias list item: SomeAlias", ex.getMessage());
    }
  }
  @Test
  public void testAstWithoutChildren() {
    final SuppressWarningsHolder holder = new SuppressWarningsHolder();
    final DetailAST methodDef = new DetailAST();
    methodDef.setType(TokenTypes.METHOD_DEF);

    try {
      holder.visitToken(methodDef);
      fail("Exception expected");
    } catch (IllegalArgumentException ex) {
      assertEquals("Identifier AST expected, but get null.", ex.getMessage());
    }
  }
  @Test
  public void testGetAnnotationValuesWrongArg() throws ReflectiveOperationException {
    final SuppressWarningsHolder holder = new SuppressWarningsHolder();
    final Method getAllAnnotationValues =
        holder.getClass().getDeclaredMethod("getAnnotationValues", DetailAST.class);
    getAllAnnotationValues.setAccessible(true);

    final DetailAST methodDef = new DetailAST();
    methodDef.setType(TokenTypes.METHOD_DEF);
    methodDef.setText("Method Def");
    methodDef.setLineNo(0);
    methodDef.setColumnNo(0);

    try {
      getAllAnnotationValues.invoke(holder, methodDef);
      fail("Exception expected");
    } catch (InvocationTargetException ex) {
      assertTrue(ex.getCause() instanceof IllegalArgumentException);
      assertEquals(
          "Expression or annotation array" + " initializer AST expected: Method Def[0x0]",
          ex.getCause().getMessage());
    }
  }
 @Test
 public void testSetAliasListEmpty() {
   final SuppressWarningsHolder holder = new SuppressWarningsHolder();
   holder.setAliasList("");
 }
 @Test
 public void testGetDefaultAlias() {
   assertEquals("somename", SuppressWarningsHolder.getDefaultAlias("SomeName"));
   assertEquals("somename", SuppressWarningsHolder.getDefaultAlias("SomeNameCheck"));
 }
 @Test
 public void testGetRequiredTokens() {
   final SuppressWarningsHolder checkObj = new SuppressWarningsHolder();
   final int[] expected = {TokenTypes.ANNOTATION};
   assertArrayEquals(expected, checkObj.getRequiredTokens());
 }
 @Test
 public void testSetAliasListCorrect() {
   final SuppressWarningsHolder holder = new SuppressWarningsHolder();
   holder.setAliasList("alias=value");
   assertEquals("value", SuppressWarningsHolder.getAlias("alias"));
 }