1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
7 base.require('base.quad');
8 base.require('base.rect');
10 base.unittest.testSuite('base.quad', function() {
11 test('pointInTri', function() {
12 var res = base.pointInTriangle2(
20 test('pointNotInTri', function() {
21 var res = base.pointInTriangle2(
29 test('pointInside', function() {
30 var q = base.Quad.from4Vecs([0, 0],
34 var res = q.pointInside([0.5, 0.5]);
38 test('pointNotInQuad', function() {
39 var q = base.Quad.from4Vecs([0, 0],
43 var res = q.pointInside([1.5, 0.5]);
47 test('isRectangle', function() {
48 assertTrue(base.Quad.fromXYWH(0, 0, 10, 10).isRectangle());
49 assertTrue(base.Quad.fromXYWH(-10, -10, 5, 5).isRectangle());
50 assertTrue(base.Quad.fromXYWH(-10, -10, 20, 20).isRectangle());
51 assertTrue(base.Quad.fromXYWH(-10, 10, 5, 5).isRectangle());
53 assertFalse(base.Quad.fromXYWH(0, 0, -10, -10).isRectangle());
54 assertFalse(base.Quad.from8Array([0, 1, 2, 3, 4, 5, 6, 7]).isRectangle());
55 assertFalse(base.Quad.from8Array([0, 0, 0, 5, 5, 5, 0, 0]).isRectangle());
58 test('projectUnitRect', function() {
59 var container = base.Quad.fromXYWH(0, 0, 10, 10);
60 var srcRect = base.Rect.fromXYWH(0.1, 0.8, 0.8, 0.1);
61 var expectedRect = srcRect.scale(10);
63 var q = new base.Quad();
64 container.projectUnitRectFast(q, srcRect);
66 assertQuadEquals(base.Quad.fromRect(expectedRect), q);
69 test('projectUnitRectOntoUnitQuad', function() {
70 var container = base.Quad.fromXYWH(0, 0, 1, 1);
71 var srcRect = base.Rect.fromXYWH(0.0, 0, 1, 1);
72 var expectedRect = srcRect;
74 var q = new base.Quad();
75 container.projectUnitRectFast(q, srcRect);
77 assertQuadEquals(base.Quad.fromRect(expectedRect), q);
80 test('projectUnitRectOntoSizeTwoQuad', function() {
81 var container = base.Quad.fromXYWH(0, 0, 2, 2);
82 var srcRect = base.Rect.fromXYWH(0.0, 0, 1, 1);
83 var expectedRect = srcRect.scale(2);
85 var q = new base.Quad();
86 container.projectUnitRectFast(q, srcRect);
88 assertQuadEquals(base.Quad.fromRect(expectedRect), q);
91 test('projectUnitRectOntoTranslatedQuad', function() {
92 var container = base.Quad.fromXYWH(1, 1, 1, 1);
93 var srcRect = base.Rect.fromXYWH(0.0, 0, 1, 1);
94 var expectedRect = srcRect.translate([1, 1]);
96 var q = new base.Quad();
97 container.projectUnitRectFast(q, srcRect);
99 assertQuadEquals(base.Quad.fromRect(expectedRect), q);
102 test('projectShrunkUnitRectOntoUnitQuad', function() {
103 var container = base.Quad.fromXYWH(0, 0, 1, 1);
104 var srcRect = base.Rect.fromXYWH(0.1, 0.1, 0.8, 0.8);
105 var expectedRect = srcRect;
107 var q = new base.Quad();
108 container.projectUnitRectFast(q, srcRect);
110 assertQuadEquals(base.Quad.fromRect(expectedRect), q);