Kodi Documentation 22.0
Kodi is an open source media player and entertainment hub.
Loading...
Searching...
No Matches
TestVPrepare.cpp File Reference
#include "dbwrappers/sqlitedataset.h"
#include <array>
#include <cstdint>
#include <string>
#include <gtest/gtest.h>

Classes

struct  EscapeConversionsTest
 
class  EscapeConversionsTester
 
struct  VPrepareNoParamTest
 
class  VPrepareNoParamTester
 
struct  VPrepareStringParamTest
 
class  VPrepareStringParamTester
 
struct  VPrepareInt64ParamTest
 
class  VPrepareInt64ParamTester
 

Functions

 TEST_P (EscapeConversionsTester, EscapeStringConversions)
 
 INSTANTIATE_TEST_SUITE_P (TestDbWrappers, EscapeConversionsTester, testing::ValuesIn(EscapeConversionsTests))
 
 TEST_P (VPrepareNoParamTester, Sqlite)
 
 INSTANTIATE_TEST_SUITE_P (TestDbWrappers, VPrepareNoParamTester, testing::ValuesIn(VPrepareNoParamTests))
 
 TEST_P (VPrepareStringParamTester, Sqlite)
 
 INSTANTIATE_TEST_SUITE_P (TestDbWrappers, VPrepareStringParamTester, testing::ValuesIn(VPrepareStringParamTests))
 
 TEST_P (VPrepareInt64ParamTester, Sqlite)
 
 INSTANTIATE_TEST_SUITE_P (TestDbWrappers, VPrepareInt64ParamTester, testing::ValuesIn(VPrepareInt64ParamTests))
 
 TEST (VPrepareInt64Param, ALiteralPercentBetweenConversionsSqlite)
 

Variables

const auto EscapeConversionsTests
 
const auto VPrepareNoParamTests
 
const auto VPrepareStringParamTests
 
const auto VPrepareInt64ParamTests
 

Function Documentation

◆ INSTANTIATE_TEST_SUITE_P() [1/4]

INSTANTIATE_TEST_SUITE_P ( TestDbWrappers ,
EscapeConversionsTester ,
testing::ValuesIn(EscapeConversionsTests)  )

◆ INSTANTIATE_TEST_SUITE_P() [2/4]

INSTANTIATE_TEST_SUITE_P ( TestDbWrappers ,
VPrepareInt64ParamTester ,
testing::ValuesIn(VPrepareInt64ParamTests)  )

◆ INSTANTIATE_TEST_SUITE_P() [3/4]

INSTANTIATE_TEST_SUITE_P ( TestDbWrappers ,
VPrepareNoParamTester ,
testing::ValuesIn(VPrepareNoParamTests)  )

◆ INSTANTIATE_TEST_SUITE_P() [4/4]

INSTANTIATE_TEST_SUITE_P ( TestDbWrappers ,
VPrepareStringParamTester ,
testing::ValuesIn(VPrepareStringParamTests)  )

◆ TEST()

TEST ( VPrepareInt64Param ,
ALiteralPercentBetweenConversionsSqlite  )

A literal percent next to two 64-bit conversions: the escaping pass steps over a conversion two characters at a time, so this is where it would lose its place and swap the arguments.

◆ TEST_P() [1/4]

TEST_P ( EscapeConversionsTester ,
EscapeStringConversions  )

◆ TEST_P() [2/4]

TEST_P ( VPrepareInt64ParamTester ,
Sqlite  )

◆ TEST_P() [3/4]

TEST_P ( VPrepareNoParamTester ,
Sqlite  )

◆ TEST_P() [4/4]

TEST_P ( VPrepareStringParamTester ,
Sqlite  )

Variable Documentation

◆ EscapeConversionsTests

const auto EscapeConversionsTests
Initial value:
= std::array{
EscapeConversionsTest{"SELECT foo", "SELECT foo"},
EscapeConversionsTest{"%s", "%q"},
EscapeConversionsTest{"WHERE name = '%s'", "WHERE name = '%q'"},
EscapeConversionsTest{"%s%s", "%q%q"},
EscapeConversionsTest{"%%s", "%%s"},
EscapeConversionsTest{"strftime(\"%%s\",c01)", "strftime(\"%%s\",c01)"},
EscapeConversionsTest{"'%%%s%%'", "'%%%q%%'"},
EscapeConversionsTest{"'%%%s'", "'%%%q'"},
EscapeConversionsTest{"'%s%%'", "'%q%%'"},
EscapeConversionsTest{"%%s '%s'", "%%s '%q'"},
EscapeConversionsTest{"%i %s", "%i %q"},
EscapeConversionsTest{"WHERE c%02d LIKE '%%%s%%'", "WHERE c%02d LIKE '%%%q%%'"},
EscapeConversionsTest{"100%", "100%"},
}
Definition TestVPrepare.cpp:53

◆ VPrepareInt64ParamTests

const auto VPrepareInt64ParamTests
Initial value:
= std::array{
VPrepareInt64ParamTest{"WHERE iEndTime > %lld", 0, "WHERE iEndTime > 0"},
VPrepareInt64ParamTest{"WHERE iEndTime > %lld", 4102444740, "WHERE iEndTime > 4102444740"},
VPrepareInt64ParamTest{"WHERE iEndTime > %lld", 7258118400, "WHERE iEndTime > 7258118400"},
VPrepareInt64ParamTest{"WHERE iEndTime > %lld", -2208988800, "WHERE iEndTime > -2208988800"},
}
Definition TestVPrepare.cpp:206

◆ VPrepareNoParamTests

const auto VPrepareNoParamTests
Initial value:
= std::array{
VPrepareNoParamTest{"foo", "foo", "foo"},
VPrepareNoParamTest{"SELECT %%s", "SELECT %s", "SELECT %s"},
VPrepareNoParamTest{"SELECT %%", "SELECT %", "SELECT %"},
VPrepareNoParamTest{"SELECT %%foo", "SELECT %foo", "SELECT %foo"},
VPrepareNoParamTest{"strftime(\"%%s\",c01)", "strftime(\"%s\",c01)", "strftime(\"%s\",c01)"},
VPrepareNoParamTest{"CAST(strftime(\"%%s\",c01) AS INTEGER)",
"CAST(strftime(\"%s\",c01) AS INTEGER)",
"CAST(UNIX_TIMESTAMP(c01) AS SIGNED INTEGER)"},
VPrepareNoParamTest{"CAST(strftime(\"%%s\",c01) AS REAL)", "CAST(strftime(\"%s\",c01) AS REAL)",
"CAST(strftime(\"%s\",c01) AS REAL)"},
VPrepareNoParamTest{"SELECT RANDOM(), foo", "SELECT RANDOM(), foo", "SELECT RAND(), foo"},
VPrepareNoParamTest{"SELECT CAST(foo AS TEXT), bar", "SELECT CAST(foo AS TEXT), bar",
"SELECT CAST(foo AS CHAR), bar"},
VPrepareNoParamTest{"SELECT CAST(foo AS INTEGER), bar", "SELECT CAST(foo AS INTEGER), bar",
"SELECT CAST(foo AS SIGNED INTEGER), bar"},
VPrepareNoParamTest{"SELECT CAST(foo AS REAL), bar", "SELECT CAST(foo AS REAL), bar",
"SELECT CAST(foo AS REAL), bar"},
VPrepareNoParamTest{"SELECT foo COLLATE NOCASE, bar", "SELECT foo COLLATE NOCASE, bar",
"SELECT foo, bar"},
VPrepareNoParamTest{"SELECT foo COLLATE ALPHANUM, bar", "SELECT foo COLLATE ALPHANUM, bar",
"SELECT foo, bar"},
VPrepareNoParamTest{"SELECT foo COLLATE BINARY, bar", "SELECT foo COLLATE BINARY, bar",
"SELECT foo COLLATE BINARY, bar"},
}
Definition TestVPrepare.cpp:99

◆ VPrepareStringParamTests

const auto VPrepareStringParamTests
Initial value:
= std::array{
VPrepareStringParamTest{"WHERE name = '%s'", "O'Brien", "WHERE name = 'O''Brien'"},
VPrepareStringParamTest{"WHERE name LIKE '%%%s%%'", "O'Brien", "WHERE name LIKE '%O''Brien%'"},
VPrepareStringParamTest{"WHERE name LIKE '%%%s'", "O'Brien", "WHERE name LIKE '%O''Brien'"},
VPrepareStringParamTest{"WHERE name LIKE '%s%%'", "O'Brien", "WHERE name LIKE 'O''Brien%'"},
VPrepareStringParamTest{"CAST(strftime(\"%%s\",c01) AS REAL) = '%s'", "O'Brien",
"CAST(strftime(\"%s\",c01) AS REAL) = 'O''Brien'"},
}
Definition TestVPrepare.cpp:166