mirror of
https://github.com/tfussell/xlnt.git
synced 2024-03-22 13:11:17 +08:00
63 lines
1.2 KiB
C++
63 lines
1.2 KiB
C++
#include <cxxtest/TestSuite.h>
|
|
#include "Dice.h"
|
|
#include "MockStdlib.h"
|
|
|
|
class TestDice : public CxxTest::TestSuite
|
|
{
|
|
public:
|
|
MockStdlib *stdlib;
|
|
|
|
void setUp()
|
|
{
|
|
TS_ASSERT(stdlib = new MockStdlib);
|
|
}
|
|
|
|
void tearDown()
|
|
{
|
|
delete stdlib;
|
|
}
|
|
|
|
void test_Randomize_uses_time()
|
|
{
|
|
stdlib->nextTime = 12345;
|
|
Dice dice;
|
|
TS_ASSERT_EQUALS(stdlib->lastSeed, 12345);
|
|
}
|
|
|
|
void test_Roll()
|
|
{
|
|
Dice dice;
|
|
|
|
stdlib->nextRand = 0;
|
|
TS_ASSERT_EQUALS(dice.roll(), 1);
|
|
|
|
stdlib->nextRand = 2;
|
|
TS_ASSERT_EQUALS(dice.roll(), 3);
|
|
|
|
stdlib->nextRand = 5;
|
|
TS_ASSERT_EQUALS(dice.roll(), 6);
|
|
|
|
stdlib->nextRand = 7;
|
|
TS_ASSERT_EQUALS(dice.roll(), 2);
|
|
}
|
|
|
|
void test_Temporary_override_of_one_mock_function()
|
|
{
|
|
Dice dice;
|
|
|
|
stdlib->nextRand = 2;
|
|
TS_ASSERT_EQUALS(dice.roll(), 3);
|
|
|
|
class Five : public T::Base_rand { int rand() { return 5; } };
|
|
|
|
Five *five = new Five;
|
|
TS_ASSERT_EQUALS(dice.roll(), 6);
|
|
TS_ASSERT_EQUALS(dice.roll(), 6);
|
|
TS_ASSERT_EQUALS(dice.roll(), 6);
|
|
delete five;
|
|
|
|
stdlib->nextRand = 1;
|
|
TS_ASSERT_EQUALS(dice.roll(), 2);
|
|
}
|
|
};
|