15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 79ab5563a3196760eb381d102cbb2bc0f7abc6a50Ben Murdoch#include "base/message_loop/message_loop.h" 8868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)#include "base/strings/utf_string_conversions.h" 9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/time/time.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/predictors/autocomplete_action_predictor_table.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/predictors/predictor_database.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/predictors/predictor_database_factory.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/test/base/testing_profile.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/test/test_browser_thread.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sql/statement.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using base::Time; 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using base::TimeDelta; 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::BrowserThread; 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using predictors::AutocompleteActionPredictorTable; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace predictors { 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AutocompleteActionPredictorTableTest : public testing::Test { 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutocompleteActionPredictorTableTest(); 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~AutocompleteActionPredictorTableTest(); 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetUp(); 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void TearDown(); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) size_t CountRecords() const; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void AddAll(); 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool RowsAreEqual(const AutocompleteActionPredictorTable::Row& lhs, 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const AutocompleteActionPredictorTable::Row& rhs) const; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestingProfile* profile() { return &profile_; } 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Test functions that can be run against this text fixture or 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // AutocompleteActionPredictorTableReopenTest that inherits from this. 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void TestGetRow(); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void TestAddAndUpdateRows(); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void TestDeleteRows(); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void TestDeleteAllRows(); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutocompleteActionPredictorTable::Rows test_db_; 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestingProfile profile_; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<PredictorDatabase> db_; 5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) base::MessageLoop loop_; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) content::TestBrowserThread db_thread_; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AutocompleteActionPredictorTableReopenTest 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : public AutocompleteActionPredictorTableTest { 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void SetUp() { 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // By calling SetUp twice, we make sure that the table already exists for 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // this fixture. 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutocompleteActionPredictorTableTest::SetUp(); 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutocompleteActionPredictorTableTest::TearDown(); 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutocompleteActionPredictorTableTest::SetUp(); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)AutocompleteActionPredictorTableTest::AutocompleteActionPredictorTableTest() 745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) : db_thread_(BrowserThread::DB, &loop_) { 755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)AutocompleteActionPredictorTableTest::~AutocompleteActionPredictorTableTest() { 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AutocompleteActionPredictorTableTest::SetUp() { 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) db_.reset(new PredictorDatabase(&profile_)); 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) loop_.RunUntilIdle(); 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test_db_.push_back(AutocompleteActionPredictorTable::Row( 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "BD85DBA2-8C29-49F9-84AE-48E1E90880DF", 865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::ASCIIToUTF16("goog"), GURL("http://www.google.com/"), 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1, 0)); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test_db_.push_back(AutocompleteActionPredictorTable::Row( 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "BD85DBA2-8C29-49F9-84AE-48E1E90880E0", 905d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::ASCIIToUTF16("slash"), GURL("http://slashdot.org/"), 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3, 2)); 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test_db_.push_back(AutocompleteActionPredictorTable::Row( 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "BD85DBA2-8C29-49F9-84AE-48E1E90880E1", 945d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::ASCIIToUTF16("news"), GURL("http://slashdot.org/"), 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 0, 1)); 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AutocompleteActionPredictorTableTest::TearDown() { 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) db_.reset(NULL); 1002a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) loop_.RunUntilIdle(); 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test_db_.clear(); 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)size_t AutocompleteActionPredictorTableTest::CountRecords() const { 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) sql::Statement s(db_->GetDatabase()->GetUniqueStatement( 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) "SELECT count(*) FROM network_action_predictor")); 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(s.Step()); 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return static_cast<size_t>(s.ColumnInt(0)); 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AutocompleteActionPredictorTableTest::AddAll() { 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) db_->autocomplete_table()->AddAndUpdateRows( 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) test_db_, AutocompleteActionPredictorTable::Rows()); 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(test_db_.size(), CountRecords()); 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool AutocompleteActionPredictorTableTest::RowsAreEqual( 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const AutocompleteActionPredictorTable::Row& lhs, 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const AutocompleteActionPredictorTable::Row& rhs) const { 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return (lhs.id == rhs.id && 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lhs.user_text == rhs.user_text && 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lhs.url == rhs.url && 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lhs.number_of_hits == rhs.number_of_hits && 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) lhs.number_of_misses == rhs.number_of_misses); 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AutocompleteActionPredictorTableTest::TestGetRow() { 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) db_->autocomplete_table()->AddAndUpdateRows( 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutocompleteActionPredictorTable::Rows(1, test_db_[0]), 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutocompleteActionPredictorTable::Rows()); 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutocompleteActionPredictorTable::Row row; 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) db_->autocomplete_table()->GetRow(test_db_[0].id, &row); 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(RowsAreEqual(test_db_[0], row)) 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << "Expected: Row with id " << test_db_[0].id << "\n" 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << "Got: Row with id " << row.id; 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AutocompleteActionPredictorTableTest::TestAddAndUpdateRows() { 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0U, CountRecords()); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutocompleteActionPredictorTable::Rows rows_to_add; 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rows_to_add.push_back(test_db_[0]); 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rows_to_add.push_back(test_db_[1]); 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) db_->autocomplete_table()->AddAndUpdateRows( 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rows_to_add, 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutocompleteActionPredictorTable::Rows()); 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(2U, CountRecords()); 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutocompleteActionPredictorTable::Row row1 = test_db_[1]; 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) row1.number_of_hits = row1.number_of_hits + 1; 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) db_->autocomplete_table()->AddAndUpdateRows( 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutocompleteActionPredictorTable::Rows(1, test_db_[2]), 1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutocompleteActionPredictorTable::Rows(1, row1)); 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(3U, CountRecords()); 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutocompleteActionPredictorTable::Row updated_row1; 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) db_->autocomplete_table()->GetRow(test_db_[1].id, &updated_row1); 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(RowsAreEqual(row1, updated_row1)) 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << "Expected: Row with id " << row1.id << "\n" 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << "Got: Row with id " << updated_row1.id; 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutocompleteActionPredictorTable::Row row0 = test_db_[0]; 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) row0.number_of_hits = row0.number_of_hits + 2; 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutocompleteActionPredictorTable::Row row2 = test_db_[2]; 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) row2.number_of_hits = row2.number_of_hits + 2; 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutocompleteActionPredictorTable::Rows rows_to_update; 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rows_to_update.push_back(row0); 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rows_to_update.push_back(row2); 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) db_->autocomplete_table()->AddAndUpdateRows( 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutocompleteActionPredictorTable::Rows(), 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) rows_to_update); 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(3U, CountRecords()); 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutocompleteActionPredictorTable::Row updated_row0, updated_row2; 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) db_->autocomplete_table()->GetRow(test_db_[0].id, &updated_row0); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) db_->autocomplete_table()->GetRow(test_db_[2].id, &updated_row2); 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(RowsAreEqual(row0, updated_row0)) 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << "Expected: Row with id " << row0.id << "\n" 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << "Got: Row with id " << updated_row0.id; 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(RowsAreEqual(row2, updated_row2)) 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << "Expected: Row with id " << row2.id << "\n" 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) << "Got: Row with id " << updated_row2.id; 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AutocompleteActionPredictorTableTest::TestDeleteRows() { 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddAll(); 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) std::vector<AutocompleteActionPredictorTable::Row::Id> id_list; 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) id_list.push_back(test_db_[0].id); 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) id_list.push_back(test_db_[2].id); 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) db_->autocomplete_table()->DeleteRows(id_list); 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(test_db_.size() - 2, CountRecords()); 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AutocompleteActionPredictorTable::Row row; 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) db_->autocomplete_table()->GetRow(test_db_[1].id, &row); 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_TRUE(RowsAreEqual(test_db_[1], row)); 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AutocompleteActionPredictorTableTest::TestDeleteAllRows() { 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) AddAll(); 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) db_->autocomplete_table()->DeleteAllRows(); 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) EXPECT_EQ(0U, CountRecords()); 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// AutocompleteActionPredictorTableTest tests 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(AutocompleteActionPredictorTableTest, GetRow) { 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestGetRow(); 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(AutocompleteActionPredictorTableTest, AddAndUpdateRows) { 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestAddAndUpdateRows(); 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(AutocompleteActionPredictorTableTest, DeleteRows) { 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestDeleteRows(); 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(AutocompleteActionPredictorTableTest, DeleteAllRows) { 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestDeleteAllRows(); 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// AutocompleteActionPredictorTableReopenTest tests 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(AutocompleteActionPredictorTableReopenTest, GetRow) { 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestGetRow(); 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(AutocompleteActionPredictorTableReopenTest, AddAndUpdateRows) { 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestAddAndUpdateRows(); 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(AutocompleteActionPredictorTableReopenTest, DeleteRows) { 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestDeleteRows(); 2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TEST_F(AutocompleteActionPredictorTableReopenTest, DeleteAllRows) { 2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) TestDeleteAllRows(); 2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace predictors 240