Changed unit testing framework from Google Test to Catch

This commit is contained in:
Benoit Blanchon
2017-04-18 18:22:24 +02:00
parent f2ef338cb8
commit df541a2a22
266 changed files with 15955 additions and 146149 deletions

View File

@ -7,8 +7,8 @@
add_executable(IntegrationTests
gbathree.cpp
parse_print.cpp
round_trip.cpp
)
target_link_libraries(IntegrationTests gtest)
target_link_libraries(IntegrationTests catch)
add_test(IntegrationTests IntegrationTests)

View File

@ -6,210 +6,206 @@
// If you like this project, please add a star!
#include <ArduinoJson.h>
#include <gtest/gtest.h>
#include <catch.hpp>
class GbathreeBug : public testing::Test {
public:
GbathreeBug() : _object(_buffer.parseObject(getJson())) {}
protected:
char _json[1024];
TEST_CASE("Gbathree") {
DynamicJsonBuffer _buffer;
const JsonObject& _object;
private:
char* getJson() {
strcpy(_json,
"{\"protocol_name\":\"fluorescence\",\"repeats\":1,\"wait\":0,"
"\"averages\":1,\"measurements\":3,\"meas2_light\":15,\"meas1_"
"baseline\":0,\"act_light\":20,\"pulsesize\":25,\"pulsedistance\":"
"10000,\"actintensity1\":50,\"actintensity2\":255,\"measintensity\":"
"255,\"calintensity\":255,\"pulses\":[50,50,50],\"act\":[2,1,2,2],"
"\"red\":[2,2,2,2],\"detectors\":[[34,34,34,34],[34,34,34,34],[34,"
"34,34,34],[34,34,34,34]],\"alta\":[2,2,2,2],\"altb\":[2,2,2,2],"
"\"measlights\":[[15,15,15,15],[15,15,15,15],[15,15,15,15],[15,15,"
"15,15]],\"measlights2\":[[15,15,15,15],[15,15,15,15],[15,15,15,15],"
"[15,15,15,15]],\"altc\":[2,2,2,2],\"altd\":[2,2,2,2]}");
return _json;
const JsonObject& _object = _buffer.parseObject(
"{\"protocol_name\":\"fluorescence\",\"repeats\":1,\"wait\":0,"
"\"averages\":1,\"measurements\":3,\"meas2_light\":15,\"meas1_"
"baseline\":0,\"act_light\":20,\"pulsesize\":25,\"pulsedistance\":"
"10000,\"actintensity1\":50,\"actintensity2\":255,\"measintensity\":"
"255,\"calintensity\":255,\"pulses\":[50,50,50],\"act\":[2,1,2,2],"
"\"red\":[2,2,2,2],\"detectors\":[[34,34,34,34],[34,34,34,34],[34,"
"34,34,34],[34,34,34,34]],\"alta\":[2,2,2,2],\"altb\":[2,2,2,2],"
"\"measlights\":[[15,15,15,15],[15,15,15,15],[15,15,15,15],[15,15,"
"15,15]],\"measlights2\":[[15,15,15,15],[15,15,15,15],[15,15,15,15],"
"[15,15,15,15]],\"altc\":[2,2,2,2],\"altd\":[2,2,2,2]}");
SECTION("Success") {
REQUIRE(_object.success());
}
};
TEST_F(GbathreeBug, Success) {
EXPECT_TRUE(_object.success());
}
SECTION("ProtocolName") {
REQUIRE("fluorescence" == _object["protocol_name"]);
}
TEST_F(GbathreeBug, ProtocolName) {
EXPECT_STREQ("fluorescence", _object["protocol_name"]);
}
SECTION("Repeats") {
REQUIRE(1 == _object["repeats"]);
}
TEST_F(GbathreeBug, Repeats) {
EXPECT_EQ(1, _object["repeats"]);
}
SECTION("Wait") {
REQUIRE(0 == _object["wait"]);
}
TEST_F(GbathreeBug, Wait) {
EXPECT_EQ(0, _object["wait"]);
}
SECTION("Measurements") {
REQUIRE(3 == _object["measurements"]);
}
TEST_F(GbathreeBug, Measurements) {
EXPECT_EQ(3, _object["measurements"]);
}
SECTION("Meas2_Light") {
REQUIRE(15 == _object["meas2_light"]);
}
TEST_F(GbathreeBug, Meas2_Light) {
EXPECT_EQ(15, _object["meas2_light"]);
}
SECTION("Meas1_Baseline") {
REQUIRE(0 == _object["meas1_baseline"]);
}
TEST_F(GbathreeBug, Meas1_Baseline) {
EXPECT_EQ(0, _object["meas1_baseline"]);
}
SECTION("Act_Light") {
REQUIRE(20 == _object["act_light"]);
}
TEST_F(GbathreeBug, Act_Light) {
EXPECT_EQ(20, _object["act_light"]);
}
SECTION("Pulsesize") {
REQUIRE(25 == _object["pulsesize"]);
}
TEST_F(GbathreeBug, Pulsesize) {
EXPECT_EQ(25, _object["pulsesize"]);
}
SECTION("Pulsedistance") {
REQUIRE(10000 == _object["pulsedistance"]);
}
TEST_F(GbathreeBug, Pulsedistance) {
EXPECT_EQ(10000, _object["pulsedistance"]);
}
SECTION("Actintensity1") {
REQUIRE(50 == _object["actintensity1"]);
}
TEST_F(GbathreeBug, Actintensity1) {
EXPECT_EQ(50, _object["actintensity1"]);
}
SECTION("Actintensity2") {
REQUIRE(255 == _object["actintensity2"]);
}
TEST_F(GbathreeBug, Actintensity2) {
EXPECT_EQ(255, _object["actintensity2"]);
}
SECTION("Measintensity") {
REQUIRE(255 == _object["measintensity"]);
}
TEST_F(GbathreeBug, Measintensity) {
EXPECT_EQ(255, _object["measintensity"]);
}
SECTION("Calintensity") {
REQUIRE(255 == _object["calintensity"]);
}
TEST_F(GbathreeBug, Calintensity) {
EXPECT_EQ(255, _object["calintensity"]);
}
SECTION("Pulses") {
// "pulses":[50,50,50]
TEST_F(GbathreeBug, Pulses) {
// "pulses":[50,50,50]
JsonArray& array = _object["pulses"];
REQUIRE(array.success());
JsonArray& array = _object["pulses"];
EXPECT_TRUE(array.success());
REQUIRE(3 == array.size());
EXPECT_EQ(3, array.size());
for (int i = 0; i < 3; i++) {
REQUIRE(50 == array[i]);
}
}
for (int i = 0; i < 3; i++) {
EXPECT_EQ(50, array[i]);
}
}
TEST_F(GbathreeBug, Act) {
// "act":[2,1,2,2]
JsonArray& array = _object["act"];
EXPECT_TRUE(array.success());
EXPECT_EQ(4, array.size());
EXPECT_EQ(2, array[0]);
EXPECT_EQ(1, array[1]);
EXPECT_EQ(2, array[2]);
EXPECT_EQ(2, array[3]);
}
TEST_F(GbathreeBug, Detectors) {
// "detectors":[[34,34,34,34],[34,34,34,34],[34,34,34,34],[34,34,34,34]]
JsonArray& array = _object["detectors"];
EXPECT_TRUE(array.success());
EXPECT_EQ(4, array.size());
for (int i = 0; i < 4; i++) {
JsonArray& nestedArray = array[i];
EXPECT_EQ(4, nestedArray.size());
for (int j = 0; j < 4; j++) EXPECT_EQ(34, nestedArray[j]);
}
}
TEST_F(GbathreeBug, Alta) {
// alta:[2,2,2,2]
JsonArray& array = _object["alta"];
EXPECT_TRUE(array.success());
EXPECT_EQ(4, array.size());
for (int i = 0; i < 4; i++) {
EXPECT_EQ(2, array[i]);
}
}
TEST_F(GbathreeBug, Altb) {
// altb:[2,2,2,2]
JsonArray& array = _object["altb"];
EXPECT_TRUE(array.success());
EXPECT_EQ(4, array.size());
for (int i = 0; i < 4; i++) {
EXPECT_EQ(2, array[i]);
}
}
TEST_F(GbathreeBug, Measlights) {
// "measlights":[[15,15,15,15],[15,15,15,15],[15,15,15,15],[15,15,15,15]]
JsonArray& array = _object["measlights"];
EXPECT_TRUE(array.success());
EXPECT_EQ(4, array.size());
for (int i = 0; i < 4; i++) {
JsonArray& nestedArray = array[i];
EXPECT_EQ(4, nestedArray.size());
for (int j = 0; j < 4; j++) EXPECT_EQ(15, nestedArray[j]);
}
}
TEST_F(GbathreeBug, Measlights2) {
// "measlights2":[[15,15,15,15],[15,15,15,15],[15,15,15,15],[15,15,15,15]]
JsonArray& array = _object["measlights2"];
EXPECT_TRUE(array.success());
EXPECT_EQ(4, array.size());
for (int i = 0; i < 4; i++) {
JsonArray& nestedArray = array[i];
EXPECT_EQ(4, nestedArray.size());
for (int j = 0; j < 4; j++) EXPECT_EQ(15, nestedArray[j]);
}
}
TEST_F(GbathreeBug, Altc) {
// altc:[2,2,2,2]
JsonArray& array = _object["altc"];
EXPECT_TRUE(array.success());
EXPECT_EQ(4, array.size());
for (int i = 0; i < 4; i++) {
EXPECT_EQ(2, array[i]);
}
}
TEST_F(GbathreeBug, Altd) {
// altd:[2,2,2,2]
JsonArray& array = _object["altd"];
EXPECT_TRUE(array.success());
EXPECT_EQ(4, array.size());
for (int i = 0; i < 4; i++) {
EXPECT_EQ(2, array[i]);
SECTION("Act") {
// "act":[2,1,2,2]
JsonArray& array = _object["act"];
REQUIRE(array.success());
REQUIRE(4 == array.size());
REQUIRE(2 == array[0]);
REQUIRE(1 == array[1]);
REQUIRE(2 == array[2]);
REQUIRE(2 == array[3]);
}
SECTION("Detectors") {
// "detectors":[[34,34,34,34],[34,34,34,34],[34,34,34,34],[34,34,34,34]]
JsonArray& array = _object["detectors"];
REQUIRE(array.success());
REQUIRE(4 == array.size());
for (int i = 0; i < 4; i++) {
JsonArray& nestedArray = array[i];
REQUIRE(4 == nestedArray.size());
for (int j = 0; j < 4; j++) {
REQUIRE(34 == nestedArray[j]);
}
}
}
SECTION("Alta") {
// alta:[2,2,2,2]
JsonArray& array = _object["alta"];
REQUIRE(array.success());
REQUIRE(4 == array.size());
for (int i = 0; i < 4; i++) {
REQUIRE(2 == array[i]);
}
}
SECTION("Altb") {
// altb:[2,2,2,2]
JsonArray& array = _object["altb"];
REQUIRE(array.success());
REQUIRE(4 == array.size());
for (int i = 0; i < 4; i++) {
REQUIRE(2 == array[i]);
}
}
SECTION("Measlights") {
// "measlights":[[15,15,15,15],[15,15,15,15],[15,15,15,15],[15,15,15,15]]
JsonArray& array = _object["measlights"];
REQUIRE(array.success());
REQUIRE(4 == array.size());
for (int i = 0; i < 4; i++) {
JsonArray& nestedArray = array[i];
REQUIRE(4 == nestedArray.size());
for (int j = 0; j < 4; j++) {
REQUIRE(15 == nestedArray[j]);
}
}
}
SECTION("Measlights2") {
// "measlights2":[[15,15,15,15],[15,15,15,15],[15,15,15,15],[15,15,15,15]]
JsonArray& array = _object["measlights2"];
REQUIRE(array.success());
REQUIRE(4 == array.size());
for (int i = 0; i < 4; i++) {
JsonArray& nestedArray = array[i];
REQUIRE(4 == nestedArray.size());
for (int j = 0; j < 4; j++) {
REQUIRE(15 == nestedArray[j]);
}
}
}
SECTION("Altc") {
// altc:[2,2,2,2]
JsonArray& array = _object["altc"];
REQUIRE(array.success());
REQUIRE(4 == array.size());
for (int i = 0; i < 4; i++) {
REQUIRE(2 == array[i]);
}
}
SECTION("Altd") {
// altd:[2,2,2,2]
JsonArray& array = _object["altd"];
REQUIRE(array.success());
REQUIRE(4 == array.size());
for (int i = 0; i < 4; i++) {
REQUIRE(2 == array[i]);
}
}
}

View File

@ -6,47 +6,23 @@
// If you like this project, please add a star!
#include <ArduinoJson.h>
#include <gtest/gtest.h>
#include <catch.hpp>
class IntegrationTests : public testing::TestWithParam<const char*> {
static const size_t MAX_JSON_SIZE = 10000;
void check(std::string originalJson) {
DynamicJsonBuffer jb;
protected:
virtual void SetUp() {
_input = GetParam();
strcpy(_inputBuffer, _input);
}
std::string prettyJson;
jb.parseObject(originalJson).prettyPrintTo(prettyJson);
void parseThenPrint(char* input, char* output) {
DynamicJsonBuffer buffer;
buffer.parseObject(input).printTo(output, MAX_JSON_SIZE);
}
std::string finalJson;
jb.parseObject(prettyJson).printTo(finalJson);
void parseThenPrettyPrint(char* input, char* output) {
DynamicJsonBuffer buffer;
buffer.parseObject(input).prettyPrintTo(output, MAX_JSON_SIZE);
}
const char* _input;
char _inputBuffer[MAX_JSON_SIZE];
char _outputBuffer[MAX_JSON_SIZE];
char _intermediateBuffer[MAX_JSON_SIZE];
};
TEST_P(IntegrationTests, ParseThenPrint) {
parseThenPrint(_inputBuffer, _outputBuffer);
ASSERT_STREQ(_input, _outputBuffer);
REQUIRE(originalJson == finalJson);
}
TEST_P(IntegrationTests, ParseThenPrettyPrintThenParseThenPrint) {
parseThenPrettyPrint(_inputBuffer, _intermediateBuffer);
parseThenPrint(_intermediateBuffer, _outputBuffer);
ASSERT_STREQ(_input, _outputBuffer);
}
INSTANTIATE_TEST_CASE_P(
OpenWeatherMap, IntegrationTests,
testing::Values(
TEST_CASE("Round Trip: parse -> prettyPrint -> parse -> print") {
SECTION("OpenWeatherMap") {
check(
"{\"coord\":{\"lon\":145.77,\"lat\":-16.92},\"sys\":{\"type\":1,\"id\":"
"8166,\"message\":0.1222,\"country\":\"AU\",\"sunrise\":1414784325,"
"\"sunset\":1414830137},\"weather\":[{\"id\":801,\"main\":\"Clouds\","
@ -54,11 +30,11 @@ INSTANTIATE_TEST_CASE_P(
"stations\",\"main\":{\"temp\":296.15,\"pressure\":1014,\"humidity\":"
"83,\"temp_min\":296.15,\"temp_max\":296.15},\"wind\":{\"speed\":2.22,"
"\"deg\":114.501},\"clouds\":{\"all\":20},\"dt\":1414846800,\"id\":"
"2172797,\"name\":\"Cairns\",\"cod\":200}"));
"2172797,\"name\":\"Cairns\",\"cod\":200}");
}
INSTANTIATE_TEST_CASE_P(
YahooQueryLanguage, IntegrationTests,
testing::Values(
SECTION("YahooQueryLanguage") {
check(
"{\"query\":{\"count\":40,\"created\":\"2014-11-01T14:16:49Z\","
"\"lang\":\"fr-FR\",\"results\":{\"item\":[{\"title\":\"Burkina army "
"backs Zida as interim leader\"},{\"title\":\"British jets intercept "
@ -102,4 +78,6 @@ INSTANTIATE_TEST_CASE_P(
"release of Marine veteran\"},{\"title\":\"As election closes in, "
"Obama on center stage\"},{\"title\":\"Body of Zambian president "
"arrives home\"},{\"title\":\"South Africa arrests 2 Vietnamese for "
"poaching\"}]}}}"));
"poaching\"}]}}}");
}
}