Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
C
caosdb-cppinttest
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Iterations
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
caosdb
Software
caosdb-cppinttest
Commits
0f1fb0fb
Verified
Commit
0f1fb0fb
authored
2 years ago
by
Timm Fitschen
Browse files
Options
Downloads
Patches
Plain Diff
TST: more tests for select queries
parent
a0c74115
Branches
Branches containing commit
Tags
Tags containing commit
2 merge requests
!28
Release 0.2.2
,
!27
F grpc select
Pipeline
#30636
failed
2 years ago
Stage: info
Stage: setup
Stage: build
Stage: test
Changes
1
Pipelines
3
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
test/test_select.cpp
+149
-21
149 additions, 21 deletions
test/test_select.cpp
with
149 additions
and
21 deletions
test/test_select.cpp
+
149
−
21
View file @
0f1fb0fb
...
...
@@ -26,7 +26,7 @@
#include
"caosdb/transaction.h"
// for Transaction, ResultTable
#include
"caosdb/value.h"
// for Value
#include
<gtest/gtest-message.h>
// for Message
#include
<gtest/gtest-spi.h>
// for EXPECT_NONFATAL_FA...
#include
<gtest/gtest-spi.h>
// for EXPECT_NONFATAL_FA...
#include
<gtest/gtest-test-part.h>
// for SuiteApiResolver, TestFactoryImpl
#include
<gtest/gtest_pred_impl.h>
// for Test, TestInfo, EXPECT_EQ, TEST
#include
<iostream>
// for operator<<, basic_ostream::operat...
...
...
@@ -34,8 +34,8 @@
#include
<string>
// for string
namespace
caosdb
::
transaction
{
using
caosdb
::
entity
::
DataType
;
using
caosdb
::
entity
::
AtomicDataType
;
using
caosdb
::
entity
::
DataType
;
using
caosdb
::
entity
::
Entity
;
using
caosdb
::
entity
::
Parent
;
using
caosdb
::
entity
::
Property
;
...
...
@@ -56,11 +56,8 @@ public:
const
auto
&
connection
=
caosdb
::
connection
::
ConnectionManager
::
GetDefaultConnection
();
auto
query_transaction
(
connection
->
CreateTransaction
());
query_transaction
->
Query
(
"FIND Entity"
);
// query_transaction->Query("FIND Test*");
query_transaction
->
Execute
();
if
(
query_transaction
->
GetResultSet
().
size
()
>
0
)
{
std
::
cout
<<
"Cleanup: Deleting "
<<
query_transaction
->
GetResultSet
().
size
()
<<
" entities."
<<
std
::
endl
;
auto
delete_transaction
(
connection
->
CreateTransaction
());
for
(
const
Entity
&
entity
:
query_transaction
->
GetResultSet
())
{
delete_transaction
->
DeleteById
(
entity
.
GetId
());
...
...
@@ -69,7 +66,8 @@ public:
}
}
static
auto
CreateTestProp
(
const
std
::
string
&
name
,
AtomicDataType
data_type
,
bool
isList
=
false
)
->
Entity
{
static
auto
CreateTestProp
(
const
std
::
string
&
name
,
AtomicDataType
data_type
,
bool
isList
=
false
)
->
Entity
{
Entity
entity
;
entity
.
SetRole
(
Role
::
PROPERTY
);
entity
.
SetName
(
name
);
...
...
@@ -86,7 +84,8 @@ public:
return
entity
;
}
static
auto
CreateTestProp
(
const
std
::
string
&
name
,
const
std
::
string
&
data_type
,
bool
isList
=
false
)
->
Entity
{
static
auto
CreateTestProp
(
const
std
::
string
&
name
,
const
std
::
string
&
data_type
,
bool
isList
=
false
)
->
Entity
{
Entity
entity
;
entity
.
SetRole
(
Role
::
PROPERTY
);
entity
.
SetName
(
name
);
...
...
@@ -146,9 +145,11 @@ protected:
p
=
CreateTestProp
(
"TestPropBool"
,
AtomicDataType
::
BOOLEAN
);
insert_transaction
->
InsertEntity
(
&
p
);
// 3.
A
List Propert
y
// 3. List Propert
ies
p
=
CreateTestProp
(
"TestListTextProp"
,
AtomicDataType
::
TEXT
,
true
);
insert_transaction
->
InsertEntity
(
&
p
);
p
=
CreateTestProp
(
"TestListReferenceProp"
,
"TestRT2"
,
true
);
insert_transaction
->
InsertEntity
(
&
p
);
// 4. A Record which can be references by others
auto
reference_entity
=
test_select
::
CreateRecord
(
"TestProp3"
,
Value
(
"val3"
));
...
...
@@ -211,6 +212,27 @@ TEST_F(test_select, test_select_name) {
}
}
/*
* Test select description query on record type.
*/
TEST_F
(
test_select
,
test_select_property_description
)
{
const
auto
&
connection
=
caosdb
::
connection
::
ConnectionManager
::
GetDefaultConnection
();
auto
query_transaction
(
connection
->
CreateTransaction
());
query_transaction
->
Query
(
"SELECT TestPropDouble.description FROM Record TestRT2"
);
query_transaction
->
Execute
();
EXPECT_EQ
(
query_transaction
->
GetResultTable
().
GetHeader
().
size
(),
1
);
for
(
const
auto
&
column
:
query_transaction
->
GetResultTable
().
GetHeader
())
{
EXPECT_EQ
(
column
.
GetName
(),
"TestPropDouble.description"
);
}
EXPECT_EQ
(
query_transaction
->
GetResultTable
().
size
(),
1
);
for
(
const
auto
&
row
:
query_transaction
->
GetResultTable
().
GetRows
())
{
EXPECT_EQ
(
row
.
GetValue
(
"TestPropDouble.description"
).
GetAsString
(),
"Prop Description TestPropDouble"
);
}
}
/*
* Test select description query on record type.
*/
...
...
@@ -276,18 +298,60 @@ TEST_F(test_select, test_select_double) {
}
}
/*
* Test select double value query on record.
*/
TEST_F
(
test_select
,
test_select_value
)
{
const
auto
&
connection
=
caosdb
::
connection
::
ConnectionManager
::
GetDefaultConnection
();
auto
entity
=
test_select
::
CreateRecord
(
"TestPropDouble"
,
Value
(
2.123
));
test_select
::
InsertEntity
(
&
entity
);
auto
query_transaction
(
connection
->
CreateTransaction
());
query_transaction
->
Query
(
"SELECT TestPropDouble.value FROM Record TestRT"
);
query_transaction
->
Execute
();
EXPECT_EQ
(
query_transaction
->
GetResultTable
().
GetHeader
().
size
(),
1
);
for
(
const
auto
&
column
:
query_transaction
->
GetResultTable
().
GetHeader
())
{
EXPECT_EQ
(
column
.
GetName
(),
"TestPropDouble.value"
);
}
EXPECT_EQ
(
query_transaction
->
GetResultTable
().
size
(),
1
);
for
(
const
auto
&
row
:
query_transaction
->
GetResultTable
().
GetRows
())
{
EXPECT_TRUE
(
row
.
GetValue
(
"TestPropDouble.value"
).
IsDouble
());
EXPECT_EQ
(
row
.
GetValue
(
"TestPropDouble.value"
).
GetAsDouble
(),
2.123
);
}
}
/*
* Test select unit value query on record.
*/
TEST_F
(
test_select
,
test_select_unit
)
{
const
auto
&
connection
=
caosdb
::
connection
::
ConnectionManager
::
GetDefaultConnection
();
auto
query_transaction
(
connection
->
CreateTransaction
());
query_transaction
->
Query
(
"SELECT unit FROM PROPERTY TestPropDouble"
);
query_transaction
->
Execute
();
EXPECT_EQ
(
query_transaction
->
GetResultTable
().
GetHeader
().
size
(),
1
);
for
(
const
auto
&
column
:
query_transaction
->
GetResultTable
().
GetHeader
())
{
EXPECT_EQ
(
column
.
GetName
(),
"unit"
);
}
EXPECT_EQ
(
query_transaction
->
GetResultTable
().
size
(),
1
);
for
(
const
auto
&
row
:
query_transaction
->
GetResultTable
().
GetRows
())
{
EXPECT_EQ
(
row
.
GetValue
(
"unit"
).
GetAsString
(),
"m"
);
}
}
/*
* Test select unit value query on record.
*/
TEST_F
(
test_select
,
test_select_property_unit
)
{
const
auto
&
connection
=
caosdb
::
connection
::
ConnectionManager
::
GetDefaultConnection
();
auto
entity
=
test_select
::
CreateRecord
(
"TestPropDouble"
,
Value
(
2.123
));
test_select
::
InsertEntity
(
&
entity
);
auto
check
(
connection
->
CreateTransaction
());
check
->
Query
(
"FIND Record TestRT"
);
check
->
Execute
();
std
::
cout
<<
check
->
GetResultSet
().
at
(
0
).
ToString
()
<<
std
::
endl
;
auto
query_transaction
(
connection
->
CreateTransaction
());
query_transaction
->
Query
(
"SELECT TestPropDouble.unit FROM Record TestRT"
);
...
...
@@ -301,7 +365,8 @@ TEST_F(test_select, test_select_unit) {
for
(
const
auto
&
row
:
query_transaction
->
GetResultTable
().
GetRows
())
{
// TODO(tf): create bug report: this is an insertion/update problem
EXPECT_NONFATAL_FAILURE
({
EXPECT_EQ
(
row
.
GetValue
(
"TestPropDouble.unit"
).
GetAsString
(),
"m"
);
},
"TestPropDouble.unit"
);
EXPECT_NONFATAL_FAILURE
({
EXPECT_EQ
(
row
.
GetValue
(
"TestPropDouble.unit"
).
GetAsString
(),
"m"
);
},
"TestPropDouble.unit"
);
}
}
...
...
@@ -328,7 +393,8 @@ TEST_F(test_select, test_select_int) {
}
}
/* Test select boolean value query on record. */
TEST_F
(
test_select
,
test_select_boolean
)
{
/* Test select boolean value query on record. */
TEST_F
(
test_select
,
test_select_boolean
)
{
const
auto
&
connection
=
caosdb
::
connection
::
ConnectionManager
::
GetDefaultConnection
();
auto
entity
=
test_select
::
CreateRecord
(
"TestPropBool"
,
Value
(
true
));
test_select
::
InsertEntity
(
&
entity
);
...
...
@@ -356,7 +422,7 @@ TEST_F(test_select, test_select_reference) {
auto
get_id_of_ref_rec
(
connection
->
CreateTransaction
());
get_id_of_ref_rec
->
Query
(
"SELECT id FROM RECORD TestRT2"
);
get_id_of_ref_rec
->
Execute
();
auto
id
=
(
*
get_id_of_ref_rec
->
GetResultTable
().
GetRows
().
begin
()).
GetValue
(
"id"
).
GetAsString
();
auto
id
=
(
*
get_id_of_ref_rec
->
GetResultTable
().
GetRows
().
begin
()).
GetValue
(
"id"
).
GetAsString
();
auto
entity
=
test_select
::
CreateRecord
(
"TestRT2"
,
Value
(
id
));
test_select
::
InsertEntity
(
&
entity
);
...
...
@@ -375,6 +441,35 @@ TEST_F(test_select, test_select_reference) {
}
}
/*
* Test select the referenced id.
*/
TEST_F
(
test_select
,
test_select_reference_value
)
{
const
auto
&
connection
=
caosdb
::
connection
::
ConnectionManager
::
GetDefaultConnection
();
auto
get_id_of_ref_rec
(
connection
->
CreateTransaction
());
get_id_of_ref_rec
->
Query
(
"SELECT id, version FROM RECORD TestRT2"
);
get_id_of_ref_rec
->
Execute
();
auto
id
=
(
*
get_id_of_ref_rec
->
GetResultTable
().
GetRows
().
begin
()).
GetValue
(
"id"
).
GetAsString
();
auto
version
=
(
*
get_id_of_ref_rec
->
GetResultTable
().
GetRows
().
begin
()).
GetValue
(
"version"
).
GetAsString
();
auto
entity
=
test_select
::
CreateRecord
(
"TestRT2"
,
Value
(
id
));
test_select
::
InsertEntity
(
&
entity
);
auto
query_transaction
(
connection
->
CreateTransaction
());
query_transaction
->
Query
(
"SELECT TestRT2.value FROM Record TestRT"
);
query_transaction
->
Execute
();
EXPECT_EQ
(
query_transaction
->
GetResultTable
().
GetHeader
().
size
(),
1
);
for
(
const
auto
&
column
:
query_transaction
->
GetResultTable
().
GetHeader
())
{
EXPECT_EQ
(
column
.
GetName
(),
"TestRT2.value"
);
}
EXPECT_EQ
(
query_transaction
->
GetResultTable
().
size
(),
1
);
for
(
const
auto
&
row
:
query_transaction
->
GetResultTable
().
GetRows
())
{
EXPECT_EQ
(
row
.
GetValue
(
"TestRT2.value"
).
GetAsString
(),
id
+
"@"
+
version
);
}
}
/*
* Test select the referenced entity's property.
*/
...
...
@@ -383,7 +478,7 @@ TEST_F(test_select, test_select_reference_entitys_property) {
auto
get_id_of_ref_rec
(
connection
->
CreateTransaction
());
get_id_of_ref_rec
->
Query
(
"SELECT id FROM RECORD TestRT2"
);
get_id_of_ref_rec
->
Execute
();
auto
id
=
(
*
get_id_of_ref_rec
->
GetResultTable
().
GetRows
().
begin
()).
GetValue
(
"id"
).
GetAsString
();
auto
id
=
(
*
get_id_of_ref_rec
->
GetResultTable
().
GetRows
().
begin
()).
GetValue
(
"id"
).
GetAsString
();
auto
entity
=
test_select
::
CreateRecord
(
"TestRT2"
,
Value
(
id
));
test_select
::
InsertEntity
(
&
entity
);
...
...
@@ -410,7 +505,7 @@ TEST_F(test_select, test_select_reference_entitys_propertys_unit) {
auto
get_id_of_ref_rec
(
connection
->
CreateTransaction
());
get_id_of_ref_rec
->
Query
(
"SELECT id FROM RECORD TestRT2"
);
get_id_of_ref_rec
->
Execute
();
auto
id
=
(
*
get_id_of_ref_rec
->
GetResultTable
().
GetRows
().
begin
()).
GetValue
(
"id"
).
GetAsString
();
auto
id
=
(
*
get_id_of_ref_rec
->
GetResultTable
().
GetRows
().
begin
()).
GetValue
(
"id"
).
GetAsString
();
auto
entity
=
test_select
::
CreateRecord
(
"TestRT2"
,
Value
(
id
));
test_select
::
InsertEntity
(
&
entity
);
...
...
@@ -437,7 +532,7 @@ TEST_F(test_select, test_select_reference_entitys_propertys_description) {
auto
get_id_of_ref_rec
(
connection
->
CreateTransaction
());
get_id_of_ref_rec
->
Query
(
"SELECT id FROM RECORD TestRT2"
);
get_id_of_ref_rec
->
Execute
();
auto
id
=
(
*
get_id_of_ref_rec
->
GetResultTable
().
GetRows
().
begin
()).
GetValue
(
"id"
).
GetAsString
();
auto
id
=
(
*
get_id_of_ref_rec
->
GetResultTable
().
GetRows
().
begin
()).
GetValue
(
"id"
).
GetAsString
();
auto
entity
=
test_select
::
CreateRecord
(
"TestRT2"
,
Value
(
id
));
test_select
::
InsertEntity
(
&
entity
);
...
...
@@ -452,7 +547,8 @@ TEST_F(test_select, test_select_reference_entitys_propertys_description) {
EXPECT_EQ
(
query_transaction
->
GetResultTable
().
size
(),
1
);
for
(
const
auto
&
row
:
query_transaction
->
GetResultTable
().
GetRows
())
{
EXPECT_EQ
(
row
.
GetValue
(
"TestRT2.TestProp3.description"
).
GetAsString
(),
"Prop Description TestProp3"
);
EXPECT_EQ
(
row
.
GetValue
(
"TestRT2.TestProp3.description"
).
GetAsString
(),
"Prop Description TestProp3"
);
}
}
...
...
@@ -464,7 +560,7 @@ TEST_F(test_select, test_select_reference_entitys_propertys_name) {
auto
get_id_of_ref_rec
(
connection
->
CreateTransaction
());
get_id_of_ref_rec
->
Query
(
"SELECT id FROM RECORD TestRT2"
);
get_id_of_ref_rec
->
Execute
();
auto
id
=
(
*
get_id_of_ref_rec
->
GetResultTable
().
GetRows
().
begin
()).
GetValue
(
"id"
).
GetAsString
();
auto
id
=
(
*
get_id_of_ref_rec
->
GetResultTable
().
GetRows
().
begin
()).
GetValue
(
"id"
).
GetAsString
();
auto
entity
=
test_select
::
CreateRecord
(
"TestRT2"
,
Value
(
id
));
test_select
::
InsertEntity
(
&
entity
);
...
...
@@ -491,12 +587,12 @@ TEST_F(test_select, test_select_reference_entitys_propertys_id) {
auto
get_id_of_ref_rec
(
connection
->
CreateTransaction
());
get_id_of_ref_rec
->
Query
(
"SELECT id FROM RECORD TestRT2"
);
get_id_of_ref_rec
->
Execute
();
auto
id
=
(
*
get_id_of_ref_rec
->
GetResultTable
().
GetRows
().
begin
()).
GetValue
(
"id"
).
GetAsString
();
auto
id
=
(
*
get_id_of_ref_rec
->
GetResultTable
().
GetRows
().
begin
()).
GetValue
(
"id"
).
GetAsString
();
auto
get_id_of_prop
(
connection
->
CreateTransaction
());
get_id_of_prop
->
Query
(
"SELECT id FROM PROPERTY TestProp3"
);
get_id_of_prop
->
Execute
();
auto
pid
=
(
*
get_id_of_prop
->
GetResultTable
().
GetRows
().
begin
()).
GetValue
(
"id"
).
GetAsString
();
auto
pid
=
(
*
get_id_of_prop
->
GetResultTable
().
GetRows
().
begin
()).
GetValue
(
"id"
).
GetAsString
();
auto
entity
=
test_select
::
CreateRecord
(
"TestRT2"
,
Value
(
id
));
test_select
::
InsertEntity
(
&
entity
);
...
...
@@ -516,9 +612,9 @@ TEST_F(test_select, test_select_reference_entitys_propertys_id) {
}
/*
* Test select a list.
* Test select a list
(TEXT)
.
*/
TEST_F
(
test_select
,
test_select_list
)
{
TEST_F
(
test_select
,
test_select_list
_of_text
)
{
const
auto
&
connection
=
caosdb
::
connection
::
ConnectionManager
::
GetDefaultConnection
();
auto
entity
=
test_select
::
CreateRecord
(
"TestRT2"
,
Value
());
...
...
@@ -544,6 +640,38 @@ TEST_F(test_select, test_select_list) {
}
}
/*
* Test select a list (REFERENCE).
*/
TEST_F
(
test_select
,
test_select_list_of_reference
)
{
const
auto
&
connection
=
caosdb
::
connection
::
ConnectionManager
::
GetDefaultConnection
();
auto
get_id_of_ref_rec
(
connection
->
CreateTransaction
());
get_id_of_ref_rec
->
Query
(
"SELECT id FROM RECORD TestRT2"
);
get_id_of_ref_rec
->
Execute
();
auto
id
=
(
*
get_id_of_ref_rec
->
GetResultTable
().
GetRows
().
begin
()).
GetValue
(
"id"
).
GetAsString
();
auto
entity
=
test_select
::
CreateRecord
(
"TestRT2"
,
Value
());
Property
listp
;
listp
.
SetName
(
"TestListReferenceProp"
);
listp
.
SetValue
(
std
::
vector
<
std
::
string
>
{
id
,
id
,
id
});
entity
.
AppendProperty
(
listp
);
test_select
::
InsertEntity
(
&
entity
);
auto
query_transaction
(
connection
->
CreateTransaction
());
query_transaction
->
Query
(
"SELECT TestListReferenceProp FROM Record TestRT"
);
query_transaction
->
Execute
();
EXPECT_EQ
(
query_transaction
->
GetResultTable
().
GetHeader
().
size
(),
1
);
for
(
const
auto
&
column
:
query_transaction
->
GetResultTable
().
GetHeader
())
{
EXPECT_EQ
(
column
.
GetName
(),
"TestListReferenceProp"
);
}
EXPECT_EQ
(
query_transaction
->
GetResultTable
().
size
(),
1
);
for
(
const
auto
&
row
:
query_transaction
->
GetResultTable
().
GetRows
())
{
EXPECT_EQ
(
row
.
GetValue
(
"TestListReferenceProp"
).
GetAsVector
().
at
(
0
).
GetAsString
(),
id
);
EXPECT_EQ
(
row
.
GetValue
(
"TestListReferenceProp"
).
GetAsVector
().
at
(
1
).
GetAsString
(),
id
);
EXPECT_EQ
(
row
.
GetValue
(
"TestListReferenceProp"
).
GetAsVector
().
at
(
2
).
GetAsString
(),
id
);
}
}
}
// namespace caosdb::transaction
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment