Exemplo n.º 1
0
/**
 * item() and operator[] tests
 */
void testItem() {
  IntVector numbers;
  numbers.push(5);
  numbers.push(4);
  numbers.push(3);
  numbers.push(2);
  numbers.push(1);

  IntVector numbersCopy = numbers;
  assert(numbersCopy.item(1) == 4);
  numbersCopy.item(1) = 40;
  assert(numbersCopy.item(1) == 40);
  
  try {
    numbersCopy.item(5);
    fprintf(stderr, "Did not generate OutOfBoundsException on invalid item() access.\n");
    exit(1);
  } catch (OutOfBoundsException&) {
    // expected
  }

  numbersCopy = numbers;
  assert(numbersCopy[1] == 4);
  numbersCopy[1] = 40;
  assert(numbersCopy[1] == 40);

  try {
    numbersCopy[5];
    fprintf(stderr, "Did not generate OutOfBoundsException on invalid [] access.\n");
    exit(1);
  } catch (OutOfBoundsException&) {
    // expected
  }

  numbersCopy = numbers;
  const IntVector& numbersRef = numbersCopy;
  assert(numbersRef.item(1) == 4);
  
  try {
    numbersRef.item(5);
    fprintf(stderr, "Did not generate OutOfBoundsException on invalid item() const access.\n");
    exit(1);
  } catch (OutOfBoundsException&) {
    // expected
  }

  assert(numbersRef[1] == 4);

  try {
    numbersRef[5];
    fprintf(stderr, "Did not generate OutOfBoundsException on invalid [] const access.\n");
    exit(1);
  } catch (OutOfBoundsException&) {
    // expected
  }
}