2 * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 * @file test/common/protocols/RequestTestHelper.h
18 * @author Lukasz Wojciechowski <l.wojciechow@partner.samsung.com>
20 * @brief Helper functions for tests of request serialization by protocols
23 #ifndef TEST_COMMON_PROTOCOLS_REQUESTTESTHELPER_H_
24 #define TEST_COMMON_PROTOCOLS_REQUESTTESTHELPER_H_
28 #include <gtest/gtest.h>
30 #include <containers/BinaryQueue.h>
31 #include <containers/RawBuffer.h>
32 #include <protocol/Protocol.h>
33 #include <request/pointers.h>
34 #include <request/RequestContext.h>
35 #include <response/ResponseTaker.h>
37 #include "CommonsTestHelper.h"
40 namespace RequestTestHelper {
43 void testRequest(std::shared_ptr<R> request, Cynara::ProtocolPtr protocol) {
44 auto queue = std::make_shared<Cynara::BinaryQueue>();
45 auto context = std::make_shared<Cynara::RequestContext>(Cynara::ResponseTakerPtr(), queue);
47 request->execute(request, protocol, context);
49 auto extractedRequest = protocol->extractRequestFromBuffer(queue);
50 ASSERT_TRUE(bool(extractedRequest));
51 ASSERT_EQ(queue->size(), 0);
53 compare(*request, dynamic_cast<R &>(*extractedRequest));
56 void binaryTestRequest(Cynara::RequestPtr request, Cynara::ProtocolPtr protocol) {
57 auto queue = std::make_shared<Cynara::BinaryQueue>();
58 auto context = std::make_shared<Cynara::RequestContext>(Cynara::ResponseTakerPtr(), queue);
60 request->execute(request, protocol, context);
61 Cynara::RawBuffer data(queue->size());
62 queue->flatten(data.data(), queue->size());
64 auto extractedRequest = protocol->extractRequestFromBuffer(queue);
65 ASSERT_TRUE(bool(extractedRequest));
66 ASSERT_EQ(queue->size(), 0);
68 extractedRequest->execute(extractedRequest, protocol, context);
69 Cynara::RawBuffer data2(queue->size());
70 queue->flatten(data2.data(), queue->size());
72 ASSERT_EQ(data, data2);
75 } /* namespace RequestTestHelper */
76 } /* namespace anonymous */
78 #endif /* TEST_COMMON_PROTOCOLS_REQUESTTESTHELPER_H_ */