Skip to content

Commit 070df1f

Browse files
committed
feat: 更新模板逻辑, 现在源文件/测试文件命名统一为 main.cpp test.cpp
Signed-off-by: Certseeds <51754303+Certseeds@users.noreply.github.com>
1 parent 263b549 commit 070df1f

16 files changed

Lines changed: 37 additions & 32 deletions

File tree

README.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ git clone https://github.com/${YOUE_GITHUB_USER_NAME}/algorithm-template.git
116116

117117
+ 可选项:
118118
+ 使用脚本产生自定义的文件(适合source.zip或者有bonuslab):
119-
使用命令行, 进入`./script`下, 编辑`file_template``labs` & `problem_orders`,
119+
使用命令行, 进入`./script`下, 编辑`file_template``labs` & `problem_orders`,
120120
`python3 ./file_template.py`, 出现`produce files finish`提示, 即为创建成功.
121121

122122
<p align="right">(<a href="#top">back to top</a>)</p>
@@ -129,9 +129,9 @@ git clone https://github.com/${YOUE_GITHUB_USER_NAME}/algorithm-template.git
129129

130130
`lab${order}_${ques_Order}`为对应题号, 比如`lab07_01`对应lab_07的C1题.
131131

132-
+ `CS203_lab07_01`将调用`lab_07\lab_07_C1\lab07_C1.cpp`, 为将要提交的源文件.
133-
+ `CS203_lab07_01_test`将调用`lab_07\lab_07_C1\lab07_C1_test.cpp`, 对其进行测试.
134-
+ `lab_*\lab_*_*\lab_*_*_test.cpp`目的为方便测试, 同时便于分享测试用例.
132+
+ `CS203_lab07_01`将调用`lab_07\lab_07_C1\main.cpp`, 为将要提交的源文件.
133+
+ `CS203_lab07_01_test`将调用`lab_07\lab_07_C1\test.cpp`, 对其进行测试.
134+
+ `lab_*\lab_*_*\test.cpp`目的为方便测试, 同时便于分享测试用例.
135135

136136
<p align="right">(<a href="#top">back to top</a>)</p>
137137

@@ -153,7 +153,7 @@ git clone https://github.com/${YOUE_GITHUB_USER_NAME}/algorithm-template.git
153153

154154
+ 在本repo, 使用`Catch2`测试框架.
155155
+ 比如, 我们有四组数据, 第一组, 第二组测试边界值, 第三组使用随机数测试对偶性与正确性, 第四组测试几个手动的随机值.
156-
+ 参见[test_for_lab00_A](./lab_00/lab_00_A/lab_00_A_test.cpp).
156+
+ 参见[test_for_lab00_A](./lab_00/lab_00_A/test.cpp).
157157
+ 这样一来, 我们只需要每次修改完主文件之后, run `algorithm-template_test`, 对其进行调用, 就能验证其在所有的测试用例上的正确性.
158158

159159
### 多个输出值的检查:`Catch::Matchers`
@@ -162,7 +162,7 @@ git clone https://github.com/${YOUE_GITHUB_USER_NAME}/algorithm-template.git
162162

163163
举例:[Crzay Plan](https://acm.sustech.edu.cn/onlinejudge/problem.php?id=1250), 输入可能有1.1*10^6个.
164164

165-
这种情况下对这么多值进行直接的观察就很难, 所以我们预先将期望的值直接写在测试文件里, 用Catch2内置的Matcher比较(见[test_for_lab00_B](./lab_00/lab_00_B/lab_00_B_test.cpp)`CHECK_THAT()`部分.)
165+
这种情况下对这么多值进行直接的观察就很难, 所以我们预先将期望的值直接写在测试文件里, 用Catch2内置的Matcher比较(见[test_for_lab00_B](./lab_00/lab_00_B/test.cpp)`CHECK_THAT()`部分.)
166166

167167
PS: 当然, 这种情况也只适用于规模比较小的情况, 规模再大的话, 直接由人手动写在测试文件里也太占空间了.
168168

@@ -192,7 +192,7 @@ TEST_CASE("test case 1", "[test 00 C]") {
192192
+ test case with tuple 则最优雅, 修改起来的难度最小.
193193
+ test case with sequence 比tuple更优雅, 输入, 输出全为自动产生.
194194
195-
PS: 此处注意, 引用文件的相对路径, 不是直接的`test/lab_00/lab_00_C/resource/01.data.in`,
195+
PS: 此处注意, 引用文件的相对路径, 不是直接的`test/lab_00/lab_00_C/resource/01.data.in`,
196196
197197
而是编译出的文件相对于测试数据的相对路径.
198198
@@ -219,7 +219,7 @@ PS: 此处注意, 引用文件的相对路径, 不是直接的`test/lab_00/lab_0
219219

220220
PS: 至于比较文件之间的差异, 可以使用内置的`compareFiles(string path1, string path2)`函数进行比较.
221221

222-
参考[文本比对_test_case_2](./lab_00/lab_00_D/lab_00_D_test.cpp)
222+
参考[文本比对_test_case_2](./lab_00/lab_00_D/test.cpp)
223223

224224
## Details
225225

@@ -252,11 +252,11 @@ DSAA既然内含Data structure, 就势必涉及到类似Node, Tree, Graph等等
252252
### 如何手动开优化
253253

254254
1.[magic_optimize](./include/magic_macro/magic_macro.hpp)内的内容粘贴到代码最上方.
255-
2. 关闭同步,
255+
2. 关闭同步,
256256

257257
``` cpp
258258
static const auto faster_streams = [] {
259-
srand(time(nullptr));
259+
srand(time(nullptr));
260260
// use time to init the random seed
261261
std::ios::sync_with_stdio(false);
262262
std::istream::sync_with_stdio(false);

lab_00/lab_00_A/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ set(CMAKE_CXX_STANDARD 11)
66
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
77

88
enable_testing()
9-
add_executable(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_ORDER}_${PROBLEM_ORDER}.cpp)
9+
add_executable(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp)
1010
set(CMAKE_CXX_STANDARD 17)
11-
add_executable(${PROJECT_NAME}_test ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_ORDER}_${PROBLEM_ORDER}_test.cpp)
11+
add_executable(${PROJECT_NAME}_test ${CMAKE_CURRENT_SOURCE_DIR}/test.cpp)
1212
target_compile_definitions(${PROJECT_NAME}_test PRIVATE ALGORITHM_TEST_MACRO)
1313
target_link_libraries(${PROJECT_NAME}_test PRIVATE algorithm_template_INCLUDE)
14-
MESSAGE(STATUS "${PROJECT_NAME}_${elementName} from ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_ORDER}_${PROBLEM_ORDER}_test.cpp")
14+
MESSAGE(STATUS "${PROJECT_NAME}_${elementName} from ${CMAKE_CURRENT_SOURCE_DIR}/test.cpp")
1515
add_test(${PROJECT_NAME}_CTEST ${PROJECT_NAME}_test)
1616
set(CMAKE_CXX_STANDARD 11)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
#include <vector>
99
#include <random>
1010

11-
#include "lab_00_A.cpp"
11+
#include "main.cpp"
1212

1313
std::string getFilePath() noexcept { return "./../../../lab_00/lab_00_A/resource/"; }
1414

lab_00/lab_00_B/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,11 @@ set(CMAKE_CXX_STANDARD 11)
66
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
77

88
enable_testing()
9-
add_executable(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_ORDER}_${PROBLEM_ORDER}.cpp)
9+
add_executable(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp)
1010
set(CMAKE_CXX_STANDARD 17)
11-
add_executable(${PROJECT_NAME}_test ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_ORDER}_${PROBLEM_ORDER}_test.cpp)
11+
add_executable(${PROJECT_NAME}_test ${CMAKE_CURRENT_SOURCE_DIR}/test.cpp)
1212
target_compile_definitions(${PROJECT_NAME}_test PRIVATE ALGORITHM_TEST_MACRO)
1313
target_link_libraries(${PROJECT_NAME}_test PRIVATE algorithm_template_INCLUDE)
14-
MESSAGE(STATUS "${PROJECT_NAME}_${elementName} from ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_ORDER}_${PROBLEM_ORDER}_test.cpp")
14+
MESSAGE(STATUS "${PROJECT_NAME}_${elementName} from ${CMAKE_CURRENT_SOURCE_DIR}/test.cpp")
1515
add_test(${PROJECT_NAME}_CTEST ${PROJECT_NAME}_test)
1616
set(CMAKE_CXX_STANDARD 11)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
#include <tuple>
88
#include <vector>
99
#include <iostream>
10-
#include "lab_00_B.cpp"
10+
#include "main.cpp"
1111

1212
std::string getFilePath() noexcept { return "./../../../lab_00/lab_00_B/resource/"; }
1313

lab_00/lab_00_C/CMakeLists.txt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,12 @@ set(CMAKE_CXX_STANDARD 11)
66
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
77

88
enable_testing()
9-
add_executable(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_ORDER}_${PROBLEM_ORDER}.cpp)
9+
add_executable(${PROJECT_NAME} ${CMAKE_CURRENT_SOURCE_DIR}/main.cpp)
1010
set(CMAKE_CXX_STANDARD 17)
11-
add_executable(${PROJECT_NAME}_test ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_ORDER}_${PROBLEM_ORDER}_test.cpp)
11+
add_executable(${PROJECT_NAME}_test ${CMAKE_CURRENT_SOURCE_DIR}/test.cpp)
1212
target_compile_definitions(${PROJECT_NAME}_test PRIVATE ALGORITHM_TEST_MACRO)
1313
target_link_libraries(${PROJECT_NAME}_test PRIVATE algorithm_template_INCLUDE)
14-
MESSAGE(STATUS "${PROJECT_NAME}_${elementName} from ${CMAKE_CURRENT_SOURCE_DIR}/${PROJECT_ORDER}_${PROBLEM_ORDER}_test.cpp")
14+
MESSAGE(STATUS "${PROJECT_NAME}_${elementName} from ${CMAKE_CURRENT_SOURCE_DIR}/test.cpp")
1515
add_test(${PROJECT_NAME}_CTEST ${PROJECT_NAME}_test)
1616
set(CMAKE_CXX_STANDARD 11)
1717
unset(PROBLEM_ORDER)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
#include <catch_main.hpp>
66
#include <vector>
77
#include <iostream>
8-
#include "lab_00_C.cpp"
8+
#include "main.cpp"
99

1010
std::string getFilePath() noexcept { return "./../../../lab_00/lab_00_C/resource/"; }
1111

0 commit comments

Comments
 (0)