### Question:
AttackerModel extends FeatureModel implements Attacker, Recyclable { @Override public void update(double extrp) { tick.update(extrp); switch (state) { case NONE: break; case CHECK: updateAttackCheck(); break; case ATTACKING: updateAttacking(); break; default: throw new LionEngineException(state); } if (stop) { attacking = false; state = AttackState.NONE; target = null; stop = false; for (int i = 0; i < listenable.size(); i++) { listenable.get(i).notifyAttackStopped(); } } } AttackerModel(Services services, Setup setup); @Override void prepare(FeatureProvider provider); @Override void checkListener(Object listener); @Override void addListener(AttackerListener listener); @Override void removeListener(AttackerListener listener); @Override void attack(Transformable target); @Override void stopAttack(); @Override void update(double extrp); @Override void setAttackChecker(Predicate<Transformable> checker); @Override void setAttackDistanceComputer(ToDoubleBiFunction<Transformable, Transformable> distance); @Override void setAttackDelay(int tick); @Override void setAttackFrame(int frame); @Override void setAttackDistance(Range range); @Override void setAttackDamages(Range range); @Override int getAttackDamages(); @Override boolean isAttacking(); @Override Transformable getTarget(); @Override void recycle();  }### Answer:
@Test void testEnumFail() throws ReflectiveOperationException { final AttackerModel attacker = new AttackerModel(services, setup); final Field field = attacker.getClass().getDeclaredField("state"); UtilReflection.setAccessible(field, true); field.set(attacker, AttackState.values()[3]); assertThrows(() -> attacker.update(1.0), "Unknown enum: FAIL"); }