1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- // Copyright 2018 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 "ash/assistant/model/assistant_query_history.h"
- #include "testing/gtest/include/gtest/gtest.h"
- namespace ash {
- // Assert that iterator Prev() or Next() does not crash on an empty history.
- TEST(AssistantQueryHistory, Empty) {
- AssistantQueryHistory history(10);
- auto it = history.GetIterator();
- EXPECT_EQ(absl::nullopt, it->Next());
- EXPECT_EQ(absl::nullopt, it->Prev());
- EXPECT_EQ(absl::nullopt, it->Next());
- EXPECT_EQ(absl::nullopt, it->Next());
- EXPECT_EQ(absl::nullopt, it->Next());
- EXPECT_EQ(absl::nullopt, it->Prev());
- }
- TEST(AssistantQueryHistory, Full) {
- int size = 3;
- AssistantQueryHistory history(size);
- // Make more queries than history limit.
- for (int i = 0; i <= size; i++)
- history.Add(std::to_string(i));
- auto it = history.GetIterator();
- // Assert history only contains last 3 queries.
- for (int i = size; i > 0; i--)
- EXPECT_EQ(std::to_string(i), it->Prev().value());
- EXPECT_EQ(std::to_string(1), it->Prev().value());
- // Assert that iterate does not pass first query.
- EXPECT_EQ(std::to_string(1), it->Prev().value());
- // Make more queries than history limit again.
- for (int i = 0; i <= size; i++)
- history.Add(std::to_string(i + 4));
- it->ResetToLast();
- // Assert that history only contains last 3 queries.
- for (int i = size; i > 0; i--)
- EXPECT_EQ(std::to_string(i + 4), it->Prev());
- EXPECT_EQ(std::to_string(5), it->Prev().value());
- // Assert that iterate does not pass first query.
- EXPECT_EQ(std::to_string(5), it->Prev().value());
- }
- TEST(AssistantQueryHistory, Add) {
- AssistantQueryHistory history(10);
- auto it = history.GetIterator();
- EXPECT_EQ(absl::nullopt, it->Next());
- EXPECT_EQ(absl::nullopt, it->Next());
- EXPECT_EQ(absl::nullopt, it->Next());
- EXPECT_EQ(absl::nullopt, it->Next());
- history.Add("Query01");
- history.Add("Query02");
- it = history.GetIterator();
- EXPECT_EQ(absl::nullopt, it->Next());
- EXPECT_EQ("Query02", it->Prev().value());
- EXPECT_EQ("Query01", it->Prev().value());
- EXPECT_EQ("Query01", it->Prev().value());
- EXPECT_EQ("Query02", it->Next().value());
- EXPECT_EQ(absl::nullopt, it->Next());
- EXPECT_EQ(absl::nullopt, it->Next());
- }
- } // namespace ash
|