From e5b4a9863e03d64ad1c730ca9915fae4055526d7 Mon Sep 17 00:00:00 2001 From: Eric Wasylishen Date: Sun, 24 Apr 2022 01:01:55 -0600 Subject: [PATCH] qbsp: add test that detail doesn't seal --- qbsp/test_qbsp.cc | 9 ++- testmaps/qbsp_detail_doesnt_seal.map | 82 ++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+), 1 deletion(-) create mode 100644 testmaps/qbsp_detail_doesnt_seal.map diff --git a/qbsp/test_qbsp.cc b/qbsp/test_qbsp.cc index 712eea31..0fcb18f9 100644 --- a/qbsp/test_qbsp.cc +++ b/qbsp/test_qbsp.cc @@ -337,4 +337,11 @@ TEST(qsbsp, noclipfaces) ASSERT_EQ(bsp.dfaces.size(), 2); // TODO: both faces should be "{trigger" // TODO: contents should be empty in hull0 because it's func_detail_illusionary -} \ No newline at end of file +} + +TEST(qsbsp, detail_doesnt_seal) +{ + const mbsp_t bsp = LoadTestmap("qbsp_detail_doesnt_seal.map"); + + ASSERT_TRUE(map.leakfile); +} diff --git a/testmaps/qbsp_detail_doesnt_seal.map b/testmaps/qbsp_detail_doesnt_seal.map new file mode 100644 index 00000000..417360ba --- /dev/null +++ b/testmaps/qbsp_detail_doesnt_seal.map @@ -0,0 +1,82 @@ +// Game: Quake +// Format: Valve +// entity 0 +{ +"mapversion" "220" +"classname" "worldspawn" +"wad" "deprecated/free_wad.wad;deprecated/fence.wad;deprecated/origin.wad;deprecated/hintskip.wad" +"_wateralpha" "0.5" +"_tb_def" "builtin:Quake.fgd" +// brush 0 +{ +( 96 32 208 ) ( 96 -192 208 ) ( 96 32 48 ) orangestuff8 [ 0 -1 0 -16 ] [ 0 0 -1 48 ] 0 1 1 +( 112 -192 48 ) ( 96 -192 48 ) ( 112 -192 208 ) orangestuff8 [ -1 0 0 -16 ] [ 0 0 -1 48 ] 180 1 1 +( 112 32 104 ) ( 96 32 104 ) ( 112 -192 104 ) orangestuff8 [ 1 0 0 16 ] [ 0 -1 0 -16 ] 180 1 1 +( 112 -192 208 ) ( 96 -192 208 ) ( 112 32 208 ) orangestuff8 [ -1 0 0 -16 ] [ 0 -1 0 -16 ] 180 1 1 +( 112 32 208 ) ( 96 32 208 ) ( 112 32 48 ) orangestuff8 [ 1 0 0 16 ] [ 0 0 -1 48 ] 180 1 1 +( 112 -192 208 ) ( 112 32 208 ) ( 112 -192 48 ) orangestuff8 [ 0 -1 0 -16 ] [ 0 0 -1 48 ] 0 1 1 +} +// brush 1 +{ +( -144 -192 48 ) ( -144 32 48 ) ( -144 -192 208 ) orangestuff8 [ 0 1 0 16 ] [ 0 0 -1 48 ] 0 1 1 +( -144 -192 208 ) ( -128 -192 208 ) ( -144 -192 48 ) orangestuff8 [ -1 0 0 -16 ] [ 0 0 -1 48 ] 180 1 1 +( -144 -192 48 ) ( -128 -192 48 ) ( -144 32 48 ) orangestuff8 [ 1 0 0 16 ] [ 0 -1 0 -16 ] 180 1 1 +( -144 32 208 ) ( -128 32 208 ) ( -144 -192 208 ) orangestuff8 [ -1 0 0 -16 ] [ 0 -1 0 -16 ] 180 1 1 +( -144 32 48 ) ( -128 32 48 ) ( -144 32 208 ) orangestuff8 [ 1 0 0 16 ] [ 0 0 -1 48 ] 180 1 1 +( -128 -192 48 ) ( -128 -192 208 ) ( -128 32 48 ) orangestuff8 [ 0 1 0 16 ] [ 0 0 -1 48 ] 0 1 1 +} +// brush 2 +{ +( -128 32 208 ) ( -128 16 208 ) ( -128 32 48 ) orangestuff8 [ 0 1 0 16 ] [ 0 0 -1 48 ] 0 1 1 +( 96 16 208 ) ( 96 16 48 ) ( -128 16 208 ) orangestuff8 [ 1 0 0 16 ] [ 0 0 -1 48 ] 180 1 1 +( -128 32 48 ) ( -128 16 48 ) ( 96 32 48 ) orangestuff8 [ 1 0 0 16 ] [ 0 -1 0 -16 ] 180 1 1 +( 96 32 208 ) ( 96 16 208 ) ( -128 32 208 ) orangestuff8 [ -1 0 0 -16 ] [ 0 -1 0 -16 ] 180 1 1 +( 96 32 208 ) ( -128 32 208 ) ( 96 32 48 ) orangestuff8 [ 1 0 0 16 ] [ 0 0 -1 48 ] 180 1 1 +( 96 32 48 ) ( 96 16 48 ) ( 96 32 208 ) orangestuff8 [ 0 -1 0 -16 ] [ 0 0 -1 48 ] 0 1 1 +} +// brush 3 +{ +( -128 -192 48 ) ( -128 -176 48 ) ( -128 -192 208 ) orangestuff8 [ 0 1 0 16 ] [ 0 0 -1 48 ] 0 1 1 +( 96 -192 48 ) ( -128 -192 48 ) ( 96 -192 208 ) orangestuff8 [ -1 0 0 -16 ] [ 0 0 -1 48 ] 180 1 1 +( 96 -192 48 ) ( 96 -176 48 ) ( -128 -192 48 ) orangestuff8 [ 1 0 0 16 ] [ 0 -1 0 -16 ] 180 1 1 +( -128 -192 208 ) ( -128 -176 208 ) ( 96 -192 208 ) orangestuff8 [ -1 0 0 -16 ] [ 0 -1 0 -16 ] 180 1 1 +( -128 -176 48 ) ( 96 -176 48 ) ( -128 -176 208 ) orangestuff8 [ -1 0 0 -16 ] [ 0 0 -1 48 ] 180 1 1 +( 96 -192 208 ) ( 96 -176 208 ) ( 96 -192 48 ) orangestuff8 [ 0 -1 0 -16 ] [ 0 0 -1 48 ] 0 1 1 +} +// brush 4 +{ +( -128 -176 208 ) ( -128 -176 192 ) ( -128 16 208 ) orangestuff8 [ 0 1 0 16 ] [ 0 0 -1 48 ] 0 1 1 +( 96 -176 208 ) ( 96 -176 192 ) ( -128 -176 208 ) orangestuff8 [ -1 0 0 -16 ] [ 0 0 -1 48 ] 180 1 1 +( 96 16 192 ) ( -128 16 192 ) ( 96 -176 192 ) orangestuff8 [ -1 0 0 -16 ] [ 0 -1 0 -16 ] 180 1 1 +( 96 16 208 ) ( 96 -176 208 ) ( -128 16 208 ) orangestuff8 [ -1 0 0 -16 ] [ 0 -1 0 -16 ] 180 1 1 +( -128 16 208 ) ( -128 16 192 ) ( 96 16 208 ) orangestuff8 [ 1 0 0 16 ] [ 0 0 -1 48 ] 180 1 1 +( 96 16 208 ) ( 96 16 192 ) ( 96 -176 208 ) orangestuff8 [ 0 -1 0 -16 ] [ 0 0 -1 48 ] 0 1 1 +} +// brush 5 +{ +( -128 16 48 ) ( -128 16 64 ) ( -128 -176 48 ) orangestuff8 [ 0 1 0 16 ] [ 0 0 -1 48 ] 0 1 1 +( -128 -176 48 ) ( -128 -176 64 ) ( 96 -176 48 ) orangestuff8 [ -1 0 0 -16 ] [ 0 0 -1 48 ] 180 1 1 +( -128 16 48 ) ( -128 -176 48 ) ( 96 16 48 ) orangestuff8 [ 1 0 0 16 ] [ 0 -1 0 -16 ] 180 1 1 +( -128 -176 64 ) ( -128 16 64 ) ( 96 -176 64 ) orangestuff8 [ 1 0 0 16 ] [ 0 -1 0 -16 ] 180 1 1 +( 96 16 48 ) ( 96 16 64 ) ( -128 16 48 ) orangestuff8 [ 1 0 0 16 ] [ 0 0 -1 48 ] 180 1 1 +( 96 -176 48 ) ( 96 -176 64 ) ( 96 16 48 ) orangestuff8 [ 0 -1 0 -16 ] [ 0 0 -1 48 ] 0 1 1 +} +} +// entity 1 +{ +"classname" "info_player_start" +"origin" "-56 -96 120" +} +// entity 2 +{ +"classname" "func_detail" +// brush 0 +{ +( 80 -176 64 ) ( 80 -175 64 ) ( 80 -176 65 ) bolt16 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 +( 80 -176 64 ) ( 80 -176 65 ) ( 81 -176 64 ) bolt16 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 +( 80 -176 64 ) ( 81 -176 64 ) ( 80 -175 64 ) bolt16 [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 +( 96 16 112 ) ( 96 17 112 ) ( 97 16 112 ) bolt16 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 +( 96 16 72 ) ( 97 16 72 ) ( 96 16 73 ) bolt16 [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 +( 96 16 72 ) ( 96 16 73 ) ( 96 17 72 ) bolt16 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 +} +}