tests: add q1 decompiler test
This commit is contained in:
parent
505efbf885
commit
88a9cb6bb4
|
|
@ -9,7 +9,7 @@ CMakeFiles/
|
|||
.idea
|
||||
!.vscode/settings.json
|
||||
testmaps/*.bsp
|
||||
**/*decompile*.map
|
||||
**/*-decompile*.map
|
||||
testmaps/*.bsp.qbsplog
|
||||
testmaps/*.log
|
||||
testmaps/*.prt
|
||||
|
|
|
|||
Binary file not shown.
|
|
@ -0,0 +1,146 @@
|
|||
// Game: Quake
|
||||
// Format: Valve
|
||||
// entity 0
|
||||
{
|
||||
"mapversion" "220"
|
||||
"classname" "worldspawn"
|
||||
"wad" "deprecated/free_wad.wad;deprecated/fence.wad;deprecated/origin.wad;deprecated/hintskip.wad;../testmaps/deprecated/free_wad.wad"
|
||||
"_wateralpha" "0.5"
|
||||
"_tb_def" "builtin:Quoth2.fgd"
|
||||
// brush 0
|
||||
{
|
||||
( -80 256 16 ) ( -80 257 16 ) ( -80 256 17 ) brown_brick [ 0 -1 0 0 ] [ 0 0 -1 32 ] 0 1 1
|
||||
( -64 64 16 ) ( -64 64 17 ) ( -63 64 16 ) brown_brick [ 1 0 0 0 ] [ 0 0 -1 32 ] 0 1 1
|
||||
( -64 256 16 ) ( -63 256 16 ) ( -64 257 16 ) brown_brick [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( 64 384 96 ) ( 64 385 96 ) ( 65 384 96 ) brown_brick [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( 64 80 48 ) ( 65 80 48 ) ( 64 80 49 ) brown_brick [ -1 0 0 0 ] [ 0 0 -1 32 ] 0 1 1
|
||||
( 208 384 48 ) ( 208 384 49 ) ( 208 385 48 ) brown_brick [ 0 1 0 0 ] [ 0 0 -1 32 ] 0 1 1
|
||||
}
|
||||
// brush 1
|
||||
{
|
||||
( -80 192 16 ) ( -80 193 16 ) ( -80 192 17 ) brown_brick [ 0 -1 0 0 ] [ 0 0 -1 32 ] 0 1 1
|
||||
( -192 -320 16 ) ( -192 -320 17 ) ( -191 -320 16 ) brown_brick [ 1 0 0 0 ] [ 0 0 -1 32 ] 0 1 1
|
||||
( -192 192 16 ) ( -191 192 16 ) ( -192 193 16 ) brown_brick [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( -64 320 96 ) ( -64 321 96 ) ( -63 320 96 ) brown_brick [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( -64 64 48 ) ( -63 64 48 ) ( -64 64 49 ) brown_brick [ -1 0 0 0 ] [ 0 0 -1 32 ] 0 1 1
|
||||
( -64 320 48 ) ( -64 320 49 ) ( -64 321 48 ) brown_brick [ 0 1 0 0 ] [ 0 0 -1 32 ] 0 1 1
|
||||
}
|
||||
// brush 2
|
||||
{
|
||||
( -160 -256 80 ) ( -160 -255 80 ) ( -160 -256 81 ) orangestuff8 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -160 -336 80 ) ( -160 -336 81 ) ( -159 -336 80 ) orangestuff8 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -160 -256 80 ) ( -159 -256 80 ) ( -160 -255 80 ) orangestuff8 [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( -80 64 96 ) ( -80 65 96 ) ( -79 64 96 ) orangestuff8 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( -80 80 96 ) ( -79 80 96 ) ( -80 80 97 ) orangestuff8 [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -80 64 96 ) ( -80 64 97 ) ( -80 65 96 ) orangestuff8 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 3
|
||||
{
|
||||
( -160 80 80 ) ( -160 81 80 ) ( -160 80 81 ) orangestuff8 [ 0 -1 0 16 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -16 80 80 ) ( -16 80 81 ) ( -15 80 80 ) orangestuff8 [ 1 0 0 -16 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -16 80 80 ) ( -15 80 80 ) ( -16 81 80 ) orangestuff8 [ -1 0 0 16 ] [ 0 -1 0 16 ] 0 1 1
|
||||
( 64 400 96 ) ( 64 401 96 ) ( 65 400 96 ) orangestuff8 [ 1 0 0 -16 ] [ 0 -1 0 16 ] 0 1 1
|
||||
( 64 176 96 ) ( 65 176 96 ) ( 64 176 97 ) orangestuff8 [ -1 0 0 16 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 208 400 96 ) ( 208 400 97 ) ( 208 401 96 ) orangestuff8 [ 0 1 0 -16 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 4
|
||||
{
|
||||
( -176 -256 64 ) ( -176 -255 64 ) ( -176 -256 65 ) tsl_wall1 [ 0 -1 0 0 ] [ 0 0 -1 -32 ] 0 1 1
|
||||
( -176 -432 64 ) ( -176 -432 65 ) ( -175 -432 64 ) tsl_wall1 [ 1 0 0 16 ] [ 0 0 -1 -32 ] 0 1 1
|
||||
( -176 -256 96 ) ( -175 -256 96 ) ( -176 -255 96 ) tsl_wall1 [ -1 0 0 -16 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( -160 192 352 ) ( -160 193 352 ) ( -159 192 352 ) tsl_wall1 [ 1 0 0 16 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( -160 176 80 ) ( -159 176 80 ) ( -160 176 81 ) tsl_wall1 [ -1 0 0 -16 ] [ 0 0 -1 -32 ] 0 1 1
|
||||
( -160 192 80 ) ( -160 192 81 ) ( -160 193 80 ) tsl_wall1 [ 0 1 0 0 ] [ 0 0 -1 -32 ] 0 1 1
|
||||
}
|
||||
// brush 5
|
||||
{
|
||||
( 192 320 48 ) ( 192 321 48 ) ( 192 320 49 ) brown_brick [ 0 1 0 0 ] [ 0 0 -1 32 ] 0 1 1
|
||||
( 320 -320 16 ) ( 319 -320 16 ) ( 320 -320 17 ) brown_brick [ -1 0 0 0 ] [ 0 0 -1 32 ] 180 1 1
|
||||
( 320 192 16 ) ( 320 193 16 ) ( 319 192 16 ) brown_brick [ 1 0 0 0 ] [ 0 -1 0 0 ] 180 1 1
|
||||
( 192 320 96 ) ( 191 320 96 ) ( 192 321 96 ) brown_brick [ -1 0 0 0 ] [ 0 -1 0 0 ] 180 1 1
|
||||
( 192 64 48 ) ( 192 64 49 ) ( 191 64 48 ) brown_brick [ 1 0 0 0 ] [ 0 0 -1 32 ] 180 1 1
|
||||
( 208 192 16 ) ( 208 192 17 ) ( 208 193 16 ) brown_brick [ 0 -1 0 0 ] [ 0 0 -1 32 ] 0 1 1
|
||||
}
|
||||
// brush 6
|
||||
{
|
||||
( 208 64 96 ) ( 208 65 96 ) ( 208 64 97 ) orangestuff8 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 288 -336 80 ) ( 287 -336 80 ) ( 288 -336 81 ) orangestuff8 [ -1 0 0 0 ] [ 0 0 -1 0 ] 180 1 1
|
||||
( 288 -256 80 ) ( 288 -255 80 ) ( 287 -256 80 ) orangestuff8 [ 1 0 0 0 ] [ 0 -1 0 0 ] 180 1 1
|
||||
( 208 64 96 ) ( 207 64 96 ) ( 208 65 96 ) orangestuff8 [ -1 0 0 0 ] [ 0 -1 0 0 ] 180 1 1
|
||||
( 208 176 96 ) ( 208 176 97 ) ( 207 176 96 ) orangestuff8 [ 1 0 0 0 ] [ 0 0 -1 0 ] 180 1 1
|
||||
( 288 -256 80 ) ( 288 -256 81 ) ( 288 -255 80 ) orangestuff8 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 7
|
||||
{
|
||||
( -64 -256 16 ) ( -64 64 0 ) ( -64 64 16 ) brownstuff8 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 192 -320 16 ) ( -64 -320 0 ) ( -64 -320 16 ) brownstuff8 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 192 64 0 ) ( -64 -256 0 ) ( 192 -256 0 ) brownstuff8 [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( 192 64 16 ) ( -64 -256 16 ) ( -64 64 16 ) brownstuff8 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
|
||||
( 192 64 16 ) ( -64 64 0 ) ( 192 64 0 ) brownstuff8 [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( 192 64 16 ) ( 192 -256 0 ) ( 192 -256 16 ) brownstuff8 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 8
|
||||
{
|
||||
( -160 176 88 ) ( -160 177 88 ) ( -160 176 89 ) tsl_wall1 [ 0 1.0000000000000002 0 -32 ] [ 0 0 -1.0000000000000002 -32 ] 0 1 1
|
||||
( -160 176 88 ) ( -160 176 89 ) ( -159 176 88 ) tsl_wall1 [ -1 0 0 -16 ] [ 0 0 -1 -32 ] 0 1 1
|
||||
( -160 176 96 ) ( -159 176 96 ) ( -160 177 96 ) tsl_wall1 [ -1.0000000000000002 0 0 -16 ] [ 0 1.0000000000000002 0 -40 ] 0 1 1
|
||||
( 288 192 352 ) ( 288 193 352 ) ( 289 192 352 ) tsl_wall1 [ -1.0000000000000002 0 0 -16 ] [ 0 -1.0000000000000002 0 48 ] 0 1 1
|
||||
( 288 192 96 ) ( 289 192 96 ) ( 288 192 97 ) tsl_wall1 [ -1 0 0 -16 ] [ 0 0 -1 -32 ] 0 1 1
|
||||
( 288 192 96 ) ( 288 192 97 ) ( 288 193 96 ) tsl_wall1 [ 0 -1.0000000000000002 0 0 ] [ 0 0 -1.0000000000000002 -32 ] 0 1 1
|
||||
}
|
||||
// brush 9
|
||||
{
|
||||
( -80 -16 48 ) ( -80 -15 48 ) ( -80 -16 49 ) brown_brick [ 0 1 0 16 ] [ 0 0 -1 32 ] 0 1 1
|
||||
( 192 -336 16 ) ( 191 -336 16 ) ( 192 -336 17 ) brown_brick [ -1 0 0 0 ] [ 0 0 -1 32 ] 180 1 1
|
||||
( 192 -144 16 ) ( 192 -143 16 ) ( 191 -144 16 ) brown_brick [ 1 0 0 0 ] [ 0 -1 0 -16 ] 180 1 1
|
||||
( 64 -16 96 ) ( 63 -16 96 ) ( 64 -15 96 ) brown_brick [ -1 0 0 0 ] [ 0 -1 0 -16 ] 180 1 1
|
||||
( 64 -320 48 ) ( 64 -320 49 ) ( 63 -320 48 ) brown_brick [ 1 0 0 0 ] [ 0 0 -1 32 ] 180 1 1
|
||||
( 208 -144 16 ) ( 208 -144 17 ) ( 208 -143 16 ) brown_brick [ 0 -1 0 -16 ] [ 0 0 -1 32 ] 0 1 1
|
||||
}
|
||||
// brush 10
|
||||
{
|
||||
( -160 -112 96 ) ( -160 -111 96 ) ( -160 -112 97 ) orangestuff8 [ 0 1 0 -16 ] [ 0 0 -1 0 ] 0 1 1
|
||||
( -80 -432 80 ) ( -81 -432 80 ) ( -80 -432 81 ) orangestuff8 [ -1 0 0 16 ] [ 0 0 -1 0 ] 180 1 1
|
||||
( -80 -432 80 ) ( -80 -431 80 ) ( -81 -432 80 ) orangestuff8 [ 1 0 0 -16 ] [ 0 -1 0 16 ] 180 1 1
|
||||
( -160 -112 96 ) ( -161 -112 96 ) ( -160 -111 96 ) orangestuff8 [ -1 0 0 16 ] [ 0 -1 0 16 ] 180 1 1
|
||||
( -160 -336 96 ) ( -160 -336 97 ) ( -161 -336 96 ) orangestuff8 [ 1 0 0 -16 ] [ 0 0 -1 0 ] 180 1 1
|
||||
( 288 -432 80 ) ( 288 -432 81 ) ( 288 -431 80 ) orangestuff8 [ 0 -1 0 16 ] [ 0 0 -1 0 ] 0 1 1
|
||||
}
|
||||
// brush 11
|
||||
{
|
||||
( -160 -448 88 ) ( -160 -447 88 ) ( -160 -448 89 ) tsl_wall1 [ 0 1.0000000000000002 0 80 ] [ 0 0 -1.0000000000000002 -32 ] 0 1 1
|
||||
( -160 -448 88 ) ( -160 -448 89 ) ( -159 -448 88 ) tsl_wall1 [ -1 0 0 -16 ] [ 0 0 -1 -32 ] 0 1 1
|
||||
( -160 -448 96 ) ( -159 -448 96 ) ( -160 -447 96 ) tsl_wall1 [ -1.0000000000000002 0 0 -16 ] [ 0 1.0000000000000002 0 72 ] 0 1 1
|
||||
( 288 -432 352 ) ( 288 -431 352 ) ( 289 -432 352 ) tsl_wall1 [ -1.0000000000000002 0 0 -16 ] [ 0 -1.0000000000000002 0 -64 ] 0 1 1
|
||||
( 288 -432 96 ) ( 289 -432 96 ) ( 288 -432 97 ) tsl_wall1 [ -1 0 0 -16 ] [ 0 0 -1 -32 ] 0 1 1
|
||||
( 288 -432 96 ) ( 288 -432 97 ) ( 288 -431 96 ) tsl_wall1 [ 0 -1.0000000000000002 0 -112 ] [ 0 0 -1.0000000000000002 -32 ] 0 1 1
|
||||
}
|
||||
// brush 12
|
||||
{
|
||||
( -160 -256 352 ) ( -160 -255 352 ) ( -160 -256 353 ) orangestuff8 [ 0 0 -1.0000000000000002 0 ] [ 0 -1.0000000000000002 0 0 ] 180 1 1
|
||||
( 288 -432 360 ) ( 288 -432 361 ) ( 289 -432 360 ) orangestuff8 [ -1.0000000000000002 0 0 0 ] [ 0 0 1.0000000000000002 -16 ] 180 1 1
|
||||
( -160 -256 352 ) ( -159 -256 352 ) ( -160 -255 352 ) orangestuff8 [ -1 0 0 0 ] [ 0 -1 0 0 ] 180 1 1
|
||||
( 288 176 360 ) ( 288 177 360 ) ( 289 176 360 ) orangestuff8 [ -1 0 0 0 ] [ 0 -1 0 0 ] 180 1 1
|
||||
( 288 176 360 ) ( 289 176 360 ) ( 288 176 361 ) orangestuff8 [ -1.0000000000000002 0 0 0 ] [ 0 0 1.0000000000000002 -16 ] 180 1 1
|
||||
( 288 176 360 ) ( 288 176 361 ) ( 288 177 360 ) orangestuff8 [ 0 0 1.0000000000000002 0 ] [ 0 -1.0000000000000002 0 0 ] 180 1 1
|
||||
}
|
||||
// brush 13
|
||||
{
|
||||
( 288 192 80 ) ( 288 193 80 ) ( 288 192 81 ) tsl_wall1 [ 0 1 0 0 ] [ 0 0 -1 -32 ] 0 1 1
|
||||
( 304 -432 64 ) ( 303 -432 64 ) ( 304 -432 65 ) tsl_wall1 [ -1 0 0 16 ] [ 0 0 -1 -32 ] 180 1 1
|
||||
( 304 -256 96 ) ( 304 -255 96 ) ( 303 -256 96 ) tsl_wall1 [ 1 0 0 -16 ] [ 0 -1 0 0 ] 180 1 1
|
||||
( 304 -256 352 ) ( 303 -256 352 ) ( 304 -255 352 ) tsl_wall1 [ 1 0 0 -16 ] [ 0 -1 0 0 ] 180 1 1
|
||||
( 288 176 80 ) ( 288 176 81 ) ( 287 176 80 ) tsl_wall1 [ 1 0 0 -16 ] [ 0 0 -1 -32 ] 180 1 1
|
||||
( 304 -256 64 ) ( 304 -256 65 ) ( 304 -255 64 ) tsl_wall1 [ 0 -1 0 0 ] [ 0 0 -1 -32 ] 0 1 1
|
||||
}
|
||||
}
|
||||
// entity 1
|
||||
{
|
||||
"classname" "info_player_start"
|
||||
"origin" "-80 -176 136"
|
||||
}
|
||||
// entity 2
|
||||
{
|
||||
"classname" "light"
|
||||
"origin" "136 -360 224"
|
||||
}
|
||||
|
|
@ -14,7 +14,8 @@ add_executable(tests
|
|||
testutils.hh
|
||||
${CMAKE_BINARY_DIR}/testmaps.hh
|
||||
testutils.hh
|
||||
benchmark.cc)
|
||||
benchmark.cc
|
||||
test_bsputil.cc)
|
||||
|
||||
find_package(embree 3.0 REQUIRED)
|
||||
INCLUDE_DIRECTORIES(${EMBREE_INCLUDE_DIRS})
|
||||
|
|
|
|||
|
|
@ -0,0 +1,36 @@
|
|||
#include <doctest/doctest.h>
|
||||
|
||||
#include <common/fs.hh>
|
||||
#include <common/bspfile.hh>
|
||||
#include <common/decompile.hh>
|
||||
#include <qbsp/map.hh>
|
||||
|
||||
#include "testmaps.hh"
|
||||
#include "test_qbsp.hh"
|
||||
|
||||
TEST_SUITE("bsputil")
|
||||
{
|
||||
TEST_CASE("q1_decompiler_test" * doctest::may_fail())
|
||||
{
|
||||
bspdata_t bspdata;
|
||||
std::filesystem::path path = std::filesystem::path(testmaps_dir) / ".." / "testbsps" / "q1_decompiler_test.bsp";
|
||||
LoadBSPFile(path, &bspdata);
|
||||
|
||||
ConvertBSPFormat(&bspdata, &bspver_generic);
|
||||
|
||||
path.replace_filename(path.stem().string() + "-decompile");
|
||||
path.replace_extension(".map");
|
||||
std::ofstream f(path);
|
||||
|
||||
mbsp_t &bsp = std::get<mbsp_t>(bspdata.bsp);
|
||||
|
||||
decomp_options options;
|
||||
DecompileBSP(&bsp, options, f);
|
||||
|
||||
f.close();
|
||||
|
||||
auto &entity = LoadMapPath(path);
|
||||
|
||||
REQUIRE(entity.mapbrushes.size() == 14);
|
||||
}
|
||||
}
|
||||
|
|
@ -10,6 +10,7 @@ class mapentity_t;
|
|||
|
||||
const mapface_t *Mapbrush_FirstFaceWithTextureName(const mapbrush_t &brush, const std::string &texname);
|
||||
mapentity_t &LoadMap(const char *map);
|
||||
mapentity_t &LoadMapPath(const std::filesystem::path &name);
|
||||
std::tuple<mbsp_t, bspxentries_t, std::optional<prtfile_t>> LoadTestmap(
|
||||
const std::filesystem::path &name, std::vector<std::string> extra_args = {});
|
||||
std::tuple<mbsp_t, bspxentries_t, std::optional<prtfile_t>> LoadTestmapQ2(
|
||||
|
|
|
|||
Loading…
Reference in New Issue