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

Side by Side Diff: cc/trees/property_tree_unittest.cc

Issue 1417963011: Added serialization to protobufs for property trees. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address comments. Created 5 years, 1 month 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 unified diff | Download patch
« cc/trees/property_tree.cc ('K') | « cc/trees/property_tree.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/trees/property_tree.h" 5 #include "cc/trees/property_tree.h"
6 6
7 #include "cc/proto/property_tree.pb.h"
7 #include "cc/test/geometry_test_utils.h" 8 #include "cc/test/geometry_test_utils.h"
8 #include "cc/trees/draw_property_utils.h" 9 #include "cc/trees/draw_property_utils.h"
9 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
10 11
11 namespace cc { 12 namespace cc {
David Trainor- moved to gerrit 2015/11/12 22:46:11 Maybe anonymous namespace in here for everything?
Khushal 2015/11/13 10:33:13 Done.
12 13
13 TEST(PropertyTreeTest, ComputeTransformRoot) { 14 TEST(PropertyTreeSerializationTest, ClipNodeDataSerialization) {
David Trainor- moved to gerrit 2015/11/12 22:46:11 Add transform one.
Khushal 2015/11/13 10:33:13 Done.
14 TransformTree tree; 15 ClipNodeData original;
15 TransformNode& root = *tree.Node(0); 16 original.clip = gfx::RectF(0.5f, 0.5f);
16 root.data.local.Translate(2, 2); 17 original.combined_clip_in_target_space = gfx::RectF(0.6f, 0.6f);
17 root.data.target_id = 0; 18 original.clip_in_target_space = gfx::RectF(0.7f, 0.7f);
18 tree.UpdateTransforms(0); 19 original.transform_id = 2;
20 original.target_id = 3;
21 original.applies_local_clip = false;
22 original.layer_clipping_uses_only_local_clip = false;
23 original.target_is_clipped = false;
24 original.layers_are_clipped = false;
25 original.layers_are_clipped_when_surfaces_disabled = false;
26 original.resets_clip = false;
19 27
20 gfx::Transform expected; 28 proto::TreeNode proto;
21 gfx::Transform transform; 29 original.ToProtobuf(&proto);
22 bool success = tree.ComputeTransform(0, 0, &transform); 30 ClipNodeData result;
23 EXPECT_TRUE(success); 31 result.FromProtobuf(proto);
24 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
25 32
26 transform.MakeIdentity(); 33 EXPECT_EQ(original, result);
27 expected.Translate(2, 2); 34 }
28 success = tree.ComputeTransform(0, -1, &transform);
29 EXPECT_TRUE(success);
30 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
31 35
32 transform.MakeIdentity(); 36 TEST(PropertyTreeSerializationTest, EffectNodeDataSerialization) {
33 expected.MakeIdentity(); 37 EffectNodeData original;
34 expected.Translate(-2, -2); 38 original.opacity = 0.5f;
35 success = tree.ComputeTransform(-1, 0, &transform); 39 original.screen_space_opacity = 0.6f;
36 EXPECT_TRUE(success); 40 original.has_render_surface = false;
37 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform); 41 original.transform_id = 2;
42 original.clip_id = 3;
43
44 proto::TreeNode proto;
45 original.ToProtobuf(&proto);
46 EffectNodeData result;
47 result.FromProtobuf(proto);
48
49 EXPECT_EQ(original, result);
38 } 50 }
39 51
52 class PropertyTreeTest : public testing::Test {
Khushal 2015/11/12 00:33:11 Would it be a good idea to use something like this
53 public:
54 PropertyTreeTest() : test_serialization_(false) {}
55
56 protected:
57 void RunTest(bool test_serialization) {
58 test_serialization_ = test_serialization;
59 StartTest();
60 }
61
62 virtual void StartTest() = 0;
63
64 TransformTree TransformTreeForTest(const TransformTree& transform_tree) {
65 if (!test_serialization_) {
66 return transform_tree;
67 }
68 TransformTree new_tree;
69 proto::PropertyTree proto;
70 transform_tree.ToProtobuf(&proto);
71 new_tree.FromProtobuf(proto);
72 return new_tree;
73 }
74
75 private:
76 bool test_serialization_;
77 };
78
79 #define DIRECT_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME) \
David Trainor- moved to gerrit 2015/11/12 22:46:11 Good idea IMO :). Maybe #undef these after the te
Khushal 2015/11/13 10:33:13 Done.
80 TEST_F(TEST_FIXTURE_NAME, RunDirect) { RunTest(false); }
David Trainor- moved to gerrit 2015/11/12 22:46:11 Always use PropertyTreeTest as the fixture name.
David Trainor- moved to gerrit 2015/11/12 22:49:33 Just a note from our offline discussion, it looks
Khushal 2015/11/13 10:33:13 Done.
81
82 #define SERIALIZED_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME) \
83 TEST_F(TEST_FIXTURE_NAME, RunSerialized) { RunTest(true); }
84
85 #define DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME) \
86 DIRECT_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME); \
87 SERIALIZED_PROPERTY_TREE_TEST_F(TEST_FIXTURE_NAME)
88
89 class PropertyTreeTestComputeTransformRoot : public PropertyTreeTest {
90 protected:
91 void StartTest() override {
92 TransformTree tree;
93 TransformNode& root = *tree.Node(0);
94 root.data.local.Translate(2, 2);
95 root.data.target_id = 0;
96 tree.UpdateTransforms(0);
97
98 TransformTree test_tree = TransformTreeForTest(tree);
99
100 gfx::Transform expected;
101 gfx::Transform transform;
102 bool success = test_tree.ComputeTransform(0, 0, &transform);
103 EXPECT_TRUE(success);
104 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
105
106 transform.MakeIdentity();
107 expected.Translate(2, 2);
108 success = test_tree.ComputeTransform(0, -1, &transform);
109 EXPECT_TRUE(success);
110 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
111
112 transform.MakeIdentity();
113 expected.MakeIdentity();
114 expected.Translate(-2, -2);
115 success = test_tree.ComputeTransform(-1, 0, &transform);
116 EXPECT_TRUE(success);
117 EXPECT_TRANSFORMATION_MATRIX_EQ(expected, transform);
118 }
119 };
120
121 DIRECT_AND_SERIALIZED_PROPERTY_TREE_TEST_F(
122 PropertyTreeTestComputeTransformRoot);
David Trainor- moved to gerrit 2015/11/12 22:46:11 Can we just call this ComputeTransformRoot? That
David Trainor- moved to gerrit 2015/11/12 22:49:33 Same as above, ignore.
123
40 TEST(PropertyTreeTest, ComputeTransformChild) { 124 TEST(PropertyTreeTest, ComputeTransformChild) {
41 TransformTree tree; 125 TransformTree tree;
42 TransformNode& root = *tree.Node(0); 126 TransformNode& root = *tree.Node(0);
43 root.data.local.Translate(2, 2); 127 root.data.local.Translate(2, 2);
44 root.data.target_id = 0; 128 root.data.target_id = 0;
45 tree.UpdateTransforms(0); 129 tree.UpdateTransforms(0);
46 130
47 TransformNode child; 131 TransformNode child;
48 child.data.local.Translate(3, 3); 132 child.data.local.Translate(3, 3);
49 child.data.target_id = 0; 133 child.data.target_id = 0;
(...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after
578 tree.Node(child)->data.target_id = child; 662 tree.Node(child)->data.target_id = child;
579 tree.set_needs_update(true); 663 tree.set_needs_update(true);
580 ComputeTransforms(&tree); 664 ComputeTransforms(&tree);
581 EXPECT_TRUE( 665 EXPECT_TRUE(
582 tree.Node(parent)->data.node_and_ancestors_have_only_integer_translation); 666 tree.Node(parent)->data.node_and_ancestors_have_only_integer_translation);
583 EXPECT_TRUE( 667 EXPECT_TRUE(
584 tree.Node(child)->data.node_and_ancestors_have_only_integer_translation); 668 tree.Node(child)->data.node_and_ancestors_have_only_integer_translation);
585 } 669 }
586 670
587 } // namespace cc 671 } // namespace cc
OLDNEW
« cc/trees/property_tree.cc ('K') | « cc/trees/property_tree.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698