var rnd = new Native('java.util.Random');

@test
operation allInstancesWorks() {
  areEqual(6, Class.all.size);
}

@test
operation failingTest() {
  areEqual(1, 1 + 1);
}

@test
$times 10 * 10
operation randomTest() {
  var base = 2 + rnd.nextInt(9);
  var exp = rnd.nextInt(10);
  areEqual(slowPow(base, exp), fastPow(base, exp));
}

operation fastPow(base, exp) {
  if (exp == 0) {
    return 1;
  } else if (exp == 1) {
    return base;
  } else if (exp.mod(2) == 0) {
    return fastPow(base * base, exp/2);
  } else {
    return base * fastPow(base * base, (exp - 1)/2);
  }
}

operation slowPow(base, exp) {
  var result = 1;
  while (exp >= 1) {
    result *= base;
    exp -= 1;
  }
  return result;
}