• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.
4
5'use strict';
6
7base.require('base.quad');
8base.require('base.rect');
9
10base.unittest.testSuite('base.quad', function() {
11  test('pointInTri', function() {
12    var res = base.vecInTriangle2(
13        [0.25, 0.25],
14        [0, 0],
15        [1, 0],
16        [0, 1]);
17    assertTrue(res);
18  });
19
20  test('pointNotInTri', function() {
21    var res = base.vecInTriangle2(
22        [0.75, 0.75],
23        [0, 0],
24        [1, 0],
25        [0, 1]);
26    assertFalse(res);
27  });
28
29  test('pointInside', function() {
30    var q = base.Quad.From4Vecs([0, 0],
31                                [1, 0],
32                                [1, 1],
33                                [0, 1]);
34    var res = q.vecInside([0.5, 0.5]);
35    assertTrue(res);
36  });
37
38  test('pointNotInQuad', function() {
39    var q = base.Quad.From4Vecs([0, 0],
40                                [1, 0],
41                                [1, 1],
42                                [0, 1]);
43    var res = q.vecInside([1.5, 0.5]);
44    assertFalse(res);
45  });
46
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());
52
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());
56  });
57
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);
62
63    var q = new base.Quad();
64    container.projectUnitRectFast(q, srcRect);
65
66    assertQuadEquals(base.Quad.FromRect(expectedRect), q);
67  });
68
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;
73
74    var q = new base.Quad();
75    container.projectUnitRectFast(q, srcRect);
76
77    assertQuadEquals(base.Quad.FromRect(expectedRect), q);
78  });
79
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);
84
85    var q = new base.Quad();
86    container.projectUnitRectFast(q, srcRect);
87
88    assertQuadEquals(base.Quad.FromRect(expectedRect), q);
89  });
90
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]);
95
96    var q = new base.Quad();
97    container.projectUnitRectFast(q, srcRect);
98
99    assertQuadEquals(base.Quad.FromRect(expectedRect), q);
100  });
101
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;
106
107    var q = new base.Quad();
108    container.projectUnitRectFast(q, srcRect);
109
110    assertQuadEquals(base.Quad.FromRect(expectedRect), q);
111  });
112});
113