Index: ui/accessibility/ax_generated_tree_unittest.cc |
diff --git a/ui/accessibility/ax_generated_tree_unittest.cc b/ui/accessibility/ax_generated_tree_unittest.cc |
index b0bd21c81ff5bad3a00fc28e7ae04aacf36f4911..cb1038c018ce17beb5ff8203b93ac89182cff150 100644 |
--- a/ui/accessibility/ax_generated_tree_unittest.cc |
+++ b/ui/accessibility/ax_generated_tree_unittest.cc |
@@ -48,11 +48,37 @@ std::string TreeToString(const AXTree& tree) { |
} // anonymous namespace |
// Test the TreeGenerator class by building all possible trees with |
-// 3 nodes and the ids [1...3]. |
-TEST(AXGeneratedTreeTest, TestTreeGenerator) { |
+// 3 nodes and the ids [1...3], with no permutations of ids. |
+TEST(AXGeneratedTreeTest, TestTreeGeneratorNoPermutations) { |
int tree_size = 3; |
- TreeGenerator generator(tree_size); |
+ TreeGenerator generator(tree_size, false); |
const char* EXPECTED_TREES[] = { |
+ "(1)", |
+ "(1 (2))", |
+ "(1 (2 3))", |
+ "(1 (2 (3)))", |
+ }; |
+ |
+ int n = generator.UniqueTreeCount(); |
+ ASSERT_EQ(static_cast<int>(arraysize(EXPECTED_TREES)), n); |
+ |
+ for (int i = 0; i < n; ++i) { |
+ AXTree tree; |
+ generator.BuildUniqueTree(i, &tree); |
+ std::string str = TreeToString(tree); |
+ EXPECT_EQ(EXPECTED_TREES[i], str); |
+ } |
+} |
+ |
+// Test the TreeGenerator class by building all possible trees with |
+// 3 nodes and the ids [1...3] permuted in any order. |
+TEST(AXGeneratedTreeTest, TestTreeGeneratorWithPermutations) { |
+ int tree_size = 3; |
+ TreeGenerator generator(tree_size, true); |
+ const char* EXPECTED_TREES[] = { |
+ "(1)", |
+ "(1 (2))", |
+ "(2 (1))", |
"(1 (2 3))", |
"(2 (1 3))", |
"(3 (1 2))", |
@@ -92,26 +118,31 @@ TEST(AXGeneratedTreeTest, SerializeGeneratedTrees) { |
// the algorithm you may want to try even larger tree sizes if you |
// can afford the time. |
#ifdef NDEBUG |
- int tree_size = 4; |
+ int max_tree_size = 4; |
#else |
LOG(WARNING) << "Debug build, only testing trees with 3 nodes and not 4."; |
- int tree_size = 3; |
+ int max_tree_size = 3; |
#endif |
- TreeGenerator generator(tree_size); |
- int n = generator.UniqueTreeCount(); |
+ TreeGenerator generator0(max_tree_size, false); |
+ int n0 = generator0.UniqueTreeCount(); |
- for (int i = 0; i < n; i++) { |
+ TreeGenerator generator1(max_tree_size, true); |
+ int n1 = generator1.UniqueTreeCount(); |
+ |
+ for (int i = 0; i < n0; i++) { |
// Build the first tree, tree0. |
AXSerializableTree tree0; |
- generator.BuildUniqueTree(i, &tree0); |
+ generator0.BuildUniqueTree(i, &tree0); |
SCOPED_TRACE("tree0 is " + TreeToString(tree0)); |
- for (int j = 0; j < n; j++) { |
+ for (int j = 0; j < n1; j++) { |
// Build the second tree, tree1. |
AXSerializableTree tree1; |
- generator.BuildUniqueTree(j, &tree1); |
- SCOPED_TRACE("tree1 is " + TreeToString(tree0)); |
+ generator1.BuildUniqueTree(j, &tree1); |
+ SCOPED_TRACE("tree1 is " + TreeToString(tree1)); |
+ |
+ int tree_size = tree1.size(); |
// Now iterate over which node to update first, |k|. |
for (int k = 0; k < tree_size; k++) { |