tests: add q2 ladder test case

This commit is contained in:
Eric Wasylishen 2023-01-03 17:40:56 -07:00
parent c43371213e
commit aa928e1515
2 changed files with 94 additions and 0 deletions

77
testmaps/q2_ladder.map Normal file
View File

@ -0,0 +1,77 @@
// Game: Quake 2
// Format: Quake2 (Valve)
// entity 0
{
"mapversion" "220"
"classname" "worldspawn"
"_tb_textures" "textures/e1u1"
// brush 0
{
( 144 208 192 ) ( 144 -208 192 ) ( 144 208 -16 ) e1u1/c_met11_2 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 160 -208 -16 ) ( 144 -208 -16 ) ( 160 -208 192 ) e1u1/c_met11_2 [ 1 0 -0 0 ] [ 0 -0 -1 0 ] 0 1 1
( 160 208 -16 ) ( 144 208 -16 ) ( 160 -208 -16 ) e1u1/c_met11_2 [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 160 -208 192 ) ( 144 -208 192 ) ( 160 208 192 ) e1u1/c_met11_2 [ 1 0 -0 0 ] [ 0 -1 -0 0 ] 0 1 1
( 160 208 192 ) ( 144 208 192 ) ( 160 208 -16 ) e1u1/c_met11_2 [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 160 -208 192 ) ( 160 208 192 ) ( 160 -208 -16 ) e1u1/c_met11_2 [ 0 1 -0 0 ] [ 0 -0 -1 0 ] 0 1 1
}
// brush 1
{
( -160 -208 -16 ) ( -160 208 -16 ) ( -160 -208 192 ) e1u1/c_met11_2 [ 0 -1 0 0 ] [ -0 -0 -1 0 ] 0 1 1
( -160 -208 192 ) ( -144 -208 192 ) ( -160 -208 -16 ) e1u1/c_met11_2 [ 1 0 -0 0 ] [ 0 -0 -1 0 ] 0 1 1
( -160 -208 -16 ) ( -144 -208 -16 ) ( -160 208 -16 ) e1u1/c_met11_2 [ -1 0 0 0 ] [ -0 -1 -0 0 ] 0 1 1
( -160 208 192 ) ( -144 208 192 ) ( -160 -208 192 ) e1u1/c_met11_2 [ 1 -0 0 0 ] [ -0 -1 0 0 ] 0 1 1
( -160 208 -16 ) ( -144 208 -16 ) ( -160 208 192 ) e1u1/c_met11_2 [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -144 -208 -16 ) ( -144 -208 192 ) ( -144 208 -16 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 2
{
( -144 208 192 ) ( -144 192 192 ) ( -144 208 -16 ) e1u1/c_met11_2 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 144 192 192 ) ( 144 192 -16 ) ( -144 192 192 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( -144 208 -16 ) ( -144 192 -16 ) ( 144 208 -16 ) e1u1/c_met11_2 [ -1 0 0 0 ] [ -0 -1 -0 0 ] 0 1 1
( 144 208 192 ) ( 144 192 192 ) ( -144 208 192 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 144 208 192 ) ( -144 208 192 ) ( 144 208 -16 ) e1u1/c_met11_2 [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 144 208 -16 ) ( 144 192 -16 ) ( 144 208 192 ) e1u1/c_met11_2 [ -0 1 0 0 ] [ -0 0 -1 0 ] 0 1 1
}
// brush 3
{
( -144 -208 -16 ) ( -144 -192 -16 ) ( -144 -208 192 ) e1u1/c_met11_2 [ 0 -1 0 0 ] [ -0 -0 -1 0 ] 0 1 1
( 144 -208 -16 ) ( -144 -208 -16 ) ( 144 -208 192 ) e1u1/c_met11_2 [ 1 0 -0 0 ] [ 0 -0 -1 0 ] 0 1 1
( 144 -208 -16 ) ( 144 -192 -16 ) ( -144 -208 -16 ) e1u1/c_met11_2 [ -1 0 0 0 ] [ -0 -1 -0 0 ] 0 1 1
( -144 -208 192 ) ( -144 -192 192 ) ( 144 -208 192 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( -144 -192 -16 ) ( 144 -192 -16 ) ( -144 -192 192 ) e1u1/c_met11_2 [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 144 -208 192 ) ( 144 -192 192 ) ( 144 -208 -16 ) e1u1/c_met11_2 [ 0 1 -0 0 ] [ 0 -0 -1 0 ] 0 1 1
}
// brush 4
{
( -144 -192 192 ) ( -144 -192 176 ) ( -144 192 192 ) e1u1/sky1 [ 0 0.30769230769230776 0 0 ] [ 0 0 -1 0 ] 0 1 1 0 132 0
( 144 -192 192 ) ( 144 -192 176 ) ( -144 -192 192 ) e1u1/sky1 [ -0.4 0 0 0 ] [ 0 0 -1 0 ] 180 1 1 0 132 0
( 144 192 176 ) ( -144 192 176 ) ( 144 -192 176 ) e1u1/sky1 [ -0.4 0 0 0 ] [ 0 -0.30769230769230776 0 0 ] 180 1 1 0 132 0
( 144 192 192 ) ( 144 -192 192 ) ( -144 192 192 ) e1u1/sky1 [ -0.4 0 0 0 ] [ 0 -0.30769230769230776 0 0 ] 180 1 1 0 132 0
( -144 192 192 ) ( -144 192 176 ) ( 144 192 192 ) e1u1/sky1 [ 0.4 0 0 0 ] [ 0 0 -1 0 ] 180 1 1 0 132 0
( 144 192 192 ) ( 144 192 176 ) ( 144 -192 192 ) e1u1/sky1 [ 0 -0.30769230769230776 0 0 ] [ 0 0 -1 0 ] 0 1 1 0 132 0
}
// brush 5
{
( -144 192 -16 ) ( -144 192 0 ) ( -144 -192 -16 ) e1u1/c_met11_2 [ 0 -1 0 0 ] [ -0 -0 -1 0 ] 0 1 1
( -144 -192 -16 ) ( -144 -192 0 ) ( 144 -192 -16 ) e1u1/c_met11_2 [ 1 0 -0 0 ] [ 0 -0 -1 0 ] 0 1 1
( -144 192 -16 ) ( -144 -192 -16 ) ( 144 192 -16 ) e1u1/c_met11_2 [ -1 0 0 0 ] [ -0 -1 -0 0 ] 0 1 1
( -144 -192 0 ) ( -144 192 0 ) ( 144 -192 0 ) e1u1/c_met11_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1
( 144 192 -16 ) ( 144 192 0 ) ( -144 192 -16 ) e1u1/c_met11_2 [ -1 0 0 0 ] [ -0 0 -1 0 ] 0 1 1
( 144 -192 -16 ) ( 144 -192 0 ) ( 144 192 -16 ) e1u1/c_met11_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1
}
// brush 6
{
( -16 176 0 ) ( -16 177 0 ) ( -16 176 1 ) e1u1/color1_2 [ 0 -1 0 48 ] [ 0 0 -1 0 ] 0 1 1 671088640 0 0
( -16 176 0 ) ( -16 176 1 ) ( -15 176 0 ) e1u1/color1_2 [ 1 0 0 16 ] [ 0 0 -1 0 ] 0 1 1 671088640 0 0
( -16 176 0 ) ( -15 176 0 ) ( -16 177 0 ) e1u1/color1_2 [ -1 0 0 -16 ] [ 0 -1 0 48 ] 0 1 1 671088640 0 0
( 0 192 176 ) ( 0 193 176 ) ( 1 192 176 ) e1u1/color1_2 [ 1 0 0 16 ] [ 0 -1 0 48 ] 0 1 1 671088640 0 0
( 0 192 16 ) ( 1 192 16 ) ( 0 192 17 ) e1u1/color1_2 [ -1 0 0 -16 ] [ 0 0 -1 0 ] 0 1 1 671088640 0 0
( 0 192 16 ) ( 0 192 17 ) ( 0 193 16 ) e1u1/color1_2 [ 0 1 0 -48 ] [ 0 0 -1 0 ] 0 1 1 671088640 0 0
}
}
// entity 1
{
"classname" "info_player_start"
"origin" "16 -16 24"
"angle" "90"
}

View File

@ -598,3 +598,20 @@ TEST_CASE("q2_missing_faces" * doctest::test_suite("testmaps_q2") * doctest::may
CHECK(BSP_FindFaceAtPoint(&bsp, &bsp.dmodels[0], point_on_missing_face2));
CHECK(BSP_FindFaceAtPoint(&bsp, &bsp.dmodels[0], point_on_present_face));
}
TEST_CASE("q2_ladder" * doctest::test_suite("testmaps_q2"))
{
const auto [bsp, bspx, prt] = LoadTestmapQ2("q2_ladder.map");
const qvec3d point_in_ladder {-8, 184, 24};
CheckFilled(bsp);
auto *leaf = BSP_FindLeafAtPoint(&bsp, &bsp.dmodels[0], point_in_ladder);
// the brush lacked a visible contents, so it became solid. solid leafs wipe out any other content bits
CHECK(leaf->contents == (Q2_CONTENTS_SOLID));
CHECK(1 == Leaf_Brushes(&bsp, leaf).size());
CHECK((Q2_CONTENTS_SOLID | Q2_CONTENTS_LADDER | Q2_CONTENTS_DETAIL) == Leaf_Brushes(&bsp, leaf).at(0)->contents);
}