/** * 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 } }