diff options
| author | Loek Le Blansch <loek@pipeframe.xyz> | 2024-11-21 10:41:08 +0100 | 
|---|---|---|
| committer | Loek Le Blansch <loek@pipeframe.xyz> | 2024-11-21 10:41:08 +0100 | 
| commit | 5134bebc19c46e4e07a5ec3af1d3f3d2d17a86dd (patch) | |
| tree | 837daf5b5de189d557b6ae8eaed149354a3b5030 /src/test/OptionalRefTest.cpp | |
| parent | 70b1bf50de703330436f2ae9cb103fe33cbb567e (diff) | |
| parent | 115d6f50152dc018073345800ca90b85846ebaa9 (diff) | |
merge `master` into `loek/scripts`
Diffstat (limited to 'src/test/OptionalRefTest.cpp')
| -rw-r--r-- | src/test/OptionalRefTest.cpp | 42 | 
1 files changed, 42 insertions, 0 deletions
| diff --git a/src/test/OptionalRefTest.cpp b/src/test/OptionalRefTest.cpp new file mode 100644 index 0000000..83f7b23 --- /dev/null +++ b/src/test/OptionalRefTest.cpp @@ -0,0 +1,42 @@ +#include <gtest/gtest.h> + +#include <crepe/util/OptionalRef.h> + +using namespace std; +using namespace crepe; +using namespace testing; + +TEST(OptionalRefTest, Normal) { +	string value = "foo"; +	OptionalRef<string> ref = value; + +	EXPECT_TRUE(ref); +	ASSERT_NO_THROW({ +		string & value_ref = ref; +		EXPECT_EQ(value_ref, value); +	}); + +	ref.clear(); +	EXPECT_FALSE(ref); +	ASSERT_THROW({ string & value_ref = ref; }, runtime_error); +} + +TEST(OptionalRefTest, Empty) { +	string value = "foo"; +	OptionalRef<string> ref; + +	EXPECT_FALSE(ref); +	ASSERT_THROW({ string & value_ref = ref; }, runtime_error); +} + +TEST(OptionalRefTest, Chain) { +	string value = "foo"; +	OptionalRef<string> ref1 = value; +	OptionalRef<string> ref2 = ref1; + +	EXPECT_TRUE(ref2); +	string & value_ref = ref2; +	EXPECT_EQ(value_ref, value); +	value_ref = "bar"; +	EXPECT_EQ(value_ref, value); +} |