blob: 7067d9044488802d2b13b4e7ae64aad2e45c1e08 [file]
var arrayref = require("arrayref");
// Setting a variable that is a reference to an array copies into the array it refers to.
if (arrayref.numbers_sum() !== 10)
throw new Error("numbers_sum");
arrayref.numbers_ref = arrayref.others_address();
if (arrayref.numbers_sum() !== 100)
throw new Error("numbers_sum after set");
// An array of char is a string here, and so is a reference to one.
if (arrayref.letters !== "abc")
throw new Error("letters");
if (arrayref.letters_ref !== "abc")
throw new Error("letters_ref");
arrayref.letters_ref = "xy";
if (arrayref.letters_are() !== "xy")
throw new Error("letters_are");
if (arrayref.frozen_ref !== "xyz")
throw new Error("frozen_ref");
// A reference to an array of char cannot be null.
if (arrayref.length_of("abc") !== 3)
throw new Error("length_of");
var threw = false;
try {
arrayref.length_of(null);
} catch (e) {
threw = true;
}
if (!threw)
throw new Error("length_of(null) did not throw");
var member = new arrayref.ArrayRefMember();
if (member.sum() !== 10)
throw new Error("member sum");
if (member.text_ref !== "hi")
throw new Error("member text_ref");
member.text_ref = "bye";
if (member.text_is() !== "bye")
throw new Error("member text_is");
// Setting a reference to an array of arrays copies every element.
arrayref.grid_ref = arrayref.other_grid_address();
if (arrayref.grid_element(0, 1) !== 20)
throw new Error("grid_element(0, 1)");
if (arrayref.grid_element(1, 2) !== 60)
throw new Error("grid_element(1, 2)");
var grid_member = new arrayref.GridRefMember();
grid_member.rows_ref = arrayref.other_grid_address();
if (grid_member.element(0, 1) !== 20)
throw new Error("grid member element(0, 1)");
if (grid_member.element(1, 2) !== 60)
throw new Error("grid member element(1, 2)");