mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 01:47:34 +00:00
AK: Add some basic unit tests for WeakPtr.
This commit is contained in:
parent
2fedf36276
commit
4179283562
2 changed files with 62 additions and 2 deletions
57
AK/Tests/TestWeakPtr.cpp
Normal file
57
AK/Tests/TestWeakPtr.cpp
Normal file
|
@ -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)
|
Loading…
Add table
Add a link
Reference in a new issue