diff options
| author | yangwei <[email protected]> | 2023-04-11 12:11:12 +0800 |
|---|---|---|
| committer | yangwei <[email protected]> | 2023-04-11 16:08:02 +0800 |
| commit | f181d7c8bc68f713b4b46c128a045dabaf805bc6 (patch) | |
| tree | 4fde6c37d6afe4e082720b3f8c2207e2f5b2c56a /test | |
| parent | 8521902b397ea248930af380058871cc556be452 (diff) | |
🧪 test(unit test): 增加对http_url_decode的单元测试
Diffstat (limited to 'test')
| -rw-r--r-- | test/CMakeLists.txt | 24 | ||||
| -rw-r--r-- | test/googletest-release-1.8.0.tar.gz | bin | 0 -> 1281617 bytes | |||
| -rw-r--r-- | test/mock_sapp.cpp | 61 | ||||
| -rw-r--r-- | test/unit_test.cpp | 30 |
4 files changed, 114 insertions, 1 deletions
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 7149fed..4aaef79 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -2,10 +2,32 @@ cmake_minimum_required (VERSION 2.8) project(${lib_name}_test) + include(ExternalProject) -#### Protoco_test_run +#### GoogleTest +ExternalProject_Add(GoogleTest PREFIX GoogleTest + URL ${CMAKE_CURRENT_SOURCE_DIR}/googletest-release-1.8.0.tar.gz + URL_MD5 16877098823401d1bf2ed7891d7dce36 + CMAKE_ARGS -DCMAKE_INSTALL_PREFIX=<INSTALL_DIR> -DCMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}) + +ExternalProject_Get_Property(GoogleTest INSTALL_DIR) +file(MAKE_DIRECTORY ${INSTALL_DIR}/include) +add_library(gtest STATIC IMPORTED GLOBAL) +add_dependencies(gtest GoogleTest) +set_property(TARGET gtest PROPERTY IMPORTED_LOCATION ${INSTALL_DIR}/lib/libgtest.a) +set_property(TARGET gtest PROPERTY INTERFACE_INCLUDE_DIRECTORIES ${INSTALL_DIR}/include) +set_property(TARGET gtest PROPERTY INTERFACE_LINK_LIBRARIES pthread) + + +enable_testing() +add_executable(HTTPUintTest unit_test.cpp mock_sapp.cpp) +target_link_libraries(HTTPUintTest gtest http) + +include(ExternalProject) +#### Protoco_test_run + ExternalProject_Add(ProtoTest PREFIX ProtoTest URL ${CMAKE_CURRENT_SOURCE_DIR}/test_protocol_run.zip URL_MD5 71d8284b59af0286b5f31f0a3160bc44 diff --git a/test/googletest-release-1.8.0.tar.gz b/test/googletest-release-1.8.0.tar.gz Binary files differnew file mode 100644 index 0000000..a40df33 --- /dev/null +++ b/test/googletest-release-1.8.0.tar.gz diff --git a/test/mock_sapp.cpp b/test/mock_sapp.cpp new file mode 100644 index 0000000..ece6388 --- /dev/null +++ b/test/mock_sapp.cpp @@ -0,0 +1,61 @@ +#include <stdlib.h> + +#include "stream.h" + +void free_tcp_proxy_stream(struct streaminfo *pstream,struct streaminfo *pProxy) +{ + return; +} + +void set_proxy_fstream(struct streaminfo *pstream,struct streaminfo *pProxy) +{ + return; +} +void *dictator_malloc(int thread_seq,size_t size) +{ + return malloc(size); +} +void dictator_free(int thread_seq,void *pbuf) +{ + free(pbuf); +} + +void *dictator_realloc(int thread_seq, void* pbuf, size_t size) +{ + return realloc(pbuf, size); +} + +char PROT_PROCESS(stSessionInfo* session_info, void **pme, int thread_seq,struct streaminfo *a_stream,const void *a_packet) +{ + return 0; +} + +int get_thread_count(void) +{ + return 0; +} + +const void *project_req_get_struct(const struct streaminfo *stream, int project_req_id) +{ + return NULL; +} + +const char *printaddr (const struct layer_addr *paddrinfo, int threadindex) +{ + return NULL; +} + +int project_producer_register(const char *project_req_name, const char *project_req_val_type, project_req_free_t *free_cb) +{ + return 0; +} + +int project_req_add_struct(struct streaminfo *stream, int project_req_id, const void *project_req_value) +{ + return 0; +} + +int deal_tcp_in_proxy_stream(struct streaminfo *a_tcp,void * a_packet,struct streaminfo *pProxy) +{ + return 0; +}
\ No newline at end of file diff --git a/test/unit_test.cpp b/test/unit_test.cpp new file mode 100644 index 0000000..50a5092 --- /dev/null +++ b/test/unit_test.cpp @@ -0,0 +1,30 @@ +#include <gtest/gtest.h> +#include <string.h> +#include <stdio.h> +#include <stdlib.h> + +#include "http.h" + +TEST(HTTPUnitTest, url_decode) +{ + const char *input = "%A9%E4%B8%8B%E8%B6%B3%E7%90%83%2CRB%E8%8E%B1%E6%AF%94%E9%94%A1%2C%E5%BC%97%E8%B5%96%E5%A0%A1%2C%E6%96%AF%E6%89%98%E5%85%8B%E5%9F%8E%2C%E4%BC%AF%E6%81%A9%E8%8C%85%E6%96%AF%2C%E9%97%A8%E5%85%B4%2C%E8%90%A8%E7%B4%A2%E6%B4%9B%2C%E8%B6%B3%E7%90%83%2C%E7%9A%87%E5%AE%B6%E7%A4%BE%E4%BC%9A%2C%E8%8B%B1%E8%B6%85%2C%E6%9B%BC%E5%BD%BB%E6%96%AF%E7%89%B9%E8%81%94%2C%E5%9F%83%E7%93%A6%E5%B0%94%2C%E8%A5%BF%E4%B9%99%2C%E6%B3%95%E5%85%B0%E5%85%8B%E7%A6%8F%2C%E6%8B%89%E6%96%AF%E5%B8%95%E5%B0%94%E9%A9%AC%E6%96%AF%2C%E6%B2%99%E5%B0%94%E5%85%8B%2C%E7%9A%87%E5%AE%B6%E9%A9%AC%E5%BE%B7%E9%87%8C%2C%E7%83%AD%E9%82%A3%E4%BA%9A%2C%E7%BE%8E%E5%9B%A0%E8%8C%A8%2C%E5%B7%B4%E8%90%A8%2C%E8%8E%B1%E6%AF%94%E9%94%A1%E7%BA%A2%E7%89%9B%2C%E6%96%AF%E5%9B%BE%E5%8A%A0%E7%89%B9%2CCBA%2C%E5%A5%A5%E8%90%A8%E8%8B%8F%E7%BA%B3%2C%E6%8B%9C%E4%BB%81%E6%85%95%E5%B0%BC%E9%BB%91%2C%E8%B5%AB%E7%BD%97%E7%BA%B3%2C%E6%81%A9%E6%B3%A2%E5%88%A9%2C%E6%AF%95%E5%B0%94%E5%B7%B4%E9%84%82%2C%E5%A1%9E%E5%B0%94%E5%A1%94%2C%E7%9A%87%E5%AE%B6%E8%B4%9D%E8%92%82%E6%96%AF%2C%E6%B2%8"; + int len = strlen(input); + char *output = (char*)calloc(strlen(input)+1, 1); + memcpy(output, input, strlen(input)); + + http_url_decode(output, &len); + + EXPECT_EQ(len, 347); + EXPECT_EQ(strlen(output), 346); + + free(output); + +} + +int main(int argc, char ** argv) +{ + int ret=0; + ::testing::InitGoogleTest(&argc, argv); + ret=RUN_ALL_TESTS(); + return ret; +} |
