tile_group_unittest.cc 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. // Copyright 2020 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. #include "components/query_tiles/internal/tile_group.h"
  5. #include <iostream>
  6. #include <type_traits>
  7. #include <utility>
  8. #include "base/test/task_environment.h"
  9. #include "components/query_tiles/test/test_utils.h"
  10. #include "testing/gtest/include/gtest/gtest.h"
  11. namespace query_tiles {
  12. namespace {
  13. TEST(TileGroupTest, CompareOperators) {
  14. base::Time last_updated_ts = base::Time::Now() - base::Days(7);
  15. TileGroup lhs, rhs;
  16. test::ResetTestGroup(&lhs, last_updated_ts);
  17. test::ResetTestGroup(&rhs, last_updated_ts);
  18. EXPECT_EQ(lhs, rhs);
  19. rhs.id = "changed";
  20. EXPECT_NE(lhs, rhs);
  21. test::ResetTestGroup(&rhs);
  22. rhs.locale = "changed";
  23. EXPECT_NE(lhs, rhs);
  24. test::ResetTestGroup(&rhs);
  25. rhs.last_updated_ts += base::Days(1);
  26. EXPECT_NE(lhs, rhs);
  27. test::ResetTestGroup(&rhs);
  28. rhs.tiles.clear();
  29. EXPECT_NE(lhs, rhs);
  30. }
  31. TEST(TileGroupTest, DeepCompareOperators) {
  32. base::Time last_updated_ts = base::Time::Now() - base::Days(7);
  33. TileGroup lhs, rhs;
  34. test::ResetTestGroup(&lhs, last_updated_ts);
  35. test::ResetTestGroup(&rhs, last_updated_ts);
  36. EXPECT_TRUE(test::AreTileGroupsIdentical(lhs, rhs));
  37. // Verify the order of tiles does not matter.
  38. std::reverse(rhs.tiles.begin(), rhs.tiles.end());
  39. EXPECT_TRUE(test::AreTileGroupsIdentical(lhs, rhs));
  40. test::ResetTestGroup(&rhs);
  41. // Verify change on children tiles will make them different.
  42. rhs.tiles.front()->id = "changed";
  43. EXPECT_FALSE(test::AreTileGroupsIdentical(lhs, rhs));
  44. }
  45. TEST(TileGroupTest, CopyOperator) {
  46. TileGroup lhs;
  47. test::ResetTestGroup(&lhs);
  48. TileGroup rhs = lhs;
  49. EXPECT_TRUE(test::AreTileGroupsIdentical(lhs, rhs));
  50. }
  51. TEST(TileGroupTest, MoveOperator) {
  52. TileGroup lhs;
  53. base::Time last_updated_ts = base::Time::Now() - base::Days(7);
  54. test::ResetTestGroup(&lhs, last_updated_ts);
  55. TileGroup rhs = std::move(lhs);
  56. TileGroup expected;
  57. test::ResetTestGroup(&expected, last_updated_ts);
  58. EXPECT_TRUE(test::AreTileGroupsIdentical(expected, rhs));
  59. }
  60. TEST(TileGroupTest, OnTileClicked) {
  61. base::Time now_time = base::Time::Now();
  62. TileGroup group;
  63. group.tile_stats["guid-1-1"] = TileStats(now_time, 0);
  64. group.tile_stats["guid-1-2"] = TileStats(now_time + base::Hours(1), 0.5);
  65. group.OnTileClicked("guid-1-1");
  66. EXPECT_EQ(group.tile_stats["guid-1-1"].score, 1);
  67. group.OnTileClicked("guid-1-2");
  68. EXPECT_EQ(group.tile_stats["guid-1-2"].score, 1.5);
  69. }
  70. TEST(TileGroupTest, RemoveTiles) {
  71. TileGroup group;
  72. test::ResetTestGroup(&group);
  73. EXPECT_EQ(group.tiles.size(), 3u);
  74. EXPECT_EQ(group.tiles[2]->id, "guid-1-3");
  75. EXPECT_FALSE(group.tiles[2]->sub_tiles.empty());
  76. std::vector<std::string> tiles_to_remove;
  77. tiles_to_remove.emplace_back("guid-1-1");
  78. group.RemoveTiles(tiles_to_remove);
  79. EXPECT_EQ(group.tiles.size(), 2u);
  80. EXPECT_EQ(group.tiles[0]->id, "guid-1-2");
  81. EXPECT_EQ(group.tiles[1]->id, "guid-1-3");
  82. test::ResetTestGroup(&group);
  83. tiles_to_remove.clear();
  84. tiles_to_remove.emplace_back("guid-1-4");
  85. group.RemoveTiles(tiles_to_remove);
  86. EXPECT_EQ(group.tiles.size(), 3u);
  87. EXPECT_EQ(group.tiles[2]->id, "guid-1-3");
  88. EXPECT_TRUE(group.tiles[2]->sub_tiles.empty());
  89. // Remove 2 tiles.
  90. test::ResetTestGroup(&group);
  91. tiles_to_remove.emplace_back("guid-1-1");
  92. group.RemoveTiles(tiles_to_remove);
  93. EXPECT_EQ(group.tiles.size(), 2u);
  94. EXPECT_EQ(group.tiles[0]->id, "guid-1-2");
  95. EXPECT_EQ(group.tiles[1]->id, "guid-1-3");
  96. EXPECT_TRUE(group.tiles[1]->sub_tiles.empty());
  97. }
  98. } // namespace
  99. } // namespace query_tiles