235 lines
8.1 KiB
C++
235 lines
8.1 KiB
C++
//
|
|
// Copyright (C) 2016 Google, Inc.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at:
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
//
|
|
|
|
#include <base.h>
|
|
#include <base/logging.h>
|
|
#include <rapidjson/document.h>
|
|
#include <rapidjson/writer.h>
|
|
#include <rapidjson/stringbuffer.h>
|
|
#include "test_facade.h"
|
|
#include <tuple>
|
|
#include <utils/command_receiver.h>
|
|
#include <utils/common_utils.h>
|
|
|
|
std::tuple<bool, int> TestFacade::TestBoolTrueReturn() {
|
|
return std::make_tuple(true, sl4n_error_codes::kPassInt);
|
|
}
|
|
|
|
std::tuple<bool, int> TestFacade::TestBoolFalseReturn() {
|
|
return std::make_tuple(false, sl4n_error_codes::kPassInt);
|
|
}
|
|
|
|
std::tuple<bool, int> TestFacade::TestErrorCodeFail() {
|
|
return std::make_tuple(true, sl4n_error_codes::kFailInt);
|
|
}
|
|
|
|
std::tuple<int, int> TestFacade::TestNullReturn() {
|
|
return std::make_tuple(NULL, sl4n_error_codes::kPassInt);
|
|
}
|
|
|
|
std::tuple<std::string, int> TestFacade::TestStringEmptyReturn() {
|
|
return std::make_tuple("", sl4n_error_codes::kPassInt);
|
|
}
|
|
|
|
std::tuple<std::string, int> TestFacade::TestStringMaxReturn(
|
|
std::string max_string) {
|
|
|
|
return std::make_tuple(max_string, sl4n_error_codes::kPassInt);
|
|
}
|
|
|
|
std::tuple<bool, int> TestFacade::TestSpecificParamNaming(
|
|
std::string test_string, int test_int) {
|
|
|
|
return std::make_tuple(true, sl4n_error_codes::kPassInt);
|
|
}
|
|
|
|
//////////////////
|
|
// wrappers
|
|
//////////////////
|
|
|
|
static TestFacade facade; // triggers registration with CommandReceiver
|
|
|
|
void test_bool_true_return_wrapper(rapidjson::Document &doc) {
|
|
int expected_param_size = 0;
|
|
if (!CommonUtils::IsParamLengthMatching(doc, expected_param_size)) {
|
|
return;
|
|
}
|
|
bool result;
|
|
int error_code;
|
|
std::tie(result, error_code) = facade.TestBoolTrueReturn();
|
|
if (error_code == sl4n_error_codes::kFailInt) {
|
|
doc.AddMember(sl4n::kResultStr, false, doc.GetAllocator());
|
|
doc.AddMember(sl4n::kErrorStr, sl4n::kFailStr, doc.GetAllocator());
|
|
} else {
|
|
doc.AddMember(sl4n::kResultStr, result, doc.GetAllocator());
|
|
doc.AddMember(sl4n::kErrorStr, NULL, doc.GetAllocator());
|
|
}
|
|
}
|
|
|
|
void test_bool_false_return_wrapper(rapidjson::Document &doc) {
|
|
int expected_param_size = 0;
|
|
if (!CommonUtils::IsParamLengthMatching(doc, expected_param_size)) {
|
|
return;
|
|
}
|
|
int result;
|
|
int error_code;
|
|
std::tie(result, error_code) = facade.TestBoolFalseReturn();
|
|
if (error_code == sl4n_error_codes::kFailInt) {
|
|
doc.AddMember(sl4n::kResultStr, false, doc.GetAllocator());
|
|
doc.AddMember(sl4n::kErrorStr, sl4n::kFailStr, doc.GetAllocator());
|
|
} else {
|
|
doc.AddMember(sl4n::kResultStr, result, doc.GetAllocator());
|
|
doc.AddMember(sl4n::kErrorStr, NULL, doc.GetAllocator());
|
|
}
|
|
}
|
|
|
|
void test_null_return_wrapper(rapidjson::Document &doc) {
|
|
int expected_param_size = 0;
|
|
if (!CommonUtils::IsParamLengthMatching(doc, expected_param_size)) {
|
|
return;
|
|
}
|
|
int result;
|
|
int error_code;
|
|
std::tie(result, error_code) = facade.TestNullReturn();
|
|
if (error_code == sl4n_error_codes::kFailInt) {
|
|
doc.AddMember(sl4n::kResultStr, false, doc.GetAllocator());
|
|
doc.AddMember(sl4n::kErrorStr, sl4n::kFailStr, doc.GetAllocator());
|
|
} else {
|
|
doc.AddMember(sl4n::kResultStr, result, doc.GetAllocator());
|
|
doc.AddMember(sl4n::kErrorStr, NULL, doc.GetAllocator());
|
|
}
|
|
}
|
|
|
|
void test_string_empty_return_wrapper(rapidjson::Document &doc) {
|
|
int expected_param_size = 0;
|
|
if (!CommonUtils::IsParamLengthMatching(doc, expected_param_size)) {
|
|
return;
|
|
}
|
|
std::string result;
|
|
int error_code;
|
|
std::tie(result, error_code) = facade.TestStringEmptyReturn();
|
|
if (error_code == sl4n_error_codes::kFailInt) {
|
|
doc.AddMember(sl4n::kResultStr, false, doc.GetAllocator());
|
|
doc.AddMember(sl4n::kErrorStr, sl4n::kFailStr, doc.GetAllocator());
|
|
} else {
|
|
rapidjson::Value tmp;
|
|
tmp.SetString(result.c_str(), doc.GetAllocator());
|
|
doc.AddMember(sl4n::kResultStr, tmp, doc.GetAllocator());
|
|
doc.AddMember(sl4n::kErrorStr, NULL, doc.GetAllocator());
|
|
}
|
|
}
|
|
|
|
void test_string_max_return_wrapper(rapidjson::Document &doc) {
|
|
int expected_param_size = 1;
|
|
if (!CommonUtils::IsParamLengthMatching(doc, expected_param_size)) {
|
|
return;
|
|
}
|
|
std::string max_string;
|
|
if (!doc[sl4n::kParamsStr][0].IsString()) {
|
|
LOG(ERROR) << sl4n::kTagStr << ": Expected String input for name";
|
|
doc.AddMember(sl4n::kResultStr, false, doc.GetAllocator());
|
|
doc.AddMember(sl4n::kErrorStr, sl4n::kFailStr, doc.GetAllocator());
|
|
return;
|
|
} else {
|
|
max_string = doc[sl4n::kParamsStr][0].GetString();
|
|
}
|
|
std::string result;
|
|
int error_code;
|
|
std::tie(result, error_code) = facade.TestStringMaxReturn(max_string);
|
|
if (error_code == sl4n_error_codes::kFailInt) {
|
|
doc.AddMember(sl4n::kResultStr, false, doc.GetAllocator());
|
|
doc.AddMember(sl4n::kErrorStr, sl4n::kFailStr, doc.GetAllocator());
|
|
} else {
|
|
rapidjson::Value tmp;
|
|
tmp.SetString(result.c_str(), doc.GetAllocator());
|
|
doc.AddMember(sl4n::kResultStr, tmp, doc.GetAllocator());
|
|
doc.AddMember(sl4n::kErrorStr, NULL, doc.GetAllocator());
|
|
}
|
|
}
|
|
|
|
void test_specific_param_naming_wrapper(rapidjson::Document &doc) {
|
|
int expected_param_size = 1;
|
|
if (!CommonUtils::IsParamLengthMatching(doc, expected_param_size)) {
|
|
return;
|
|
}
|
|
std::string string_test;
|
|
int int_test;
|
|
std::string string_member = "string_test";
|
|
std::string int_member = "int_test";
|
|
if (!doc[sl4n::kParamsStr][0][0].HasMember(string_member.c_str())) {
|
|
LOG(ERROR) << sl4n::kTagStr << ": Expected member " << string_member;
|
|
doc.AddMember(sl4n::kResultStr, false, doc.GetAllocator());
|
|
doc.AddMember(sl4n::kErrorStr, sl4n::kFailStr, doc.GetAllocator());
|
|
return;
|
|
} else {
|
|
if (!doc[sl4n::kParamsStr][0][0][string_member.c_str()].IsString()) {
|
|
LOG(ERROR) << sl4n::kTagStr << ": Expected String input for "
|
|
<< string_member;
|
|
doc.AddMember(sl4n::kResultStr, false, doc.GetAllocator());
|
|
doc.AddMember(sl4n::kErrorStr, sl4n::kFailStr, doc.GetAllocator());
|
|
return;
|
|
}
|
|
string_test = doc[sl4n::kParamsStr][0][0][string_member.c_str()].GetString();
|
|
}
|
|
if (!doc[sl4n::kParamsStr][0][0].HasMember(int_member.c_str())) {
|
|
LOG(ERROR) << sl4n::kTagStr << ": Expected member " << int_member;
|
|
doc.AddMember(sl4n::kResultStr, false, doc.GetAllocator());
|
|
doc.AddMember(sl4n::kErrorStr, sl4n::kFailStr, doc.GetAllocator());
|
|
return;
|
|
} else {
|
|
if (!doc[sl4n::kParamsStr][0][0][int_member.c_str()].IsInt()) {
|
|
LOG(ERROR) << sl4n::kTagStr << ": Expected Int input for "
|
|
<< int_member;
|
|
doc.AddMember(sl4n::kResultStr, false, doc.GetAllocator());
|
|
doc.AddMember(sl4n::kErrorStr, sl4n::kFailStr, doc.GetAllocator());
|
|
return;
|
|
}
|
|
int_test = doc[sl4n::kParamsStr][0][0][int_member.c_str()].GetInt();
|
|
}
|
|
bool result;
|
|
int error_code;
|
|
std::tie(result, error_code) = facade.TestSpecificParamNaming(
|
|
string_test, int_test);
|
|
if (error_code == sl4n_error_codes::kFailInt) {
|
|
doc.AddMember(sl4n::kResultStr, false, doc.GetAllocator());
|
|
doc.AddMember(sl4n::kErrorStr, sl4n::kFailStr, doc.GetAllocator());
|
|
} else {
|
|
doc.AddMember(sl4n::kResultStr, result, doc.GetAllocator());
|
|
doc.AddMember(sl4n::kErrorStr, NULL, doc.GetAllocator());
|
|
}
|
|
}
|
|
|
|
////////////////
|
|
// constructor
|
|
////////////////
|
|
|
|
TestFacade::TestFacade() {
|
|
|
|
CommandReceiver::RegisterCommand("TestBoolTrueReturn",
|
|
&test_bool_true_return_wrapper);
|
|
CommandReceiver::RegisterCommand("TestBoolFalseReturn",
|
|
&test_bool_false_return_wrapper);
|
|
CommandReceiver::RegisterCommand("TestNullReturn",
|
|
&test_null_return_wrapper);
|
|
CommandReceiver::RegisterCommand("TestStringEmptyReturn",
|
|
&test_string_empty_return_wrapper);
|
|
CommandReceiver::RegisterCommand("TestStringMaxReturn",
|
|
&test_string_max_return_wrapper);
|
|
CommandReceiver::RegisterCommand("TestSpecificParamNaming",
|
|
&test_specific_param_naming_wrapper);
|
|
}
|
|
|