blob: b97e0dbe71b9bba3a7906788dd22144c45b8c21c [file] [log] [blame]
// Copyright (c) 2015, Google Inc. Please see the AUTHORS file for details.
// All rights reserved. Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
import 'package:test/test.dart';
import 'package:vector_math/vector_math.dart';
import 'test_utils.dart';
void testQuadCopy() {
final quad = Quad.points(Vector3(1.0, 0.0, 1.0), Vector3(0.0, 2.0, 1.0),
Vector3(1.0, 0.0, 0.0), Vector3(0.0, 2.0, 0.0));
final quadCopy = Quad.copy(quad);
relativeTest(quadCopy.point0, quad.point0);
relativeTest(quadCopy.point1, quad.point1);
relativeTest(quadCopy.point2, quad.point2);
relativeTest(quadCopy.point3, quad.point3);
}
void testQuadCopyNormalInto() {
final quad = Quad.points(Vector3(1.0, 0.0, 1.0), Vector3(0.0, 2.0, 1.0),
Vector3(1.0, 0.0, 0.0), Vector3(0.0, 2.0, 0.0));
final normal = Vector3.zero();
quad.copyNormalInto(normal);
relativeTest(normal, Vector3(-0.8944271802902222, -0.4472135901451111, 0.0));
}
void testQuadCopyTriangles() {
final quad = Quad.points(Vector3(1.0, 0.0, 1.0), Vector3(0.0, 2.0, 1.0),
Vector3(1.0, 0.0, 0.0), Vector3(0.0, 2.0, 0.0));
final t1 = Triangle();
final t2 = Triangle();
final normal = Vector3.zero();
final t1Normal = Vector3.zero();
final t2Normal = Vector3.zero();
quad.copyNormalInto(normal);
quad.copyTriangles(t1, t2);
t1.copyNormalInto(t1Normal);
t2.copyNormalInto(t2Normal);
relativeTest(t1Normal, normal);
relativeTest(t2Normal, normal);
}
void testQuadEquals() {
final v1 = Vector3(1.0, 0.0, 1.0);
final v2 = Vector3(0.0, 2.0, 1.0);
final v3 = Vector3(1.0, 0.0, 0.0);
final v4 = Vector3(0.0, 2.0, 0.0);
final quad = Quad.points(v1, v2, v3, v4);
expect(quad, Quad.points(v1, v2, v3, v4));
expect(quad, isNot(Quad.points(Vector3.zero(), v2, v3, v4)));
expect(quad, isNot(Quad.points(v1, Vector3.zero(), v3, v4)));
expect(quad, isNot(Quad.points(v1, v2, Vector3.zero(), v4)));
expect(quad, isNot(Quad.points(v1, v2, v3, Vector3.zero())));
expect(Quad.points(v1, v2, v3, v4).hashCode,
equals(Quad.points(v1, v2, v3, v4).hashCode));
}
void main() {
group('Quad', () {
test('Copy', testQuadCopy);
test('CopyNormalInto', testQuadCopyNormalInto);
test('CopyTriangles', testQuadCopyTriangles);
test('equals', testQuadEquals);
});
}