Files
scummvm-cursorfix/test/engines/ultima/ultima8/usecode/uc_stack.h
2026-02-02 04:50:13 +01:00

45 lines
1.1 KiB
C++

#include <cxxtest/TestSuite.h>
#include "engines/ultima/ultima8/usecode/uc_stack.h"
/**
* Test suite for the functions in engines/ultima/ultima8/usecode/uc_stack.h
*/
class U8UCStackTestSuite : public CxxTest::TestSuite {
public:
U8UCStackTestSuite() {
}
void test_static_stack() {
Ultima::Ultima8::UCStack stack;
test_for_stack(stack);
}
void test_dynamic_stack() {
Ultima::Ultima8::DynamicUCStack stack;
Ultima::Ultima8::DynamicUCStack stack2(32);
TS_ASSERT_EQUALS(stack2.getSize(), 32);
test_for_stack(stack);
test_for_stack(stack2);
}
private:
void test_for_stack(Ultima::Ultima8::BaseUCStack &s) {
TS_ASSERT_EQUALS(s.stacksize(), 0);
s.push4(0xDEADBEEF);
TS_ASSERT_EQUALS(s.stacksize(), 4);
TS_ASSERT_EQUALS(s.pop2(), 0xBEEF);
TS_ASSERT_EQUALS(s.pop2(), 0xDEAD);
s.push1(0xFE);
TS_ASSERT_EQUALS(s.stacksize(), 1);
s.push1(0xED);
s.push2(0xC0DE);
TS_ASSERT_EQUALS(s.pop2(), 0xC0DE);
TS_ASSERT_EQUALS(s.pop2(), 0xFEED);
TS_ASSERT_EQUALS(s.stacksize(), 0);
TS_ASSERT_EQUALS(s.getSP(), s.getSize());
s.push4(0xCAFEF00D);
TS_ASSERT_EQUALS(s.getSP(), s.getSize()-4);
}
};