package biblioteca.ispettore;

import biblioteca.modello.Libro;

public final class Ispeziona {
    private Ispeziona() { }
    public static void main(String[] args) throws ReflectiveOperationException {
        Libro libro = new Libro();
        var accessore = Libro.class.getMethod("titolo");
        if (!accessore.invoke(libro).equals("Java")) throw new AssertionError();
        var campo = Libro.class.getDeclaredField("titolo");
        if (campo.canAccess(libro)) throw new AssertionError("Privato già accessibile");
        boolean aperto = campo.trySetAccessible();
        if (aperto != Boolean.parseBoolean(args[0])) throw new AssertionError("Apertura inattesa");
        if (aperto && !campo.get(libro).equals("Java")) throw new AssertionError();
        System.out.println("Accessore pubblico: OK; accesso profondo: " + aperto);
    }
}
