/**
   * @param x número de elmentos inteiros;
   * @param g inidce do vetor;
   * @param a vetor que armazena os x números;
   * @return p valor do polinomio;
   * @throws IllegalArgumentException caso não atenda as condicoes: tamanho do vetor >= indice do
   *     vetor + 1; todos elementos do vetor devem ser diferente de 0; o indice do vetor(g) deve ser
   *     igual ou maior que 1; varíavel de controle do loop: i; Uso da class potência para obter a
   *     potencia entre x ,g e x,i;
   */
  public static int polSimples(int x, int g, int[] a) {
    if (a.length < g + 1) {
      throw new IllegalArgumentException("tamanho do vetor inválido");
    }

    if (a[g] == 0) {
      throw new IllegalArgumentException("vetor inválido");
    }

    if (g < 1) {
      throw new IllegalArgumentException("g inválido");
    }

    int t = Potencia.potencia(x, g);
    int p = a[0];
    int i = 1;

    while (i <= g) {
      t = Potencia.potencia(x, i);
      p = p + (a[i] * t);
      i = i + 1;
    }

    return p;
  }
  @Test
  public void testCasosTriviais() throws Exception {

    assertEquals(1, Potencia.potencia(1, 2), 0.0);
    assertEquals(1, Potencia.potencia(2, 0), 0.0);
    assertEquals(2, Potencia.potencia(2, 1), 0.0);
    assertEquals(4, Potencia.potencia(2, 2), 0.0);
  }
 @Test(expected = IllegalArgumentException.class)
 public void testBaseInvalida() {
   Potencia.potencia(-1, 2);
 }
  @Test
  public void testCasosNaoTriviais() throws Exception {

    assertEquals(25, Potencia.potencia(5, 2), 0.0);
    assertEquals(2187, Potencia.potencia(3, 7), 0.0);
  }
 @Test(expected = IllegalArgumentException.class)
 public void testCasoDeFronteira() {
   Potencia.potencia(0, 1);
   Potencia.potencia(1, -1);
 }
 @Test(expected = IllegalArgumentException.class)
 public void testExpoenteInvalido() {
   Potencia.potencia(2, -2);
 }