// Test reshape()
proc main()
{
var a;
/* Variable array */
a = new Array(3);
a[0] = 0; a[1] = 1; a[2] = 2;
try { a[3] = 3; } catch(e) { "No a[3] as expected\n"; }
a = a.reshape(4);
"a = {", a[0], ", ", a[1], ", ", a[2], ", ", a[3], "}\n";
a[3] = 3;
"a[3] = ", a[3], "\n";
a = a.reshape(2);
try { a[2] = 2; } catch(e) { "No a[2] as expected\n"; }
"a = {", a[0], ", ", a[1], "}\n";
/* String */
a = @ "012";
try { a[3] = '3'; } catch(e) { "No a[3] as expected\n"; }
a = a.reshape(4);
"a = {", a[0], ", ", a[1], ", ", a[2], ", ", Int(a[3]) , "}\n";
a[3] = '3';
"a[3] = ", a[3], "\n";
a = a.reshape(2);
try { a[2] = '2'; } catch(e) { "No a[2] as expected\n"; }
"a = \"", a, "\"\n";
/* Wide String */
a = @ L"012";
try { a[3] = '3'; } catch(e) { "No a[3] as expected\n"; }
a = a.reshape(4);
"a = {", a[0], ", ", a[1], ", ", a[2], ", ", Int(a[3]), "}\n";
a[3] = '3';
"a[3] = ", a[3], "\n";
a = a.reshape(2);
try { a[2] = '2'; } catch(e) { "No a[2] as expected\n"; }
"a = \"", a, "\"\n";
/* Packint */
a = new PackInt(3);
a[0] = 0; a[1] = 1; a[2] = 2;
try { a[3] = 3; } catch(e) { "No a[3] as expected\n"; }
a = a.reshape(4);
"a = {", a[0], ", ", a[1], ", ", a[2], ", ", a[3], "}\n";
a[3] = 3;
"a[3] = ", a[3], "\n";
a = a.reshape(2);
try { a[2] = 2; } catch(e) { "No a[2] as expected\n"; }
"a = {", a[0], ", ", a[1], "}\n";
/* Packfloat */
a = new PackFloat(3);
a[0] = 0; a[1] = 1; a[2] = 2;
try { a[3] = 3; } catch(e) { "No a[3] as expected\n"; }
a = a.reshape(4);
"a = {", a[0], ", ", a[1], ", ", a[2], ", ", a[3], "}\n";
a[3] = 3;
"a[3] = ", a[3], "\n";
a = a.reshape(2);
try { a[2] = 2; } catch(e) { "No a[2] as expected\n"; }
"a = {", a[0], ", ", a[1], "}\n";
/* Dictionary */
a = new Dict(3);
a[0] = 0; a[1] = 1; a[2] = 2;
try { a[3] = 3; } catch(e) { "No a[3] as expected\n"; }
a = a.reshape(4);
"a = {", a[0], ", ", a[1], ", ", a[2], ", ", a[3], "}\n";
a[3] = 3;
"a[3] = ", a[3], "\n";
try {
a = a.reshape(2);
}
catch(e) {
"Can't shrink dict, as expected\n";
}
}