diff options
author | Andreas Kling <awesomekling@gmail.com> | 2019-07-21 11:34:31 +0200 |
---|---|---|
committer | Andreas Kling <awesomekling@gmail.com> | 2019-07-21 11:34:31 +0200 |
commit | 41792835627e9cb7c97d92e2d829dfc4bbaea9d8 (patch) | |
tree | ef514d7532208184fdb8cc755cae13ab7cfab287 /AK/Tests | |
parent | 2fedf3627649e115ade2d7c803de7a9c7e2fecec (diff) | |
download | serenity-41792835627e9cb7c97d92e2d829dfc4bbaea9d8.zip |
AK: Add some basic unit tests for WeakPtr.
Diffstat (limited to 'AK/Tests')
-rw-r--r-- | AK/Tests/Makefile | 7 | ||||
-rw-r--r-- | AK/Tests/TestWeakPtr.cpp | 57 |
2 files changed, 62 insertions, 2 deletions
diff --git a/AK/Tests/Makefile b/AK/Tests/Makefile index 04acb7a270..a9d2deb49b 100644 --- a/AK/Tests/Makefile +++ b/AK/Tests/Makefile @@ -1,8 +1,8 @@ -PROGRAMS = TestString TestQueue TestVector TestHashMap TestJSON +PROGRAMS = TestString TestQueue TestVector TestHashMap TestJSON TestWeakPtr all: $(PROGRAMS) -CXXFLAGS = -std=c++17 -Wall -Wextra +CXXFLAGS = -std=c++17 -Wall -Wextra -ggdb3 -O2 TestString: TestString.cpp ../String.cpp ../StringImpl.cpp ../StringBuilder.cpp ../StringView.cpp ../TestSuite.h ../LogStream.cpp $(CXX) $(CXXFLAGS) -I../ -I../../ -o $@ TestString.cpp ../String.cpp ../StringImpl.cpp ../StringBuilder.cpp ../StringView.cpp ../LogStream.cpp @@ -19,5 +19,8 @@ TestHashMap: TestHashMap.cpp ../String.cpp ../StringImpl.cpp ../StringBuilder.cp TestJSON: TestJSON.cpp ../String.cpp ../StringImpl.cpp ../StringBuilder.cpp ../StringView.cpp ../TestSuite.h ../LogStream.cpp ../JsonObject.cpp ../JsonValue.cpp ../JsonArray.cpp ../JsonParser.cpp $(CXX) $(CXXFLAGS) -I../ -I../../ -o $@ TestJSON.cpp ../String.cpp ../StringImpl.cpp ../StringBuilder.cpp ../StringView.cpp ../LogStream.cpp ../JsonObject.cpp ../JsonValue.cpp ../JsonArray.cpp ../JsonParser.cpp +TestWeakPtr: TestWeakPtr.cpp ../String.cpp ../StringImpl.cpp ../StringBuilder.cpp ../StringView.cpp ../TestSuite.h ../LogStream.cpp ../WeakPtr.h ../Weakable.h + $(CXX) $(CXXFLAGS) -I../ -I../../ -o $@ TestWeakPtr.cpp ../String.cpp ../StringImpl.cpp ../StringBuilder.cpp ../StringView.cpp ../LogStream.cpp + clean: rm -f $(PROGRAMS) diff --git a/AK/Tests/TestWeakPtr.cpp b/AK/Tests/TestWeakPtr.cpp new file mode 100644 index 0000000000..f3145544ef --- /dev/null +++ b/AK/Tests/TestWeakPtr.cpp @@ -0,0 +1,57 @@ +#include <AK/TestSuite.h> +#include <AK/AKString.h> +#include <AK/Weakable.h> +#include <AK/WeakPtr.h> + +namespace AK{ +int g_weaklinks = 0; +} + +class SimpleWeakable : public Weakable<SimpleWeakable> { +public: + SimpleWeakable() {} + +private: + int m_member { 123 }; +}; + +TEST_CASE(basic_weak) +{ + WeakPtr<SimpleWeakable> weak1; + WeakPtr<SimpleWeakable> weak2; + + { + SimpleWeakable simple; + weak1 = simple.make_weak_ptr(); + weak2 = simple.make_weak_ptr(); + EXPECT_EQ(weak1.is_null(), false); + EXPECT_EQ(weak2.is_null(), false); + EXPECT_EQ(weak1.ptr(), &simple); + EXPECT_EQ(weak1.ptr(), weak2.ptr()); + } + + EXPECT_EQ(weak1.is_null(), true); + EXPECT_EQ(weak1.ptr(), nullptr); + EXPECT_EQ(weak1.ptr(), weak2.ptr()); +} + +TEST_CASE(weakptr_move) +{ + WeakPtr<SimpleWeakable> weak1; + WeakPtr<SimpleWeakable> weak2; + + { + SimpleWeakable simple; + weak1 = simple.make_weak_ptr(); + weak2 = move(weak1); + EXPECT_EQ(weak1.is_null(), true); + EXPECT_EQ(weak2.is_null(), false); + EXPECT_EQ(weak2.ptr(), &simple); + } + + EXPECT_EQ(weak2.is_null(), false); + + fprintf(stderr, "ok\n"); +} + +TEST_MAIN(WeakPtr) |