// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
define([
"gin/test/expect",
"mojo/public/interfaces/bindings/tests/rect.mojom",
"mojo/public/interfaces/bindings/tests/test_structs.mojom"
], function(expect,
rect,
testStructs) {
function testConstructors() {
var r = new rect.Rect();
expect(r).toEqual(new rect.Rect({x:0, y:0, width:0, height:0}));
expect(r).toEqual(new rect.Rect({foo:100, bar:200}));
r.x = 10;
r.y = 20;
r.width = 30;
r.height = 40;
var rp = new testStructs.RectPair({first: r, second: r});
expect(rp.first).toEqual(r);
expect(rp.second).toEqual(r);
expect(new testStructs.RectPair({second: r}).first).toBeNull();
var nr = new testStructs.NamedRegion();
expect(nr.name).toBeNull();
expect(nr.rects).toBeNull();
expect(nr).toEqual(new testStructs.NamedRegion({}));
nr.name = "foo";
nr.rects = [r, r, r];
expect(nr).toEqual(new testStructs.NamedRegion({
name: "foo",
rects: [r, r, r],
}));
var e = new testStructs.EmptyStruct();
expect(e).toEqual(new testStructs.EmptyStruct({foo:123}));
}
function testNoDefaultFieldValues() {
var s = new testStructs.NoDefaultFieldValues();
expect(s.f0).toEqual(false);
// f1 - f10, number type fields
for (var i = 1; i <= 10; i++)
expect(s["f" + i]).toEqual(0);
// f11,12 strings, f13-22 handles, f23-f26 arrays, f27,28 structs
for (var i = 11; i <= 28; i++)
expect(s["f" + i]).toBeNull();
}
function testDefaultFieldValues() {
var s = new testStructs.DefaultFieldValues();
expect(s.f0).toEqual(true);
// f1 - f12, number type fields
for (var i = 1; i <= 12; i++)
expect(s["f" + i]).toEqual(100);
// f13,14 "foo"
for (var i = 13; i <= 14; i++)
expect(s["f" + i]).toEqual("foo");
// f15,16 a default instance of Rect
var r = new rect.Rect();
expect(s.f15).toEqual(r);
expect(s.f16).toEqual(r);
}
testConstructors();
testNoDefaultFieldValues();
testDefaultFieldValues();
this.result = "PASS";
});