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

Side by Side Diff: ui/views/controls/table/table_utils_unittest.cc

Issue 851853002: It is time. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Trying to reup because the last upload failed. Created 5 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 unified diff | Download patch
« no previous file with comments | « ui/views/controls/table/table_utils.cc ('k') | ui/views/controls/table/table_view.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2012 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 #include "ui/views/controls/table/table_utils.h"
6
7 #include "base/strings/string_number_conversions.h"
8 #include "testing/gtest/include/gtest/gtest.h"
9 #include "ui/gfx/font_list.h"
10 #include "ui/views/controls/table/test_table_model.h"
11
12 using ui::TableColumn;
13 using ui::TableModel;
14
15 namespace views {
16
17 namespace {
18
19 std::string IntVectorToString(const std::vector<int>& values) {
20 std::string result;
21 for (size_t i = 0; i < values.size(); ++i) {
22 if (i != 0)
23 result += ",";
24 result += base::IntToString(values[i]);
25 }
26 return result;
27 }
28
29 ui::TableColumn CreateTableColumnWithWidth(int width) {
30 ui::TableColumn column;
31 column.width = width;
32 return column;
33 }
34
35 } // namespace
36
37 // Verifies columns with a specified width is honored.
38 TEST(TableUtilsTest, SetWidthHonored) {
39 TestTableModel model(4);
40 std::vector<TableColumn> columns;
41 columns.push_back(CreateTableColumnWithWidth(20));
42 columns.push_back(CreateTableColumnWithWidth(30));
43 gfx::FontList font_list;
44 std::vector<int> result(CalculateTableColumnSizes(
45 100, 0, font_list, font_list, 0, 0, columns, &model));
46 EXPECT_EQ("20,30", IntVectorToString(result));
47
48 // Same with some padding, it should be ignored.
49 result = CalculateTableColumnSizes(
50 100, 0, font_list, font_list, 2, 0, columns, &model);
51 EXPECT_EQ("20,30", IntVectorToString(result));
52
53 // Same with not enough space, it shouldn't matter.
54 result = CalculateTableColumnSizes(
55 10, 0, font_list, font_list, 2, 0, columns, &model);
56 EXPECT_EQ("20,30", IntVectorToString(result));
57 }
58
59 // Verifies if no size is specified the last column gets all the available
60 // space.
61 TEST(TableUtilsTest, LastColumnGetsAllSpace) {
62 TestTableModel model(4);
63 std::vector<TableColumn> columns;
64 columns.push_back(ui::TableColumn());
65 columns.push_back(ui::TableColumn());
66 gfx::FontList font_list;
67 std::vector<int> result(CalculateTableColumnSizes(
68 500, 0, font_list, font_list, 0, 0, columns, &model));
69 EXPECT_NE(0, result[0]);
70 EXPECT_GE(result[1],
71 WidthForContent(font_list, font_list, 0, 0, columns[1], &model));
72 EXPECT_EQ(500, result[0] + result[1]);
73 }
74
75 // Verifies a single column with a percent=1 is resized correctly.
76 TEST(TableUtilsTest, SingleResizableColumn) {
77 TestTableModel model(4);
78 std::vector<TableColumn> columns;
79 columns.push_back(ui::TableColumn());
80 columns.push_back(ui::TableColumn());
81 columns.push_back(ui::TableColumn());
82 columns[2].percent = 1.0f;
83 gfx::FontList font_list;
84 std::vector<int> result(CalculateTableColumnSizes(
85 500, 0, font_list, font_list, 0, 0, columns, &model));
86 EXPECT_EQ(result[0],
87 WidthForContent(font_list, font_list, 0, 0, columns[0], &model));
88 EXPECT_EQ(result[1],
89 WidthForContent(font_list, font_list, 0, 0, columns[1], &model));
90 EXPECT_EQ(500 - result[0] - result[1], result[2]);
91
92 // The same with a slightly larger width passed in.
93 result = CalculateTableColumnSizes(
94 1000, 0, font_list, font_list, 0, 0, columns, &model);
95 EXPECT_EQ(result[0],
96 WidthForContent(font_list, font_list, 0, 0, columns[0], &model));
97 EXPECT_EQ(result[1],
98 WidthForContent(font_list, font_list, 0, 0, columns[1], &model));
99 EXPECT_EQ(1000 - result[0] - result[1], result[2]);
100
101 // Verify padding for the first column is honored.
102 result = CalculateTableColumnSizes(
103 1000, 10, font_list, font_list, 0, 0, columns, &model);
104 EXPECT_EQ(result[0],
105 WidthForContent(font_list, font_list, 0, 0, columns[0], &model)
106 + 10);
107 EXPECT_EQ(result[1],
108 WidthForContent(font_list, font_list, 0, 0, columns[1], &model));
109 EXPECT_EQ(1000 - result[0] - result[1], result[2]);
110
111 // Just enough space to show the first two columns. Should force last column
112 // to min size.
113 result = CalculateTableColumnSizes(
114 1000, 0, font_list, font_list, 0, 0, columns, &model);
115 result = CalculateTableColumnSizes(
116 result[0] + result[1], 0, font_list, font_list, 0, 0, columns, &model);
117 EXPECT_EQ(result[0],
118 WidthForContent(font_list, font_list, 0, 0, columns[0], &model));
119 EXPECT_EQ(result[1],
120 WidthForContent(font_list, font_list, 0, 0, columns[1], &model));
121 EXPECT_EQ(kUnspecifiedColumnWidth, result[2]);
122 }
123
124 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/controls/table/table_utils.cc ('k') | ui/views/controls/table/table_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698