Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3092)

Unified Diff: cc/output/bsp_tree_unittest.cc

Issue 1535833002: Delete CC. (Closed) Base URL: git@github.com:domokit/mojo.git@moz-5
Patch Set: rebase Created 4 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « cc/output/bsp_tree.cc ('k') | cc/output/bsp_walk_action.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cc/output/bsp_tree_unittest.cc
diff --git a/cc/output/bsp_tree_unittest.cc b/cc/output/bsp_tree_unittest.cc
deleted file mode 100644
index 100bc919de478c8d47ee0521e98cfae197177e59..0000000000000000000000000000000000000000
--- a/cc/output/bsp_tree_unittest.cc
+++ /dev/null
@@ -1,348 +0,0 @@
-// 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.
-
-#include "base/macros.h"
-#include "base/memory/scoped_ptr.h"
-#include "cc/base/scoped_ptr_deque.h"
-#include "cc/base/scoped_ptr_vector.h"
-#include "cc/output/bsp_tree.h"
-#include "cc/output/bsp_walk_action.h"
-#include "cc/quads/draw_polygon.h"
-#include "testing/gtest/include/gtest/gtest.h"
-
-namespace cc {
-namespace {
-
-#define EXPECT_SORTED_LISTS_EQ(polygon_list, compare_list) \
- do { \
- EXPECT_EQ(polygon_list.size(), compare_list.size()); \
- for (unsigned int i = 0; i < polygon_list.size(); i++) { \
- EXPECT_EQ(polygon_list[i]->order_index(), compare_list[i]); \
- } \
- } while (false);
-
-#define INT_VECTOR_FROM_ARRAY(array) \
- std::vector<int>(array, array + arraysize(array))
-
-#define CREATE_DRAW_POLYGON(vertex_vector, normal, polygon_id) \
- new DrawPolygon(NULL, vertex_vector, normal, polygon_id)
-
-class BspTreeTest {
- public:
- static void RunTest(ScopedPtrDeque<DrawPolygon>* test_polygons,
- const std::vector<int>& compare_list) {
- BspTree bsp_tree(test_polygons);
-
- std::vector<DrawPolygon*> sorted_list;
- BspWalkActionToVector action_handler(&sorted_list);
- bsp_tree.TraverseWithActionHandler(&action_handler);
-
- EXPECT_SORTED_LISTS_EQ(sorted_list, compare_list);
- EXPECT_TRUE(VerifySidedness(bsp_tree.root()));
- }
-
- static bool VerifySidedness(const scoped_ptr<BspNode>& node) {
- // We check if both the front and back child nodes have geometry that is
- // completely on the expected side of the current node.
- bool front_ok = true;
- bool back_ok = true;
- if (node->back_child) {
- // Make sure the back child lies entirely behind this node.
- BspCompareResult result = DrawPolygon::SideCompare(
- *(node->back_child->node_data), *(node->node_data));
- if (result != BSP_BACK) {
- return false;
- }
- back_ok = VerifySidedness(node->back_child);
- }
- // Make sure the front child lies entirely in front of this node.
- if (node->front_child) {
- BspCompareResult result = DrawPolygon::SideCompare(
- *(node->front_child->node_data), *(node->node_data));
- if (result != BSP_FRONT) {
- return false;
- }
- front_ok = VerifySidedness(node->front_child);
- }
- if (!back_ok || !front_ok) {
- return false;
- }
-
- // Now we need to make sure our coplanar geometry is all actually coplanar.
- for (size_t i = 0; i < node->coplanars_front.size(); i++) {
- BspCompareResult result = DrawPolygon::SideCompare(
- *(node->coplanars_front[i]), *(node->node_data));
- if (result != BSP_COPLANAR_FRONT) {
- return false;
- }
- }
- for (size_t i = 0; i < node->coplanars_back.size(); i++) {
- BspCompareResult result = DrawPolygon::SideCompare(
- *(node->coplanars_back[i]), *(node->node_data));
- if (result != BSP_COPLANAR_BACK) {
- return false;
- }
- }
- return true;
- }
-};
-
-// Simple standing quads all parallel with each other, causing no splits.
-TEST(BspTreeTest, NoSplit) {
- std::vector<gfx::Point3F> vertices_a;
- vertices_a.push_back(gfx::Point3F(0.0f, 10.0f, 0.0f));
- vertices_a.push_back(gfx::Point3F(0.0f, 0.0f, 0.0f));
- vertices_a.push_back(gfx::Point3F(10.0f, 0.0f, 0.0f));
- vertices_a.push_back(gfx::Point3F(10.0f, 10.0f, 0.0f));
- std::vector<gfx::Point3F> vertices_b;
- vertices_b.push_back(gfx::Point3F(0.0f, 10.0f, -5.0f));
- vertices_b.push_back(gfx::Point3F(0.0f, 0.0f, -5.0f));
- vertices_b.push_back(gfx::Point3F(10.0f, 0.0f, -5.0f));
- vertices_b.push_back(gfx::Point3F(10.0f, 10.0f, -5.0f));
- std::vector<gfx::Point3F> vertices_c;
- vertices_c.push_back(gfx::Point3F(0.0f, 10.0f, 5.0f));
- vertices_c.push_back(gfx::Point3F(0.0f, 0.0f, 5.0f));
- vertices_c.push_back(gfx::Point3F(10.0f, 0.0f, 5.0f));
- vertices_c.push_back(gfx::Point3F(10.0f, 10.0f, 5.0f));
-
- scoped_ptr<DrawPolygon> polygon_a(
- CREATE_DRAW_POLYGON(vertices_a, gfx::Vector3dF(0.0f, 0.0f, 1.0f), 0));
- scoped_ptr<DrawPolygon> polygon_b(
- CREATE_DRAW_POLYGON(vertices_b, gfx::Vector3dF(0.0f, 0.0f, 1.0f), 1));
- scoped_ptr<DrawPolygon> polygon_c(
- CREATE_DRAW_POLYGON(vertices_c, gfx::Vector3dF(0.0f, 0.0f, 1.0f), 2));
-
- ScopedPtrDeque<DrawPolygon> polygon_list;
- polygon_list.push_back(polygon_a.Pass());
- polygon_list.push_back(polygon_b.Pass());
- polygon_list.push_back(polygon_c.Pass());
-
- int compare_ids[] = {1, 0, 2};
- std::vector<int> compare_list = INT_VECTOR_FROM_ARRAY(compare_ids);
- BspTreeTest::RunTest(&polygon_list, compare_list);
-}
-
-// Basic two polygon split, can be viewed as a + from above.
-TEST(BspTreeTest, BasicSplit) {
- std::vector<gfx::Point3F> vertices_a;
- vertices_a.push_back(gfx::Point3F(-5.0f, -5.0f, 0.0f));
- vertices_a.push_back(gfx::Point3F(-5.0f, 5.0f, 0.0f));
- vertices_a.push_back(gfx::Point3F(5.0f, 5.0f, 0.0f));
- vertices_a.push_back(gfx::Point3F(5.0f, -5.0f, 0.0f));
- std::vector<gfx::Point3F> vertices_b;
- vertices_b.push_back(gfx::Point3F(0.0f, -5.0f, -5.0f));
- vertices_b.push_back(gfx::Point3F(0.0f, 5.0f, -5.0f));
- vertices_b.push_back(gfx::Point3F(0.0f, 5.0f, 5.0f));
- vertices_b.push_back(gfx::Point3F(0.0f, -5.0f, 5.0f));
-
- scoped_ptr<DrawPolygon> polygon_a(
- CREATE_DRAW_POLYGON(vertices_a, gfx::Vector3dF(0.0f, 0.0f, 1.0f), 0));
- scoped_ptr<DrawPolygon> polygon_b(
- CREATE_DRAW_POLYGON(vertices_b, gfx::Vector3dF(-1.0f, 0.0f, 0.0f), 1));
-
- ScopedPtrDeque<DrawPolygon> polygon_list;
- polygon_list.push_back(polygon_a.Pass());
- polygon_list.push_back(polygon_b.Pass());
-
- int compare_ids[] = {1, 0, 1};
- std::vector<int> compare_list = INT_VECTOR_FROM_ARRAY(compare_ids);
- BspTreeTest::RunTest(&polygon_list, compare_list);
-}
-
-// Same as above with the second quad offset so it doesn't intersect. One quad
-// should be very clearly on one side of the other, and no splitting should
-// occur.
-TEST(BspTreeTest, QuadOffset) {
- std::vector<gfx::Point3F> vertices_a;
- vertices_a.push_back(gfx::Point3F(-5.0f, -5.0f, 0.0f));
- vertices_a.push_back(gfx::Point3F(-5.0f, 5.0f, 0.0f));
- vertices_a.push_back(gfx::Point3F(5.0f, 5.0f, 0.0f));
- vertices_a.push_back(gfx::Point3F(5.0f, -5.0f, 0.0f));
- std::vector<gfx::Point3F> vertices_b;
- vertices_b.push_back(gfx::Point3F(0.0f, 5.0f, -15.0f));
- vertices_b.push_back(gfx::Point3F(0.0f, -5.0f, -15.0f));
- vertices_b.push_back(gfx::Point3F(0.0f, -5.0f, -10.0f));
- vertices_b.push_back(gfx::Point3F(0.0f, 5.0f, -10.0f));
-
- scoped_ptr<DrawPolygon> polygon_a(
- CREATE_DRAW_POLYGON(vertices_a, gfx::Vector3dF(0.0f, 0.0f, 1.0f), 0));
- scoped_ptr<DrawPolygon> polygon_b(
- CREATE_DRAW_POLYGON(vertices_b, gfx::Vector3dF(-1.0f, 0.0f, 0.0f), 1));
-
- ScopedPtrDeque<DrawPolygon> polygon_list;
- polygon_list.push_back(polygon_a.Pass());
- polygon_list.push_back(polygon_b.Pass());
-
- int compare_ids[] = {1, 0};
- std::vector<int> compare_list = INT_VECTOR_FROM_ARRAY(compare_ids);
- BspTreeTest::RunTest(&polygon_list, compare_list);
-}
-
-// Same as above, but this time we change the order in which the quads are
-// inserted into the tree, causing one to actually cross the plane of the other
-// and cause a split.
-TEST(BspTreeTest, QuadOffsetSplit) {
- std::vector<gfx::Point3F> vertices_a;
- vertices_a.push_back(gfx::Point3F(-5.0f, -5.0f, 0.0f));
- vertices_a.push_back(gfx::Point3F(-5.0f, 5.0f, 0.0f));
- vertices_a.push_back(gfx::Point3F(5.0f, 5.0f, 0.0f));
- vertices_a.push_back(gfx::Point3F(5.0f, -5.0f, 0.0f));
- std::vector<gfx::Point3F> vertices_b;
- vertices_b.push_back(gfx::Point3F(0.0f, -5.0f, -15.0f));
- vertices_b.push_back(gfx::Point3F(0.0f, 5.0f, -15.0f));
- vertices_b.push_back(gfx::Point3F(0.0f, 5.0f, -10.0f));
- vertices_b.push_back(gfx::Point3F(0.0f, -5.0f, -10.0f));
-
- scoped_ptr<DrawPolygon> polygon_a(
- CREATE_DRAW_POLYGON(vertices_a, gfx::Vector3dF(0.0f, 0.0f, 1.0f), 0));
- scoped_ptr<DrawPolygon> polygon_b(
- CREATE_DRAW_POLYGON(vertices_b, gfx::Vector3dF(-1.0f, 0.0f, 0.0f), 1));
-
- ScopedPtrDeque<DrawPolygon> polygon_list;
- polygon_list.push_back(polygon_b.Pass());
- polygon_list.push_back(polygon_a.Pass());
-
- int compare_ids[] = {0, 1, 0};
- std::vector<int> compare_list = INT_VECTOR_FROM_ARRAY(compare_ids);
- BspTreeTest::RunTest(&polygon_list, compare_list);
-}
-
-// In addition to what can be viewed as a + from above, another piece of
-// geometry is inserted to cut these pieces right in the middle, viewed as
-// a quad from overhead.
-TEST(BspTreeTest, ThreeWaySplit) {
- std::vector<gfx::Point3F> vertices_a;
- vertices_a.push_back(gfx::Point3F(-5.0f, -5.0f, 0.0f));
- vertices_a.push_back(gfx::Point3F(-5.0f, 5.0f, 0.0f));
- vertices_a.push_back(gfx::Point3F(5.0f, 5.0f, 0.0f));
- vertices_a.push_back(gfx::Point3F(5.0f, -5.0f, 0.0f));
- std::vector<gfx::Point3F> vertices_b;
- vertices_b.push_back(gfx::Point3F(0.0f, -5.0f, -5.0f));
- vertices_b.push_back(gfx::Point3F(0.0f, 5.0f, -5.0f));
- vertices_b.push_back(gfx::Point3F(0.0f, 5.0f, 5.0f));
- vertices_b.push_back(gfx::Point3F(0.0f, -5.0f, 5.0f));
- std::vector<gfx::Point3F> vertices_c;
- vertices_c.push_back(gfx::Point3F(-5.0f, 0.0f, -5.0f));
- vertices_c.push_back(gfx::Point3F(-5.0f, 0.0f, 5.0f));
- vertices_c.push_back(gfx::Point3F(5.0f, 0.0f, 5.0f));
- vertices_c.push_back(gfx::Point3F(5.0f, 0.0f, -5.0f));
-
- scoped_ptr<DrawPolygon> polygon_a(
- CREATE_DRAW_POLYGON(vertices_a, gfx::Vector3dF(0.0f, 0.0f, 1.0f), 0));
- scoped_ptr<DrawPolygon> polygon_b(
- CREATE_DRAW_POLYGON(vertices_b, gfx::Vector3dF(-1.0f, 0.0f, 0.0f), 1));
- scoped_ptr<DrawPolygon> polygon_c(
- CREATE_DRAW_POLYGON(vertices_c, gfx::Vector3dF(0.0f, 1.0f, 0.0f), 2));
-
- ScopedPtrDeque<DrawPolygon> polygon_list;
- polygon_list.push_back(polygon_a.Pass());
- polygon_list.push_back(polygon_b.Pass());
- polygon_list.push_back(polygon_c.Pass());
-
- int compare_ids[] = {2, 1, 2, 0, 2, 1, 2};
- std::vector<int> compare_list = INT_VECTOR_FROM_ARRAY(compare_ids);
- BspTreeTest::RunTest(&polygon_list, compare_list);
-}
-
-// This test checks whether coplanar geometry, when inserted into the tree in
-// order, comes back in the same order as it should.
-TEST(BspTreeTest, Coplanar) {
- std::vector<gfx::Point3F> vertices_a;
- vertices_a.push_back(gfx::Point3F(-5.0f, -5.0f, 0.0f));
- vertices_a.push_back(gfx::Point3F(-5.0f, 5.0f, 0.0f));
- vertices_a.push_back(gfx::Point3F(5.0f, 5.0f, 0.0f));
- vertices_a.push_back(gfx::Point3F(5.0f, -5.0f, 0.0f));
- std::vector<gfx::Point3F> vertices_b;
- vertices_b.push_back(gfx::Point3F(-4.0f, -4.0f, 0.0f));
- vertices_b.push_back(gfx::Point3F(-4.0f, 4.0f, 0.0f));
- vertices_b.push_back(gfx::Point3F(4.0f, 4.0f, 0.0f));
- vertices_b.push_back(gfx::Point3F(4.0f, -4.0f, 0.0f));
- std::vector<gfx::Point3F> vertices_c;
- vertices_c.push_back(gfx::Point3F(-3.0f, -3.0f, 0.0f));
- vertices_c.push_back(gfx::Point3F(-3.0f, 3.0f, 0.0f));
- vertices_c.push_back(gfx::Point3F(3.0f, 3.0f, 0.0f));
- vertices_c.push_back(gfx::Point3F(3.0f, -3.0f, 0.0f));
-
- scoped_ptr<DrawPolygon> polygon_a(
- CREATE_DRAW_POLYGON(vertices_a, gfx::Vector3dF(0.0f, 0.0f, 1.0f), 0));
- scoped_ptr<DrawPolygon> polygon_b(
- CREATE_DRAW_POLYGON(vertices_b, gfx::Vector3dF(0.0f, 0.0f, 1.0f), 1));
- scoped_ptr<DrawPolygon> polygon_c(
- CREATE_DRAW_POLYGON(vertices_c, gfx::Vector3dF(0.0f, 0.0f, 1.0f), 2));
-
- scoped_ptr<DrawPolygon> polygon_d = polygon_a->CreateCopy();
- scoped_ptr<DrawPolygon> polygon_e = polygon_b->CreateCopy();
- scoped_ptr<DrawPolygon> polygon_f = polygon_c->CreateCopy();
-
- {
- ScopedPtrDeque<DrawPolygon> polygon_list;
- polygon_list.push_back(polygon_a.Pass());
- polygon_list.push_back(polygon_b.Pass());
- polygon_list.push_back(polygon_c.Pass());
-
- int compare_ids[] = {0, 1, 2};
- std::vector<int> compare_list = INT_VECTOR_FROM_ARRAY(compare_ids);
- BspTreeTest::RunTest(&polygon_list, compare_list);
- }
-
- // Now check a different order and ensure we get that back as well
- {
- ScopedPtrDeque<DrawPolygon> polygon_list;
- polygon_list.push_back(polygon_f.Pass());
- polygon_list.push_back(polygon_d.Pass());
- polygon_list.push_back(polygon_e.Pass());
-
- int compare_ids[] = {0, 1, 2};
- std::vector<int> compare_list = INT_VECTOR_FROM_ARRAY(compare_ids);
- BspTreeTest::RunTest(&polygon_list, compare_list);
- }
-}
-
-// A bunch of coplanar geometry should end up sharing a single node, and
-// result in the final piece of geometry splitting into just two pieces on
-// either side of the shared plane.
-TEST(BspTreeTest, CoplanarSplit) {
- std::vector<gfx::Point3F> vertices_a;
- vertices_a.push_back(gfx::Point3F(-5.0f, -5.0f, 0.0f));
- vertices_a.push_back(gfx::Point3F(-5.0f, 5.0f, 0.0f));
- vertices_a.push_back(gfx::Point3F(5.0f, 5.0f, 0.0f));
- vertices_a.push_back(gfx::Point3F(5.0f, -5.0f, 0.0f));
- std::vector<gfx::Point3F> vertices_b;
- vertices_b.push_back(gfx::Point3F(-4.0f, -4.0f, 0.0f));
- vertices_b.push_back(gfx::Point3F(-4.0f, 4.0f, 0.0f));
- vertices_b.push_back(gfx::Point3F(4.0f, 4.0f, 0.0f));
- vertices_b.push_back(gfx::Point3F(4.0f, -4.0f, 0.0f));
- std::vector<gfx::Point3F> vertices_c;
- vertices_c.push_back(gfx::Point3F(-3.0f, -3.0f, 0.0f));
- vertices_c.push_back(gfx::Point3F(-3.0f, 3.0f, 0.0f));
- vertices_c.push_back(gfx::Point3F(3.0f, 3.0f, 0.0f));
- vertices_c.push_back(gfx::Point3F(3.0f, -3.0f, 0.0f));
- std::vector<gfx::Point3F> vertices_d;
- vertices_d.push_back(gfx::Point3F(0.0f, -15.0f, -15.0f));
- vertices_d.push_back(gfx::Point3F(0.0f, 15.0f, -15.0f));
- vertices_d.push_back(gfx::Point3F(0.0f, 15.0f, 15.0f));
- vertices_d.push_back(gfx::Point3F(0.0f, -15.0f, 15.0f));
-
- scoped_ptr<DrawPolygon> polygon_a(
- CREATE_DRAW_POLYGON(vertices_a, gfx::Vector3dF(0.0f, 0.0f, 1.0f), 0));
- scoped_ptr<DrawPolygon> polygon_b(
- CREATE_DRAW_POLYGON(vertices_b, gfx::Vector3dF(0.0f, 0.0f, 1.0f), 1));
- scoped_ptr<DrawPolygon> polygon_c(
- CREATE_DRAW_POLYGON(vertices_c, gfx::Vector3dF(0.0f, 0.0f, 1.0f), 2));
- scoped_ptr<DrawPolygon> polygon_d(
- CREATE_DRAW_POLYGON(vertices_d, gfx::Vector3dF(-1.0f, 0.0f, 0.0f), 3));
-
- ScopedPtrDeque<DrawPolygon> polygon_list;
- polygon_list.push_back(polygon_a.Pass());
- polygon_list.push_back(polygon_b.Pass());
- polygon_list.push_back(polygon_c.Pass());
- polygon_list.push_back(polygon_d.Pass());
-
- int compare_ids[] = {3, 0, 1, 2, 3};
- std::vector<int> compare_list = INT_VECTOR_FROM_ARRAY(compare_ids);
- BspTreeTest::RunTest(&polygon_list, compare_list);
-}
-
-} // namespace
-} // namespace cc
« no previous file with comments | « cc/output/bsp_tree.cc ('k') | cc/output/bsp_walk_action.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698