// Path: benchmarks/src/main/java/com/badlogic/ashley/benchmark/artemis/components/PositionComponent.java
// public class PositionComponent extends Component {
//     public final Vector3 pos = new Vector3();
//     public final Vector2 scale = new Vector2(1.0f, 1.0f);
//     public float rotation = 0.0f;
// }
// 
// Path: benchmarks/src/main/java/com/badlogic/ashley/benchmark/artemis/components/RadiusComponent.java
// public class RadiusComponent extends Component {
//     public float radius = 1.0f;
// }
// 
// Path: benchmarks/src/main/java/com/badlogic/ashley/benchmark/artemis/systems/MovementSystem.java
// public class MovementSystem extends EntityProcessingSystem {
//     private Vector2 tmp = new Vector2();
//     @Mapper
//     ComponentMapper<PositionComponent> pm;
//     @Mapper
//     ComponentMapper<MovementComponent> mm;
// 
//     public MovementSystem() {
//         super(Aspect.getAspectForAll(PositionComponent.class, MovementComponent.class));
//     }
// 
//     @Override
//     protected void initialize() {
//         pm = world.getMapper(PositionComponent.class);
//         mm = world.getMapper(MovementComponent.class);
//     }
// 
//     ;
// 
//     @Override
//     protected void process(Entity entity) {
//         PositionComponent pos = pm.get(entity);
//         MovementComponent mov = mm.get(entity);
// 
//         tmp.set(mov.accel).scl(world.getDelta());
//         mov.velocity.add(tmp);
// 
//         tmp.set(mov.velocity).scl(world.getDelta());
//         pos.pos.add(tmp.x, tmp.y, 0.0f);
//     }
// }
// 
// Path: benchmarks/src/main/java/com/badlogic/ashley/benchmark/artemis/systems/StateSystem.java
// public class StateSystem extends EntityProcessingSystem {
//     @Mapper
//     ComponentMapper<StateComponent> sm;
// 
//     public StateSystem() {
//         super(Aspect.getAspectForAll(StateComponent.class));
//     }
// 
//     @Override
//     protected void initialize() {
//         sm = world.getMapper(StateComponent.class);
//     }
// 
//     ;
// 
//     @Override
//     protected void process(Entity entity) {
//         sm.get(entity).time += world.getDelta();
//     }
// }
// 
// Path: gdx-lib/src/main/java/com/badlogic/gdx/math/MathUtils.java
// public final class MathUtils {
//     public static Random random = new Random();
// 
//     /**
//      * Returns a random number between 0 (inclusive) and the specified value (inclusive).
//      */
//     public static int random(int range) {
//         return random.nextInt(range + 1);
//     }
// 
//     /**
//      * Returns a random number between start (inclusive) and end (inclusive).
//      */
//     public static int random(int start, int end) {
//         return start + random.nextInt(end - start + 1);
//     }
// }


import com.artemis.Entity;
import com.artemis.World;
import com.badlogic.ashley.benchmark.Constants;
import com.badlogic.ashley.benchmark.Constants.ComponentType;
import com.badlogic.ashley.benchmark.artemis.components.MovementComponent;
import com.badlogic.ashley.benchmark.artemis.components.PositionComponent;
import com.badlogic.ashley.benchmark.artemis.components.RadiusComponent;
import com.badlogic.ashley.benchmark.artemis.components.StateComponent;
import com.badlogic.ashley.benchmark.artemis.systems.CollisionSystem;
import com.badlogic.ashley.benchmark.artemis.systems.MovementSystem;
import com.badlogic.ashley.benchmark.artemis.systems.RemovalSystem;
import com.badlogic.ashley.benchmark.artemis.systems.StateSystem;
import com.badlogic.gdx.math.MathUtils;
import com.carrotsearch.junitbenchmarks.AbstractBenchmark;
import com.carrotsearch.junitbenchmarks.BenchmarkOptions;
import org.junit.BeforeClass;
import org.junit.Test;
package com.badlogic.ashley.benchmark.artemis;


public class ArtemisBenchmark extends AbstractBenchmark {
    private static World worldSmall;
    private static World worldMedium;
    private static World worldBig;

    @BeforeClass
    public static void prepare() {
        worldSmall = prepareWorld(Constants.ENTITIES_SMALL_TEST);
// Path: benchmarks/src/main/java/com/badlogic/ashley/benchmark/artemis/components/PositionComponent.java
// public class PositionComponent extends Component {
//     public final Vector3 pos = new Vector3();
//     public final Vector2 scale = new Vector2(1.0f, 1.0f);
//     public float rotation = 0.0f;
// }
// 
// Path: benchmarks/src/main/java/com/badlogic/ashley/benchmark/artemis/components/RadiusComponent.java
// public class RadiusComponent extends Component {
//     public float radius = 1.0f;
// }
// 
// Path: benchmarks/src/main/java/com/badlogic/ashley/benchmark/artemis/systems/MovementSystem.java
// public class MovementSystem extends EntityProcessingSystem {
//     private Vector2 tmp = new Vector2();
//     @Mapper
//     ComponentMapper<PositionComponent> pm;
//     @Mapper
//     ComponentMapper<MovementComponent> mm;
// 
//     public MovementSystem() {
//         super(Aspect.getAspectForAll(PositionComponent.class, MovementComponent.class));
//     }
// 
//     @Override
//     protected void initialize() {
//         pm = world.getMapper(PositionComponent.class);
//         mm = world.getMapper(MovementComponent.class);
//     }
// 
//     ;
// 
//     @Override
//     protected void process(Entity entity) {
//         PositionComponent pos = pm.get(entity);
//         MovementComponent mov = mm.get(entity);
// 
//         tmp.set(mov.accel).scl(world.getDelta());
//         mov.velocity.add(tmp);
// 
//         tmp.set(mov.velocity).scl(world.getDelta());
//         pos.pos.add(tmp.x, tmp.y, 0.0f);
//     }
// }
// 
// Path: benchmarks/src/main/java/com/badlogic/ashley/benchmark/artemis/systems/StateSystem.java
// public class StateSystem extends EntityProcessingSystem {
//     @Mapper
//     ComponentMapper<StateComponent> sm;
// 
//     public StateSystem() {
//         super(Aspect.getAspectForAll(StateComponent.class));
//     }
// 
//     @Override
//     protected void initialize() {
//         sm = world.getMapper(StateComponent.class);
//     }
// 
//     ;
// 
//     @Override
//     protected void process(Entity entity) {
//         sm.get(entity).time += world.getDelta();
//     }
// }
// 
// Path: gdx-lib/src/main/java/com/badlogic/gdx/math/MathUtils.java
// public final class MathUtils {
//     public static Random random = new Random();
// 
//     /**
//      * Returns a random number between 0 (inclusive) and the specified value (inclusive).
//      */
//     public static int random(int range) {
//         return random.nextInt(range + 1);
//     }
// 
//     /**
//      * Returns a random number between start (inclusive) and end (inclusive).
//      */
//     public static int random(int start, int end) {
//         return start + random.nextInt(end - start + 1);
//     }
// }


// Path: benchmarks/src/main/java/com/badlogic/ashley/benchmark/artemis/ArtemisBenchmark.java
import com.artemis.Entity;
import com.artemis.World;
import com.badlogic.ashley.benchmark.Constants;
import com.badlogic.ashley.benchmark.Constants.ComponentType;
import com.badlogic.ashley.benchmark.artemis.components.MovementComponent;
import com.badlogic.ashley.benchmark.artemis.components.PositionComponent;
import com.badlogic.ashley.benchmark.artemis.components.RadiusComponent;
import com.badlogic.ashley.benchmark.artemis.components.StateComponent;
import com.badlogic.ashley.benchmark.artemis.systems.CollisionSystem;
import com.badlogic.ashley.benchmark.artemis.systems.MovementSystem;
import com.badlogic.ashley.benchmark.artemis.systems.RemovalSystem;
import com.badlogic.ashley.benchmark.artemis.systems.StateSystem;
import com.badlogic.gdx.math.MathUtils;
import com.carrotsearch.junitbenchmarks.AbstractBenchmark;
import com.carrotsearch.junitbenchmarks.BenchmarkOptions;
import org.junit.BeforeClass;
import org.junit.Test;

package com.badlogic.ashley.benchmark.artemis;


public class ArtemisBenchmark extends AbstractBenchmark {
    private static World worldSmall;
    private static World worldMedium;
    private static World worldBig;

    @BeforeClass
    public static void prepare() {
        worldSmall = prepareWorld(Constants.ENTITIES_SMALL_TEST);
        worldMedium = prepareWorld(Constants.ENTITIES_MEDIUM_TEST);