2017-09-19 17:56:54 +02:00
/****************************************************************************
* *
* * Copyright ( C ) 2017 The Qt Company Ltd .
* * Contact : https : //www.qt.io/licensing/
* *
* * This file is part of Qt Creator .
* *
* * Commercial License Usage
* * Licensees holding valid commercial Qt licenses may use this file in
* * accordance with the commercial license agreement provided with the
* * Software or , alternatively , in accordance with the terms contained in
* * a written agreement between you and The Qt Company . For licensing terms
* * and conditions see https : //www.qt.io/terms-conditions. For further
* * information use the contact form at https : //www.qt.io/contact-us.
* *
* * GNU General Public License Usage
* * Alternatively , this file may be used under the terms of the GNU
* * General Public License version 3 as published by the Free Software
* * Foundation with exceptions as appearing in the file LICENSE . GPL3 - EXCEPT
* * included in the packaging of this file . Please review the following
* * information to ensure the GNU General Public License requirements will
* * be met : https : //www.gnu.org/licenses/gpl-3.0.html.
* *
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
# include "googletest.h"
# include <mocksqlitedatabase.h>
# include <refactoringdatabaseinitializer.h>
namespace {
using Initializer = ClangBackEnd : : RefactoringDatabaseInitializer < NiceMock < MockSqliteDatabase > > ;
using Sqlite : : Table ;
class RefactoringDatabaseInitializer : public testing : : Test
{
protected :
2018-01-22 14:21:01 +01:00
NiceMock < MockSqliteDatabase > mockDatabase ;
2017-09-19 17:56:54 +02:00
Initializer initializer { mockDatabase } ;
} ;
TEST_F ( RefactoringDatabaseInitializer , AddSymbolsTable )
{
InSequence s ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE TABLE IF NOT EXISTS symbols(symbolId INTEGER PRIMARY KEY, usr TEXT, symbolName TEXT) " ) ) ) ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE INDEX IF NOT EXISTS index_symbols_usr ON symbols(usr) " ) ) ) ;
initializer . createSymbolsTable ( ) ;
}
TEST_F ( RefactoringDatabaseInitializer , AddLocationsTable )
{
InSequence s ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE TABLE IF NOT EXISTS locations(symbolId INTEGER, line INTEGER, column INTEGER, sourceId INTEGER) " ) ) ) ;
2017-09-21 11:43:59 +02:00
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE INDEX IF NOT EXISTS index_locations_sourceId_line_column ON locations(sourceId, line, column) " ) ) ) ;
2017-09-19 17:56:54 +02:00
initializer . createLocationsTable ( ) ;
}
TEST_F ( RefactoringDatabaseInitializer , AddSourcesTable )
{
InSequence s ;
2017-09-21 11:43:59 +02:00
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE TABLE IF NOT EXISTS sources(sourceId INTEGER PRIMARY KEY, directoryId INTEGER, sourceName TEXT, sourceType INTEGER) " ) ) ) ;
2018-01-22 14:21:01 +01:00
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE INDEX IF NOT EXISTS index_sources_directoryId_sourceName ON sources(directoryId, sourceName) " ) ) ) ;
2017-09-19 17:56:54 +02:00
initializer . createSourcesTable ( ) ;
}
2017-09-21 11:43:59 +02:00
TEST_F ( RefactoringDatabaseInitializer , AddDirectoriesTable )
{
InSequence s ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE TABLE IF NOT EXISTS directories(directoryId INTEGER PRIMARY KEY, directoryPath TEXT) " ) ) ) ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE INDEX IF NOT EXISTS index_directories_directoryPath ON directories(directoryPath) " ) ) ) ;
2017-12-27 16:52:04 +01:00
2017-09-21 11:43:59 +02:00
initializer . createDirectoriesTable ( ) ;
}
2017-12-27 16:52:04 +01:00
TEST_F ( RefactoringDatabaseInitializer , AddProjectPartsTable )
{
InSequence s ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE TABLE IF NOT EXISTS projectParts(projectPartId INTEGER PRIMARY KEY, projectPartName TEXT, compilerArguments TEXT) " ) ) ) ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE INDEX IF NOT EXISTS index_projectParts_projectPartName ON projectParts(projectPartName) " ) ) ) ;
initializer . createProjectPartsTable ( ) ;
}
2017-09-19 17:56:54 +02:00
2018-01-22 14:21:01 +01:00
TEST_F ( RefactoringDatabaseInitializer , AddprojectPartsSourcesTable )
{
InSequence s ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE TABLE IF NOT EXISTS projectPartsSources(projectPartId INTEGER, sourceId INTEGER) " ) ) ) ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE INDEX IF NOT EXISTS index_projectPartsSources_sourceId_projectPartId ON projectPartsSources(sourceId, projectPartId) " ) ) ) ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE INDEX IF NOT EXISTS index_projectPartsSources_projectPartId ON projectPartsSources(projectPartId) " ) ) ) ;
initializer . createprojectPartsSourcesTable ( ) ;
}
2017-09-19 17:56:54 +02:00
TEST_F ( RefactoringDatabaseInitializer , CreateInTheContructor )
{
InSequence s ;
2018-01-22 14:21:01 +01:00
EXPECT_CALL ( mockDatabase , immediateBegin ( ) ) ;
2017-09-19 17:56:54 +02:00
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE TABLE IF NOT EXISTS symbols(symbolId INTEGER PRIMARY KEY, usr TEXT, symbolName TEXT) " ) ) ) ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE INDEX IF NOT EXISTS index_symbols_usr ON symbols(usr) " ) ) ) ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE TABLE IF NOT EXISTS locations(symbolId INTEGER, line INTEGER, column INTEGER, sourceId INTEGER) " ) ) ) ;
2017-09-21 11:43:59 +02:00
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE INDEX IF NOT EXISTS index_locations_sourceId_line_column ON locations(sourceId, line, column) " ) ) ) ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE TABLE IF NOT EXISTS sources(sourceId INTEGER PRIMARY KEY, directoryId INTEGER, sourceName TEXT, sourceType INTEGER) " ) ) ) ;
2018-01-22 14:21:01 +01:00
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE INDEX IF NOT EXISTS index_sources_directoryId_sourceName ON sources(directoryId, sourceName) " ) ) ) ;
2017-09-21 11:43:59 +02:00
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE TABLE IF NOT EXISTS directories(directoryId INTEGER PRIMARY KEY, directoryPath TEXT) " ) ) ) ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE INDEX IF NOT EXISTS index_directories_directoryPath ON directories(directoryPath) " ) ) ) ;
2017-12-27 16:52:04 +01:00
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE TABLE IF NOT EXISTS projectParts(projectPartId INTEGER PRIMARY KEY, projectPartName TEXT, compilerArguments TEXT) " ) ) ) ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE INDEX IF NOT EXISTS index_projectParts_projectPartName ON projectParts(projectPartName) " ) ) ) ;
2018-01-22 14:21:01 +01:00
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE TABLE IF NOT EXISTS projectPartsSources(projectPartId INTEGER, sourceId INTEGER) " ) ) ) ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE INDEX IF NOT EXISTS index_projectPartsSources_sourceId_projectPartId ON projectPartsSources(sourceId, projectPartId) " ) ) ) ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE INDEX IF NOT EXISTS index_projectPartsSources_projectPartId ON projectPartsSources(projectPartId) " ) ) ) ;
EXPECT_CALL ( mockDatabase , commit ( ) ) ;
2017-09-19 17:56:54 +02:00
Initializer initializer { mockDatabase } ;
}
}