| 
									
										
										
										
											2017-08-21 12:00:27 +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.
 | 
					
						
							|  |  |  | ** | 
					
						
							|  |  |  | ****************************************************************************/ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #pragma once
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:59 +02:00
										 |  |  | #include "mocksqlitedatabase.h"
 | 
					
						
							| 
									
										
										
										
											2017-08-21 12:00:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-15 17:33:31 +02:00
										 |  |  | #include <sourcelocations.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:59 +02:00
										 |  |  | #include <filepathstoragesources.h>
 | 
					
						
							|  |  |  | #include <stringcachefwd.h>
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:11:28 +01:00
										 |  |  | #include <projectpartartefact.h>
 | 
					
						
							| 
									
										
										
										
											2017-08-21 12:00:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-18 13:38:58 +02:00
										 |  |  | #include <cpptools/usages.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:24 +02:00
										 |  |  | #include <utils/optional.h>
 | 
					
						
							| 
									
										
										
										
											2017-08-21 12:00:27 +02:00
										 |  |  | #include <utils/smallstring.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <cstdint>
 | 
					
						
							|  |  |  | #include <tuple>
 | 
					
						
							|  |  |  | #include <vector>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | using std::int64_t; | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:59 +02:00
										 |  |  | using ClangRefactoring::SourceLocation; | 
					
						
							|  |  |  | using ClangRefactoring::SourceLocations; | 
					
						
							|  |  |  | namespace Sources = ClangBackEnd::Sources; | 
					
						
							| 
									
										
										
										
											2017-08-21 12:00:27 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | class MockSqliteReadStatement | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     MockSqliteReadStatement() = default; | 
					
						
							|  |  |  |     MockSqliteReadStatement(Utils::SmallStringView sqlStatement, MockSqliteDatabase &) | 
					
						
							|  |  |  |         : sqlStatement(sqlStatement) | 
					
						
							|  |  |  |     {} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:59 +02:00
										 |  |  |     MOCK_METHOD4(valuesReturnSourceLocations, | 
					
						
							|  |  |  |                  SourceLocations(std::size_t, int, int, int)); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-18 13:38:58 +02:00
										 |  |  |     MOCK_METHOD4(valuesReturnSourceUsages, | 
					
						
							|  |  |  |                  CppTools::Usages(std::size_t, int, int, int)); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:59 +02:00
										 |  |  |     MOCK_METHOD1(valuesReturnStdVectorDirectory, | 
					
						
							|  |  |  |                  std::vector<Sources::Directory>(std::size_t)); | 
					
						
							| 
									
										
										
										
											2017-08-21 12:00:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:59 +02:00
										 |  |  |     MOCK_METHOD1(valuesReturnStdVectorSource, | 
					
						
							|  |  |  |                  std::vector<Sources::Source>(std::size_t)); | 
					
						
							| 
									
										
										
										
											2017-08-21 12:00:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:59 +02:00
										 |  |  |     MOCK_METHOD1(valueReturnInt32, | 
					
						
							|  |  |  |                  Utils::optional<int>(Utils::SmallStringView)); | 
					
						
							| 
									
										
										
										
											2017-08-21 12:00:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:59 +02:00
										 |  |  |     MOCK_METHOD2(valueReturnInt32, | 
					
						
							|  |  |  |                  Utils::optional<int>(int, Utils::SmallStringView)); | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:24 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:59 +02:00
										 |  |  |     MOCK_METHOD1(valueReturnPathString, | 
					
						
							|  |  |  |                  Utils::optional<Utils::PathString>(int)); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     MOCK_METHOD1(valueReturnSmallString, | 
					
						
							|  |  |  |                  Utils::optional<Utils::SmallString>(int)); | 
					
						
							| 
									
										
										
										
											2017-08-21 12:00:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-06 11:16:29 +01:00
										 |  |  |     MOCK_METHOD1(valueReturnProjectPartArtefact, | 
					
						
							|  |  |  |                  Utils::optional<ClangBackEnd::ProjectPartArtefact>(int)); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:18:16 +01:00
										 |  |  |     MOCK_METHOD1(valueReturnProjectPartArtefact, | 
					
						
							|  |  |  |                  Utils::optional<ClangBackEnd::ProjectPartArtefact>(Utils::SmallStringView)); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-15 17:33:31 +02:00
										 |  |  |     template <typename ResultType, | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:24 +02:00
										 |  |  |               int ResultTypeCount = 1, | 
					
						
							| 
									
										
										
										
											2017-08-21 12:00:27 +02:00
										 |  |  |               typename... QueryType> | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:24 +02:00
										 |  |  |     std::vector<ResultType> values(std::size_t reserveSize, const QueryType&... queryValues); | 
					
						
							| 
									
										
										
										
											2017-08-21 12:00:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:59 +02:00
										 |  |  |     template <typename ResultType, | 
					
						
							|  |  |  |               int ResultTypeCount = 1, | 
					
						
							|  |  |  |               typename... QueryType> | 
					
						
							|  |  |  |     std::vector<ResultType> values(std::size_t reserveSize); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-15 17:33:31 +02:00
										 |  |  |     template <typename ResultType, | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:24 +02:00
										 |  |  |               int ResultTypeCount = 1, | 
					
						
							| 
									
										
										
										
											2017-08-15 17:33:31 +02:00
										 |  |  |               template <typename...> class QueryContainerType, | 
					
						
							|  |  |  |               typename QueryElementType> | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:24 +02:00
										 |  |  |     std::vector<ResultType> values(std::size_t reserveSize, | 
					
						
							|  |  |  |                                    const QueryContainerType<QueryElementType> &queryValues); | 
					
						
							| 
									
										
										
										
											2017-08-21 12:00:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:24 +02:00
										 |  |  |     template <typename ResultType, | 
					
						
							| 
									
										
										
										
											2018-02-06 11:16:29 +01:00
										 |  |  |               int ResultTypeCount = 1, | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:24 +02:00
										 |  |  |               typename... QueryTypes> | 
					
						
							|  |  |  |     Utils::optional<ResultType> value(const QueryTypes&... queryValues); | 
					
						
							| 
									
										
										
										
											2017-08-21 12:00:27 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  |     Utils::SmallString sqlStatement; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | template <> | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:59 +02:00
										 |  |  | SourceLocations | 
					
						
							|  |  |  | MockSqliteReadStatement::values<SourceLocation, 4>( | 
					
						
							|  |  |  |         std::size_t reserveSize, | 
					
						
							|  |  |  |         const int &sourceId, | 
					
						
							|  |  |  |         const int &line, | 
					
						
							|  |  |  |         const int &column); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-10-18 13:38:58 +02:00
										 |  |  | template <> | 
					
						
							|  |  |  | CppTools::Usages | 
					
						
							|  |  |  | MockSqliteReadStatement::values<CppTools::Usage, 3>( | 
					
						
							|  |  |  |         std::size_t reserveSize, | 
					
						
							|  |  |  |         const int &sourceId, | 
					
						
							|  |  |  |         const int &line, | 
					
						
							|  |  |  |         const int &column); | 
					
						
							| 
									
										
										
										
											2017-08-21 12:00:27 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | template <> | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:59 +02:00
										 |  |  | std::vector<Sources::Directory> MockSqliteReadStatement::values<Sources::Directory, 2>(std::size_t reserveSize); | 
					
						
							| 
									
										
										
										
											2017-08-21 12:00:27 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | template <> | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:59 +02:00
										 |  |  | std::vector<Sources::Source> MockSqliteReadStatement::values<Sources::Source, 2>(std::size_t reserveSize); | 
					
						
							| 
									
										
										
										
											2017-08-21 12:00:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:59 +02:00
										 |  |  | template <> | 
					
						
							|  |  |  | Utils::optional<int> | 
					
						
							|  |  |  | MockSqliteReadStatement::value<int>(const Utils::SmallStringView&); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-01-22 14:21:01 +01:00
										 |  |  | template <> | 
					
						
							|  |  |  | Utils::optional<int> | 
					
						
							|  |  |  | MockSqliteReadStatement::value<int>(const Utils::PathString&); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:59 +02:00
										 |  |  | template <> | 
					
						
							|  |  |  | Utils::optional<int> | 
					
						
							|  |  |  | MockSqliteReadStatement::value<int>(const int&, const Utils::SmallStringView&); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | template <> | 
					
						
							|  |  |  | Utils::optional<Utils::PathString> | 
					
						
							|  |  |  | MockSqliteReadStatement::value<Utils::PathString>(const int&); | 
					
						
							| 
									
										
										
										
											2017-08-21 12:00:27 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-06 11:16:29 +01:00
										 |  |  | template <> | 
					
						
							|  |  |  | Utils::optional<ClangBackEnd::ProjectPartArtefact> | 
					
						
							|  |  |  | MockSqliteReadStatement::value<ClangBackEnd::ProjectPartArtefact, 3>(const int&); | 
					
						
							| 
									
										
										
										
											2018-01-22 14:21:01 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-02-07 16:18:16 +01:00
										 |  |  | template <> | 
					
						
							|  |  |  | Utils::optional<ClangBackEnd::ProjectPartArtefact> | 
					
						
							|  |  |  | MockSqliteReadStatement::value<ClangBackEnd::ProjectPartArtefact, 3>(const Utils::SmallStringView&); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:24 +02:00
										 |  |  | template <> | 
					
						
							| 
									
										
										
										
											2017-09-21 11:43:59 +02:00
										 |  |  | Utils::optional<Utils::SmallString> | 
					
						
							|  |  |  | MockSqliteReadStatement::value<Utils::SmallString>(const int&); |