mirror of
https://github.com/libSDL2pp/libSDL2pp.git
synced 2025-08-03 19:05:59 -04:00
Add test for optional
This commit is contained in:
parent
d4736c2a0d
commit
e6b31930b6
@ -2,6 +2,7 @@
|
||||
SET(CLI_TESTS
|
||||
test_pointrect
|
||||
test_rwops
|
||||
test_optional
|
||||
)
|
||||
|
||||
# tests which test graphics functionality and thus requre working
|
||||
|
83
tests/test_optional.cc
Normal file
83
tests/test_optional.cc
Normal file
@ -0,0 +1,83 @@
|
||||
#include <string>
|
||||
|
||||
#include <SDL2pp/Optional.hh>
|
||||
|
||||
#include "testing.h"
|
||||
|
||||
using namespace SDL2pp;
|
||||
|
||||
BEGIN_TEST()
|
||||
// Engage/disengage
|
||||
{
|
||||
Optional<int> o;
|
||||
int i;
|
||||
|
||||
// disengaged
|
||||
EXPECT_TRUE((bool)!o);
|
||||
|
||||
// accessing disengaged fails
|
||||
EXPECT_EXCEPTION(i = o.value(), BadOptionalAccess);
|
||||
EXPECT_EXCEPTION(i = o.value(), std::logic_error);
|
||||
|
||||
// value_or test
|
||||
EXPECT_EQUAL(i = o.value_or(234), 234);
|
||||
|
||||
// engage
|
||||
o = 123;
|
||||
|
||||
// engaged
|
||||
EXPECT_TRUE((bool)o);
|
||||
|
||||
// accessing value
|
||||
EXPECT_EQUAL(o.value(), 123);
|
||||
|
||||
// disengage
|
||||
o = NullOpt;
|
||||
|
||||
EXPECT_TRUE((bool)!o);
|
||||
}
|
||||
|
||||
// Equality
|
||||
{
|
||||
Optional<int> o1, o2;
|
||||
|
||||
EXPECT_TRUE(o1 == o2);
|
||||
EXPECT_TRUE(o1 == NullOpt);
|
||||
EXPECT_TRUE(NullOpt == o1);
|
||||
|
||||
o1 = 123;
|
||||
|
||||
EXPECT_TRUE(!(o1 == o2));
|
||||
|
||||
o2 = 124;
|
||||
|
||||
EXPECT_TRUE(!(o1 == o2));
|
||||
|
||||
o2 = 123;
|
||||
|
||||
EXPECT_TRUE(o1 == o2);
|
||||
}
|
||||
|
||||
// Swap
|
||||
{
|
||||
Optional<int> o1, o2;
|
||||
|
||||
o1 = 123;
|
||||
|
||||
EXPECT_TRUE(!o2);
|
||||
EXPECT_TRUE((bool)o1);
|
||||
EXPECT_TRUE(o1 == 123);
|
||||
|
||||
std::swap(o1, o2);
|
||||
|
||||
EXPECT_TRUE(!o1);
|
||||
EXPECT_TRUE((bool)o2);
|
||||
EXPECT_TRUE(o2 == 123);
|
||||
|
||||
o1.swap(o2);
|
||||
|
||||
EXPECT_TRUE(!o2);
|
||||
EXPECT_TRUE((bool)o1);
|
||||
EXPECT_TRUE(o1 == 123);
|
||||
}
|
||||
END_TEST()
|
Loading…
x
Reference in New Issue
Block a user