Files
2026-02-02 04:50:13 +01:00

72 lines
1.8 KiB
C++

#include <cxxtest/TestSuite.h>
#include "engines/ultima/ultima8/misc/box.h"
/**
* Test suite for the functions in engines/ultima/ultima8/misc/box.h
*/
class U8BoxTestSuite : public CxxTest::TestSuite {
public:
U8BoxTestSuite() {
}
void test_simple_box() {
// Note: These tests expect Box has reversed coordinates in x and y.
Ultima::Ultima8::Box box;
TS_ASSERT(box.isEmpty());
TS_ASSERT(box.isValid());
TS_ASSERT(!box.overlaps(box));
TS_ASSERT(box == box);
TS_ASSERT(!box.contains(0, 0, 0));
TS_ASSERT(!box.contains(0, 0, 1));
TS_ASSERT(!box.contains(0, -1, 0));
TS_ASSERT(!box.contains(-1, 0, 0));
box.resize(1, 1, 1);
TS_ASSERT(!box.isEmpty());
TS_ASSERT(box.isValid());
TS_ASSERT(box.contains(0, 0, 0));
TS_ASSERT(!box.contains(-1, 0, 0));
TS_ASSERT(!box.contains(0, -1, 0));
TS_ASSERT(!box.contains(0, 0, 1));
TS_ASSERT(box.overlaps(box));
TS_ASSERT(box == box);
box.resize(2, 2, 2);
TS_ASSERT(!box.isEmpty());
TS_ASSERT(box.isValid());
TS_ASSERT(box.overlaps(box));
TS_ASSERT(box == box);
TS_ASSERT(box.contains(-1, -1, 1));
TS_ASSERT(box.contains(-1, -1, 0));
box.moveTo(0, 0, 1);
TS_ASSERT(!box.contains(-1, -1, 0));
TS_ASSERT(box.contains(-1, -1, 2));
Ultima::Ultima8::Box box2(box);
TS_ASSERT(box == box2);
TS_ASSERT(box.overlaps(box2));
TS_ASSERT(box2 == box);
TS_ASSERT(box2.overlaps(box));
Ultima::Ultima8::Box box3(0, 0, 0, 2, 2, 3);
TS_ASSERT(box2 != box3);
TS_ASSERT(box2.overlaps(box3));
TS_ASSERT(box3.overlaps(box2));
box3.resize(1, 1, 1);
TS_ASSERT(!box3.overlaps(box2));
box3.moveTo(2, 2, 2);
box.extend(box3);
TS_ASSERT(!box.isEmpty());
TS_ASSERT(box.isValid());
TS_ASSERT(box._x == 2);
TS_ASSERT(box._y == 2);
TS_ASSERT(box._z == 1);
TS_ASSERT(box._xd == 4);
TS_ASSERT(box._yd == 4);
TS_ASSERT(box._zd == 2);
}
};