Skip to content

Commit 04c78e0

Browse files
committed
test: add cmake targets for tests, add powershell script run-tests
1 parent 31766b8 commit 04c78e0

File tree

2 files changed

+143
-0
lines changed

2 files changed

+143
-0
lines changed

CMakeLists.txt

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,74 @@ target_include_directories(pcg_cpp INTERFACE include)
77
add_executable(pcg_demo)
88
target_sources(pcg_demo PRIVATE sample/pcg-demo.cpp)
99
target_link_libraries(pcg_demo PRIVATE pcg_cpp)
10+
11+
# Tests
12+
13+
#enable_testing()
14+
15+
set(pcg_cpp_tests_link_test
16+
check-pcg8_once_insecure
17+
check-pcg8_oneseq_once_insecure
18+
check-pcg16_once_insecure
19+
check-pcg16_oneseq_once_insecure
20+
check-pcg32
21+
check-pcg32_fast
22+
check-pcg32_k1024
23+
check-pcg32_k1024_fast
24+
check-pcg32_k16384
25+
check-pcg32_k16384_fast
26+
check-pcg32_k2
27+
check-pcg32_k2_fast
28+
check-pcg32_k64
29+
check-pcg32_k64_fast
30+
check-pcg32_k64_oneseq
31+
check-pcg32_once_insecure
32+
check-pcg32_oneseq
33+
check-pcg32_oneseq_once_insecure
34+
check-pcg64
35+
check-pcg64_fast
36+
check-pcg64_k1024
37+
check-pcg64_k1024_fast
38+
check-pcg64_k32
39+
check-pcg64_k32_fast
40+
check-pcg64_k32_oneseq
41+
check-pcg64_once_insecure
42+
check-pcg64_oneseq
43+
check-pcg64_oneseq_once_insecure
44+
check-pcg128_once_insecure
45+
check-pcg128_oneseq_once_insecure
46+
)
47+
48+
set(pcg_cpp_tests_link_test_noadvance
49+
check-pcg32_c1024
50+
check-pcg32_c1024_fast
51+
check-pcg32_c64
52+
check-pcg32_c64_fast
53+
check-pcg32_c64_oneseq
54+
check-pcg32_unique
55+
check-pcg64_c1024
56+
check-pcg64_c1024_fast
57+
check-pcg64_c32
58+
check-pcg64_c32_fast
59+
check-pcg64_c32_oneseq
60+
check-pcg64_unique
61+
)
62+
63+
file(MAKE_DIRECTORY "${CMAKE_CURRENT_LIST_DIR}/test-high/actual")
64+
65+
foreach(test_name IN LISTS pcg_cpp_tests_link_test pcg_cpp_tests_link_test_noadvance)
66+
message(STATUS "add test: test-${test_name} (${test_name})")
67+
68+
add_executable(${test_name})
69+
target_compile_features(${test_name} PRIVATE cxx_std_20)
70+
target_sources(${test_name} PRIVATE "test-high/${test_name}.cpp")
71+
target_link_libraries(${test_name} PRIVATE pcg_cpp)
72+
73+
add_custom_command(
74+
OUTPUT "${CMAKE_CURRENT_LIST_DIR}/test-high/actual/${test_name}.out"
75+
COMMAND "$<TARGET_FILE:${test_name}>" "-o" "${CMAKE_CURRENT_LIST_DIR}/test-high/actual/${test_name}.out"
76+
)
77+
add_custom_target("gen-${test_name}"
78+
DEPENDS "${CMAKE_CURRENT_LIST_DIR}/test-high/actual/${test_name}.out"
79+
)
80+
endforeach()

test-high/run-tests.ps1

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
$TestTargets = @(
2+
"check-pcg8_once_insecure",
3+
"check-pcg8_oneseq_once_insecure",
4+
"check-pcg16_once_insecure",
5+
"check-pcg16_oneseq_once_insecure",
6+
"check-pcg32",
7+
"check-pcg32_fast",
8+
"check-pcg32_k1024",
9+
"check-pcg32_k1024_fast",
10+
"check-pcg32_k16384",
11+
"check-pcg32_k16384_fast",
12+
"check-pcg32_k2",
13+
"check-pcg32_k2_fast",
14+
"check-pcg32_k64",
15+
"check-pcg32_k64_fast",
16+
"check-pcg32_k64_oneseq",
17+
"check-pcg32_once_insecure",
18+
"check-pcg32_oneseq",
19+
"check-pcg32_oneseq_once_insecure",
20+
"check-pcg64",
21+
"check-pcg64_fast",
22+
"check-pcg64_k1024",
23+
"check-pcg64_k1024_fast",
24+
"check-pcg64_k32",
25+
"check-pcg64_k32_fast",
26+
"check-pcg64_k32_oneseq",
27+
"check-pcg64_once_insecure",
28+
"check-pcg64_oneseq",
29+
"check-pcg64_oneseq_once_insecure",
30+
"check-pcg128_once_insecure",
31+
"check-pcg128_oneseq_once_insecure",
32+
"check-pcg32_c1024",
33+
"check-pcg32_c1024_fast",
34+
"check-pcg32_c64",
35+
"check-pcg32_c64_fast",
36+
"check-pcg32_c64_oneseq",
37+
"check-pcg32_unique",
38+
"check-pcg64_c1024",
39+
"check-pcg64_c1024_fast",
40+
"check-pcg64_c32",
41+
"check-pcg64_c32_fast",
42+
"check-pcg64_c32_oneseq",
43+
"check-pcg64_unique"
44+
)
45+
46+
Write-Output "======================================== running ========================================"
47+
48+
49+
Remove-Item -Path "./actual" -Recurse
50+
51+
foreach ($TestTarget in $TestTargets) {
52+
cmake --build ../build --target "$TestTarget"
53+
cmake --build ../build --target "gen-$TestTarget"
54+
}
55+
56+
Write-Output "======================================== verity ========================================"
57+
58+
foreach ($TestTarget in $TestTargets) {
59+
if ((Test-Path -Path "actual/$TestTarget.out" -PathType Leaf) -and (Test-Path -Path "expected/$TestTarget.out" -PathType Leaf)) {
60+
$actual = Get-Content -Path "actual/$TestTarget.out" -Raw
61+
$expected = Get-Content -Path "expected/$TestTarget.out" -Raw
62+
63+
$actual = $actual -replace '\r\n|\r|\n', "`n"
64+
$expected = $expected -replace '\r\n|\r|\n', "`n"
65+
66+
if ($actual -ne $expected) {
67+
Write-Output "actual/$TestTarget.out != expected/$TestTarget.out"
68+
# TODO: fc is Windows only
69+
fc.exe "$PSScriptRoot\actual\$TestTarget.out" "$PSScriptRoot\expected\$TestTarget.out"
70+
}
71+
}
72+
}

0 commit comments

Comments
 (0)