%description:
Dynamic array out of bounds test for non-cOwnedObject rooted classes

%file: test.msg

namespace @TESTNAME@;

class MyClass
{
    int aa[];
};

%includes:
#include "test_m.h"

%activity:

#define TRYPRINT(X)  try { \
                       EV << #X << ":";  EV << X << endl; \
                     } catch (std::exception& e) { \
                       EV << "OOPS!" << endl; \
                     }
#define TRY(X)       try { \
                       EV << #X << ":";  X;  EV << "OK" << endl; \
                     } catch (std::exception& e) { \
                       EV << "OOPS!" << endl; \
                     }

MyClass x;

// default array sizes should be zero
TRYPRINT(x.getAaArraySize());
TRYPRINT(x.getAa(0));

x.setAaArraySize(3);
TRYPRINT(x.getAaArraySize());
TRYPRINT(x.getAa(-1));
TRYPRINT(x.getAa(0));
TRYPRINT(x.getAa(1));
TRYPRINT(x.getAa(2));
TRYPRINT(x.getAa(3));
TRYPRINT(x.getAa(4));

TRY(x.setAa(-1,23));
TRY(x.setAa(0,12));
TRY(x.setAa(1,55));
TRY(x.setAa(2,83));
TRY(x.setAa(3,87));
TRY(x.setAa(4,26));

%contains: stdout
x.getAaArraySize():0
x.getAa(0):OOPS!
x.getAaArraySize():3
x.getAa(-1):OOPS!
x.getAa(0):0
x.getAa(1):0
x.getAa(2):0
x.getAa(3):OOPS!
x.getAa(4):OOPS!
x.setAa(-1,23):OOPS!
x.setAa(0,12):OK
x.setAa(1,55):OK
x.setAa(2,83):OK
x.setAa(3,87):OOPS!
x.setAa(4,26):OOPS!