tests: add test for current behaviour of unknown q2 content/surface flags
This commit is contained in:
parent
8c88704bdf
commit
3fba6a6564
|
|
@ -0,0 +1,35 @@
|
||||||
|
// Game: Quake 2
|
||||||
|
// Format: Quake2 (Valve)
|
||||||
|
// entity 0
|
||||||
|
{
|
||||||
|
"mapversion" "220"
|
||||||
|
"classname" "worldspawn"
|
||||||
|
"_tb_textures" "textures/e1u1"
|
||||||
|
// brush 0
|
||||||
|
{
|
||||||
|
( -16 -48 -16 ) ( -16 -47 -16 ) ( -16 -48 -15 ) e1u1/color1_4 [ 0 -1 0 0 ] [ 0 0 -1 0 ] 0 1 1 1024 0 0
|
||||||
|
( -32 -16 -16 ) ( -32 -16 -15 ) ( -31 -16 -16 ) e1u1/color1_4 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 1024 0 0
|
||||||
|
( -32 -48 -16 ) ( -31 -48 -16 ) ( -32 -47 -16 ) e1u1/color1_4 [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 1024 0 0
|
||||||
|
( 16 32 16 ) ( 16 33 16 ) ( 17 32 16 ) e1u1/color1_4 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 1024 0 0
|
||||||
|
( 16 16 0 ) ( 17 16 0 ) ( 16 16 1 ) e1u1/color1_4 [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 1024 0 0
|
||||||
|
( 16 32 0 ) ( 16 32 1 ) ( 16 33 0 ) e1u1/color1_4 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 1024 0 0
|
||||||
|
}
|
||||||
|
// brush 1
|
||||||
|
{
|
||||||
|
( 48 32 0 ) ( 48 33 0 ) ( 48 32 1 ) e1u1/color1_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 1073741824 0 0
|
||||||
|
( 0 -16 -16 ) ( 0 -16 -15 ) ( 1 -16 -16 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 1073741824 0 0
|
||||||
|
( 0 -48 -16 ) ( 1 -48 -16 ) ( 0 -47 -16 ) e1u1/color1_2 [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 1073741824 0 0
|
||||||
|
( 48 32 16 ) ( 48 33 16 ) ( 49 32 16 ) e1u1/color1_2 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 1073741824 0 0
|
||||||
|
( 48 16 0 ) ( 49 16 0 ) ( 48 16 1 ) e1u1/color1_2 [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 1073741824 0 0
|
||||||
|
( 80 32 0 ) ( 80 32 1 ) ( 80 33 0 ) e1u1/color1_2 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 1073741824 0 0
|
||||||
|
}
|
||||||
|
// brush 2
|
||||||
|
{
|
||||||
|
( 112 32 0 ) ( 112 33 0 ) ( 112 32 1 ) e1u1/color1_3 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 0 1024 0
|
||||||
|
( 64 -16 -16 ) ( 64 -16 -15 ) ( 65 -16 -16 ) e1u1/color1_3 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 0 1024 0
|
||||||
|
( 64 -48 -16 ) ( 65 -48 -16 ) ( 64 -47 -16 ) e1u1/color1_3 [ -1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 0 1024 0
|
||||||
|
( 112 32 16 ) ( 112 33 16 ) ( 113 32 16 ) e1u1/color1_3 [ 1 0 0 0 ] [ 0 -1 0 0 ] 0 1 1 0 1024 0
|
||||||
|
( 112 16 0 ) ( 113 16 0 ) ( 112 16 1 ) e1u1/color1_3 [ -1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 0 1024 0
|
||||||
|
( 144 32 0 ) ( 144 32 1 ) ( 144 33 0 ) e1u1/color1_3 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 1 1 0 1024 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1048,3 +1048,48 @@ TEST_CASE("q2_tjunc_matrix" * doctest::test_suite("testmaps_q2"))
|
||||||
CHECK( has_tjunc(INDEX_SKY, INDEX_SKY));
|
CHECK( has_tjunc(INDEX_SKY, INDEX_SKY));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_CASE("q2_unknown_contents" * doctest::test_suite("testmaps_q2"))
|
||||||
|
{
|
||||||
|
const auto [bsp, bspx, prt] = LoadTestmapQ2("q2_unknown_contents.map");
|
||||||
|
|
||||||
|
{
|
||||||
|
INFO("leaf with contents 1<<10 which is not a valid contents");
|
||||||
|
|
||||||
|
auto *leaf = BSP_FindLeafAtPoint(&bsp, &bsp.dmodels[0], {0, 0, 0});
|
||||||
|
|
||||||
|
// FIXME: should the unknown contents get converted to SOLID in the leaf?
|
||||||
|
CHECK(leaf->contents == (Q2_CONTENTS_SOLID));
|
||||||
|
|
||||||
|
CHECK(1 == Leaf_Brushes(&bsp, leaf).size());
|
||||||
|
// FIXME: should the unknown contents have SOLID added in the brush?
|
||||||
|
CHECK((Q2_CONTENTS_SOLID | 1024)==
|
||||||
|
Leaf_Brushes(&bsp, leaf).at(0)->contents);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
INFO("leaf with contents 1<<30 which is not a valid contents");
|
||||||
|
|
||||||
|
auto *leaf = BSP_FindLeafAtPoint(&bsp, &bsp.dmodels[0], {64, 0, 0});
|
||||||
|
|
||||||
|
// FIXME: should the unknown contents get converted to SOLID in the leaf?
|
||||||
|
CHECK(leaf->contents == (Q2_CONTENTS_SOLID));
|
||||||
|
|
||||||
|
CHECK(1 == Leaf_Brushes(&bsp, leaf).size());
|
||||||
|
// FIXME: should the unknown contents have SOLID added in the brush?
|
||||||
|
CHECK((Q2_CONTENTS_SOLID | nth_bit(30))==
|
||||||
|
Leaf_Brushes(&bsp, leaf).at(0)->contents);
|
||||||
|
}
|
||||||
|
|
||||||
|
{
|
||||||
|
INFO("face with contents 1<<10 which is not a valid surrflags");
|
||||||
|
|
||||||
|
auto *top_face = BSP_FindFaceAtPoint(&bsp, &bsp.dmodels[0], {128, 0, 16}, {0, 0, 1});
|
||||||
|
REQUIRE(top_face);
|
||||||
|
|
||||||
|
auto *texinfo = BSP_GetTexinfo(&bsp, top_face->texinfo);
|
||||||
|
REQUIRE(texinfo);
|
||||||
|
|
||||||
|
CHECK(texinfo->flags.native == 1024);
|
||||||
|
}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue