Adding test for issue 1729. (#1730)
* Adding test for issue 1729. * Adding comment. * Trying to move to 11.7. * Tweaking. * More tweaking. * Adding additional test. * Missing "<<". * Minor update. * Removing legacy systems.
This commit is contained in:
parent
4a2f10ebcf
commit
b7c4d1eeef
42
.drone.yml
42
.drone.yml
|
@ -1,46 +1,4 @@
|
||||||
kind: pipeline
|
kind: pipeline
|
||||||
name: i386-gcc # we do not support 32-bit systems, but we run tests
|
|
||||||
platform: { os: linux, arch: amd64 }
|
|
||||||
steps:
|
|
||||||
- name: Build and Test
|
|
||||||
image: i386/ubuntu
|
|
||||||
environment:
|
|
||||||
CC: gcc
|
|
||||||
CXX: g++
|
|
||||||
BUILD_FLAGS: -- -j
|
|
||||||
CMAKE_FLAGS: -DBUILD_SHARED_LIBS=OFF
|
|
||||||
CTEST_FLAGS: -j4 --output-on-failure -LE explicitonly
|
|
||||||
commands:
|
|
||||||
- scripts/addcmakeppa.sh "$(env -i sh -c '. /etc/os-release; echo $VERSION_CODENAME')"
|
|
||||||
- apt-get install -y g++ cmake gcc git
|
|
||||||
- mkdir build
|
|
||||||
- cd build
|
|
||||||
- cmake $CMAKE_FLAGS ..
|
|
||||||
- cmake --build . $BUILD_FLAGS
|
|
||||||
- ctest $CTEST_FLAGS
|
|
||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
name: i386-clang # we do not support 32-bit systems, but we run tests
|
|
||||||
platform: { os: linux, arch: amd64 }
|
|
||||||
steps:
|
|
||||||
- name: Build and Test
|
|
||||||
image: i386/ubuntu
|
|
||||||
environment:
|
|
||||||
CC: clang-6.0
|
|
||||||
CXX: clang++-6.0
|
|
||||||
BUILD_FLAGS: -- -j
|
|
||||||
CMAKE_FLAGS: -DBUILD_SHARED_LIBS=OFF
|
|
||||||
CTEST_FLAGS: -j4 --output-on-failure -LE explicitonly
|
|
||||||
commands:
|
|
||||||
- scripts/addcmakeppa.sh "$(env -i sh -c '. /etc/os-release; echo $VERSION_CODENAME')"
|
|
||||||
- apt-get install -y clang++-6.0 cmake git
|
|
||||||
- mkdir build
|
|
||||||
- cd build
|
|
||||||
- cmake $CMAKE_FLAGS ..
|
|
||||||
- cmake --build . $BUILD_FLAGS
|
|
||||||
- ctest $CTEST_FLAGS
|
|
||||||
---
|
|
||||||
kind: pipeline
|
|
||||||
name: gcc9
|
name: gcc9
|
||||||
platform: { os: linux, arch: amd64 }
|
platform: { os: linux, arch: amd64 }
|
||||||
steps:
|
steps:
|
||||||
|
|
|
@ -9,10 +9,190 @@ namespace document_stream_tests {
|
||||||
bool process_doc(T &docref) {
|
bool process_doc(T &docref) {
|
||||||
int64_t val;
|
int64_t val;
|
||||||
ASSERT_SUCCESS(docref.at_pointer("/4").get(val));
|
ASSERT_SUCCESS(docref.at_pointer("/4").get(val));
|
||||||
//ASSERT_SUCCESS(err);
|
|
||||||
ASSERT_EQUAL(val, 5);
|
ASSERT_EQUAL(val, 5);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
bool truncated_utf8() {
|
||||||
|
TEST_START();
|
||||||
|
// truncated UTF-8
|
||||||
|
auto json = "\"document1\" \xC3"_padded;
|
||||||
|
|
||||||
|
ondemand::parser parser;
|
||||||
|
ondemand::document_stream stream;
|
||||||
|
auto oderror = parser.iterate_many(json).get(stream);
|
||||||
|
if (oderror) {
|
||||||
|
std::cerr << "ondemand iterate_many error: " << oderror << std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
int document_index = 0;
|
||||||
|
auto i = stream.begin();
|
||||||
|
for (; i != stream.end(); ++i) {
|
||||||
|
ondemand::document_reference doc;
|
||||||
|
auto err = (*i).get(doc);
|
||||||
|
document_index++;
|
||||||
|
// With the fallback routine, we might detect a 'document' since
|
||||||
|
// it does not do UTF-8 validation in stage one, but it will do
|
||||||
|
// so when we access the document.
|
||||||
|
if(err == SUCCESS) {
|
||||||
|
ondemand::json_type t;
|
||||||
|
err = doc.type().get(t);
|
||||||
|
}
|
||||||
|
if((err == SUCCESS) && (document_index != 1)) {
|
||||||
|
std::cerr << "Only the first document should be valid." << std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if((err != SUCCESS) && (document_index != 2)) {
|
||||||
|
std::cerr << "ondemand iterate_many error: " << err << std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(document_index < 1) {
|
||||||
|
std::cerr << "ondemand should have accessed at least one document" << std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
TEST_SUCCEED();
|
||||||
|
}
|
||||||
|
bool issue1729() {
|
||||||
|
// This example is not a good application of iterate_many since there is
|
||||||
|
// a single JSON document.
|
||||||
|
TEST_START();
|
||||||
|
auto json = R"({
|
||||||
|
"t": 5649,
|
||||||
|
"ng": 5,
|
||||||
|
"lu": 4086,
|
||||||
|
"g": [{
|
||||||
|
"t": "Temps",
|
||||||
|
"xvy": 0,
|
||||||
|
"pd": 60,
|
||||||
|
"sz": 3,
|
||||||
|
"l": [
|
||||||
|
"Low Temp",
|
||||||
|
"High Temp",
|
||||||
|
"Smooth Avg"
|
||||||
|
],
|
||||||
|
"c": [
|
||||||
|
"green",
|
||||||
|
"orange",
|
||||||
|
"cyan"
|
||||||
|
],
|
||||||
|
"d": [
|
||||||
|
80.48750305,
|
||||||
|
80.82499694,
|
||||||
|
80.65625
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": "Pump Status",
|
||||||
|
"xvy": 0,
|
||||||
|
"pd": 60,
|
||||||
|
"sz": 3,
|
||||||
|
"l": [
|
||||||
|
"Pump",
|
||||||
|
"Thermal",
|
||||||
|
"Light"
|
||||||
|
],
|
||||||
|
"c": [
|
||||||
|
"green",
|
||||||
|
"orange",
|
||||||
|
"cyan"
|
||||||
|
],
|
||||||
|
"d": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": "Lux",
|
||||||
|
"xvy": 0,
|
||||||
|
"pd": 60,
|
||||||
|
"sz": 4,
|
||||||
|
"l": [
|
||||||
|
"Value",
|
||||||
|
"Smooth",
|
||||||
|
"Low",
|
||||||
|
"High"
|
||||||
|
],
|
||||||
|
"c": [
|
||||||
|
"green",
|
||||||
|
"orange",
|
||||||
|
"cyan",
|
||||||
|
"yellow"
|
||||||
|
],
|
||||||
|
"d": [
|
||||||
|
2274.62939453,
|
||||||
|
2277.45947265,
|
||||||
|
4050,
|
||||||
|
4500
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": "Temp Diff",
|
||||||
|
"xvy": 0,
|
||||||
|
"pd": 60,
|
||||||
|
"sz": 4,
|
||||||
|
"l": [
|
||||||
|
"dFarenheit",
|
||||||
|
"sum",
|
||||||
|
"Low",
|
||||||
|
"High"
|
||||||
|
],
|
||||||
|
"c": [
|
||||||
|
"green",
|
||||||
|
"orange",
|
||||||
|
"cyan",
|
||||||
|
"yellow"
|
||||||
|
],
|
||||||
|
"d": [
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
0.5,
|
||||||
|
10
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"t": "Power",
|
||||||
|
"xvy": 0,
|
||||||
|
"pd": 60,
|
||||||
|
"sz": 3,
|
||||||
|
"l": [
|
||||||
|
"watts (est. ligth) ",
|
||||||
|
"watts (1.9~gpm) ",
|
||||||
|
"watts (1gpm) "
|
||||||
|
],
|
||||||
|
"c": [
|
||||||
|
"green",
|
||||||
|
"orange",
|
||||||
|
"cyan"
|
||||||
|
],
|
||||||
|
"d": [
|
||||||
|
181.78063964,
|
||||||
|
114.88922882,
|
||||||
|
59.35943603
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
})"_padded;
|
||||||
|
|
||||||
|
ondemand::parser parser;
|
||||||
|
ondemand::document_stream stream;
|
||||||
|
auto oderror = parser.iterate_many(json).get(stream);
|
||||||
|
if (oderror) {
|
||||||
|
std::cerr << "ondemand iterate_many error: " << oderror << std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
auto i = stream.begin();
|
||||||
|
for (; i != stream.end(); ++i) {
|
||||||
|
ondemand::document_reference doc;
|
||||||
|
auto err = (*i).get(doc);
|
||||||
|
if(err != SUCCESS) {
|
||||||
|
std::cerr << "ondemand iterate_many error: " << err << std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TEST_SUCCEED();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
bool issue1683() {
|
bool issue1683() {
|
||||||
TEST_START();
|
TEST_START();
|
||||||
|
@ -536,6 +716,8 @@ namespace document_stream_tests {
|
||||||
|
|
||||||
bool run() {
|
bool run() {
|
||||||
return
|
return
|
||||||
|
truncated_utf8() &&
|
||||||
|
issue1729() &&
|
||||||
fuzzaccess() &&
|
fuzzaccess() &&
|
||||||
issue1683() &&
|
issue1683() &&
|
||||||
issue1668() &&
|
issue1668() &&
|
||||||
|
|
Loading…
Reference in New Issue