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 ;
2018-01-29 12:07:15 +01:00
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE TABLE IF NOT EXISTS projectParts(projectPartId INTEGER PRIMARY KEY, projectPartName TEXT, compilerArguments TEXT, macroNames TEXT) " ) ) ) ;
2017-12-27 16:52:04 +01:00
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-23 18:42:07 +01:00
TEST_F ( RefactoringDatabaseInitializer , AddProjectPartsSourcesTable )
2018-01-22 14:21:01 +01:00
{
InSequence s ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE TABLE IF NOT EXISTS projectPartsSources(projectPartId INTEGER, sourceId INTEGER) " ) ) ) ;
2018-01-30 15:23:49 +01:00
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE UNIQUE INDEX IF NOT EXISTS index_projectPartsSources_sourceId_projectPartId ON projectPartsSources(sourceId, projectPartId) " ) ) ) ;
2018-01-22 14:21:01 +01:00
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE INDEX IF NOT EXISTS index_projectPartsSources_projectPartId ON projectPartsSources(projectPartId) " ) ) ) ;
2018-01-23 18:42:07 +01:00
initializer . createProjectPartsSourcesTable ( ) ;
2018-01-22 14:21:01 +01:00
}
2018-01-25 15:20:47 +01:00
TEST_F ( RefactoringDatabaseInitializer , AddUsedMacrosTable )
2018-01-23 18:42:39 +01:00
{
InSequence s ;
2018-01-25 15:20:47 +01:00
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE TABLE IF NOT EXISTS usedMacros(usedMacroId INTEGER PRIMARY KEY, sourceId INTEGER, macroName TEXT) " ) ) ) ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE INDEX IF NOT EXISTS index_usedMacros_sourceId_macroName ON usedMacros(sourceId, macroName) " ) ) ) ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE INDEX IF NOT EXISTS index_usedMacros_macroName ON usedMacros(macroName) " ) ) ) ;
2018-01-23 18:42:39 +01:00
2018-01-25 15:20:47 +01:00
initializer . createUsedMacrosTable ( ) ;
2018-01-23 18:42:39 +01:00
}
2018-01-29 15:15:44 +01:00
TEST_F ( RefactoringDatabaseInitializer , AddFileInformationsTable )
{
InSequence s ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE TABLE IF NOT EXISTS fileInformations(sourceId INTEGER PRIMARY KEY, size INTEGER, lastModified INTEGER) " ) ) ) ;
initializer . createFileInformationsTable ( ) ;
}
2018-01-30 14:34:06 +01:00
TEST_F ( RefactoringDatabaseInitializer , AddSourceDependenciesTable )
{
InSequence s ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE TABLE IF NOT EXISTS sourceDependencies(sourceId INTEGER, dependencySourceId INTEGER) " ) ) ) ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE INDEX IF NOT EXISTS index_sourceDependencies_sourceId_dependencySourceId ON sourceDependencies(sourceId, dependencySourceId) " ) ) ) ;
initializer . createSourceDependenciesTable ( ) ;
}
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) " ) ) ) ;
2018-01-29 12:07:15 +01:00
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE TABLE IF NOT EXISTS projectParts(projectPartId INTEGER PRIMARY KEY, projectPartName TEXT, compilerArguments TEXT, macroNames TEXT) " ) ) ) ;
2017-12-27 16:52:04 +01:00
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) " ) ) ) ;
2018-01-30 15:23:49 +01:00
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE UNIQUE INDEX IF NOT EXISTS index_projectPartsSources_sourceId_projectPartId ON projectPartsSources(sourceId, projectPartId) " ) ) ) ;
2018-01-22 14:21:01 +01:00
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE INDEX IF NOT EXISTS index_projectPartsSources_projectPartId ON projectPartsSources(projectPartId) " ) ) ) ;
2018-01-25 15:20:47 +01:00
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE TABLE IF NOT EXISTS usedMacros(usedMacroId INTEGER PRIMARY KEY, sourceId INTEGER, macroName TEXT) " ) ) ) ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE INDEX IF NOT EXISTS index_usedMacros_sourceId_macroName ON usedMacros(sourceId, macroName) " ) ) ) ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE INDEX IF NOT EXISTS index_usedMacros_macroName ON usedMacros(macroName) " ) ) ) ;
2018-01-29 15:15:44 +01:00
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE TABLE IF NOT EXISTS fileInformations(sourceId INTEGER PRIMARY KEY, size INTEGER, lastModified INTEGER) " ) ) ) ;
2018-01-30 14:34:06 +01:00
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE TABLE IF NOT EXISTS sourceDependencies(sourceId INTEGER, dependencySourceId INTEGER) " ) ) ) ;
EXPECT_CALL ( mockDatabase , execute ( Eq ( " CREATE INDEX IF NOT EXISTS index_sourceDependencies_sourceId_dependencySourceId ON sourceDependencies(sourceId, dependencySourceId) " ) ) ) ;
2018-01-22 14:21:01 +01:00
EXPECT_CALL ( mockDatabase , commit ( ) ) ;
2017-09-19 17:56:54 +02:00
Initializer initializer { mockDatabase } ;
}
}