public void run(String[] args) {
        if (!parseArguments(args)) {
            showOptions();
            return;
        }

        if (command == null) {
            System.out.println("Error: Command is empty");
            System.out.println();
            showOptions();
            return;
        }
        if (password == null) {
            System.out.println("Error: Password is empty");
            System.out.println();
            showOptions();
            return;
        }
        if (input == null) {
            System.out.println("Error: Input is empty");
            System.out.println();
            showOptions();
            return;
        }

        encryptor.setPassword(password);
        if (algorithm != null) {
            encryptor.setAlgorithm(algorithm);
        }
        if (randomSaltGeneratorAlgorithm != null) {
            encryptor.setSaltGenerator(new RandomSaltGenerator(randomSaltGeneratorAlgorithm));
        }
        if (randomIvGeneratorAlgorithm != null) {
            encryptor.setIvGenerator(new RandomIvGenerator(randomIvGeneratorAlgorithm));
        }
        if ("encrypt".equals(command)) {
            System.out.println("Encrypted text: " + encryptor.encrypt(input));
        } else {
            System.out.println("Decrypted text: " + encryptor.decrypt(input));
        }
    }
@Test
    public void testUnknownOption() {
        Main main = new Main();
        assertDoesNotThrow(() -> main.run("-c encrypt -xxx foo".split(" ")));
    }