Package cuchaz.enigma

Source Code of cuchaz.enigma.TestTokensConstructors

/*******************************************************************************
* Copyright (c) 2014 Jeff Martin.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Public License v3.0
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/gpl.html
*
* Contributors:
*     Jeff Martin - initial API and implementation
******************************************************************************/
package cuchaz.enigma;

import static cuchaz.enigma.EntryFactory.newBehaviorReferenceByConstructor;
import static cuchaz.enigma.EntryFactory.newBehaviorReferenceByMethod;
import static cuchaz.enigma.EntryFactory.newConstructor;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.containsInAnyOrder;
import static org.hamcrest.Matchers.is;
import static org.hamcrest.Matchers.nullValue;

import java.io.File;

import org.junit.Test;

import cuchaz.enigma.mapping.BehaviorEntry;

public class TestTokensConstructors extends TokenChecker
{
  public TestTokensConstructors( )
  throws Exception
  {
    super( new File( "build/libs/testConstructors.obf.jar" ) );
  }
 
  @Test
  public void baseDeclarations( )
  {
    assertThat( getDeclarationToken( newConstructor( "none/a", "()V" ) ), is( "a" ) );
    assertThat( getDeclarationToken( newConstructor( "none/a", "(I)V" ) ), is( "a" ) );
  }
 
  @Test
  public void subDeclarations( )
  {
    assertThat( getDeclarationToken( newConstructor( "none/d", "()V" ) ), is( "d" ) );
    assertThat( getDeclarationToken( newConstructor( "none/d", "(I)V" ) ), is( "d" ) );
    assertThat( getDeclarationToken( newConstructor( "none/d", "(II)V" ) ), is( "d" ) );
    assertThat( getDeclarationToken( newConstructor( "none/d", "(III)V" ) ), is( "d" ) );
  }
 
  @Test
  public void subsubDeclarations( )
  {
    assertThat( getDeclarationToken( newConstructor( "none/e", "(I)V" ) ), is( "e" ) );
  }
 
  @Test
  public void defaultDeclarations( )
  {
    assertThat( getDeclarationToken( newConstructor( "none/c", "()V" ) ), nullValue() );
  }
 
  @Test
  public void baseDefaultReferences( )
  {
    BehaviorEntry source = newConstructor( "none/a", "()V" );
    assertThat(
      getReferenceTokens( newBehaviorReferenceByMethod( source, "none/b", "a", "()V" ) ),
      containsInAnyOrder( "a" )
    );
    assertThat(
      getReferenceTokens( newBehaviorReferenceByConstructor( source, "none/d", "()V" ) ),
      containsInAnyOrder( "super" ) // implicit call, decompiled to "super"
    );
    assertThat(
      getReferenceTokens( newBehaviorReferenceByConstructor( source, "none/d", "(III)V" ) ),
      containsInAnyOrder( "super" ) // implicit call, decompiled to "super"
    );
  }
 
  @Test
  public void baseIntReferences( )
  {
    BehaviorEntry source = newConstructor( "none/a", "(I)V" );
    assertThat(
      getReferenceTokens( newBehaviorReferenceByMethod( source, "none/b", "b", "()V" ) ),
      containsInAnyOrder( "a" )
    );
  }

  @Test
  public void subDefaultReferences( )
  {
    BehaviorEntry source = newConstructor( "none/d", "()V" );
    assertThat(
      getReferenceTokens( newBehaviorReferenceByMethod( source, "none/b", "c", "()V" ) ),
      containsInAnyOrder( "d" )
    );
    assertThat(
      getReferenceTokens( newBehaviorReferenceByConstructor( source, "none/d", "(I)V" ) ),
      containsInAnyOrder( "this" )
    );
  }

  @Test
  public void subIntReferences( )
  {
    BehaviorEntry source = newConstructor( "none/d", "(I)V" );
    assertThat(
      getReferenceTokens( newBehaviorReferenceByMethod( source, "none/b", "d", "()V" ) ),
      containsInAnyOrder( "d" )
    );
    assertThat(
      getReferenceTokens( newBehaviorReferenceByConstructor( source, "none/d", "(II)V" ) ),
      containsInAnyOrder( "this" )
    );
    assertThat(
      getReferenceTokens( newBehaviorReferenceByConstructor( source, "none/e", "(I)V" ) ),
      containsInAnyOrder( "super" )
    );
  }

  @Test
  public void subIntIntReferences( )
  {
    BehaviorEntry source = newConstructor( "none/d", "(II)V" );
    assertThat(
      getReferenceTokens( newBehaviorReferenceByMethod( source, "none/b", "e", "()V" ) ),
      containsInAnyOrder( "d" )
    );
  }

  @Test
  public void subsubIntReferences( )
  {
    BehaviorEntry source = newConstructor( "none/e", "(I)V" );
    assertThat(
      getReferenceTokens( newBehaviorReferenceByMethod( source, "none/b", "f", "()V" ) ),
      containsInAnyOrder( "e" )
    );
  }

  @Test
  public void defaultConstructableReferences( )
  {
    BehaviorEntry source = newConstructor( "none/c", "()V" );
    assertThat(
      getReferenceTokens( newBehaviorReferenceByMethod( source, "none/b", "g", "()V" ) ),
      containsInAnyOrder( "c" )
    );
  }
}
TOP

Related Classes of cuchaz.enigma.TestTokensConstructors

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.