зеркало из https://github.com/mozilla/pjs.git
bug 518425: C++ unit test for bug
This commit is contained in:
Родитель
8053393d5c
Коммит
3eeb976774
|
@ -58,6 +58,7 @@ EXPORT_LIBRARY = 1
|
|||
|
||||
|
||||
IPDLTESTS = \
|
||||
TestManyChildAllocs \
|
||||
TestSanity \
|
||||
$(NULL)
|
||||
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
include protocol "PTestManyChildAllocsSub.ipdl";
|
||||
|
||||
namespace mozilla {
|
||||
namespace _ipdltest {
|
||||
|
||||
protocol PTestManyChildAllocs {
|
||||
manages PTestManyChildAllocsSub;
|
||||
|
||||
child:
|
||||
Go(); // start allocating
|
||||
|
||||
~PTestManyChildAllocsSub();
|
||||
|
||||
parent:
|
||||
Done();
|
||||
|
||||
PTestManyChildAllocsSub();
|
||||
};
|
||||
|
||||
} // namespace _ipdltest
|
||||
} // namespace mozilla
|
|
@ -0,0 +1,16 @@
|
|||
include protocol "PTestManyChildAllocs.ipdl";
|
||||
|
||||
namespace mozilla {
|
||||
namespace _ipdltest {
|
||||
|
||||
protocol PTestManyChildAllocsSub {
|
||||
manager PTestManyChildAllocs;
|
||||
|
||||
parent:
|
||||
Hello();
|
||||
|
||||
// empty
|
||||
};
|
||||
|
||||
} // namespace _ipdltest
|
||||
} // namespace mozilla
|
|
@ -8,6 +8,8 @@ following files (for a test "TestFoo"):
|
|||
|
||||
- TestFoo.cpp, defining the top-level actors
|
||||
|
||||
- (make sure all are in the namespace mozilla::_ipdltest)
|
||||
|
||||
Next
|
||||
|
||||
- add PTestFoo.ipdl to ipdl.mk
|
||||
|
|
|
@ -0,0 +1,110 @@
|
|||
#include "TestManyChildAllocs.h"
|
||||
|
||||
#include "nsIAppShell.h"
|
||||
|
||||
#include "nsCOMPtr.h"
|
||||
#include "nsServiceManagerUtils.h" // do_GetService()
|
||||
#include "nsWidgetsCID.h" // NS_APPSHELL_CID
|
||||
|
||||
#include "IPDLUnitTests.h" // fail etc.
|
||||
|
||||
|
||||
#define NALLOCS 10
|
||||
|
||||
namespace mozilla {
|
||||
namespace _ipdltest {
|
||||
|
||||
// parent code
|
||||
|
||||
TestManyChildAllocsParent::TestManyChildAllocsParent()
|
||||
{
|
||||
MOZ_COUNT_CTOR(TestManyChildAllocsParent);
|
||||
}
|
||||
|
||||
TestManyChildAllocsParent::~TestManyChildAllocsParent()
|
||||
{
|
||||
MOZ_COUNT_DTOR(TestManyChildAllocsParent);
|
||||
}
|
||||
|
||||
void
|
||||
TestManyChildAllocsParent::Main()
|
||||
{
|
||||
if (!SendGo())
|
||||
fail("can't send Go()");
|
||||
}
|
||||
|
||||
bool
|
||||
TestManyChildAllocsParent::RecvDone()
|
||||
{
|
||||
// should clean up ...
|
||||
|
||||
passed("allocs were successfuly");
|
||||
|
||||
static NS_DEFINE_CID(kAppShellCID, NS_APPSHELL_CID);
|
||||
nsCOMPtr<nsIAppShell> appShell (do_GetService(kAppShellCID));
|
||||
appShell->Exit();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
TestManyChildAllocsParent::DeallocPTestManyChildAllocsSub(
|
||||
PTestManyChildAllocsSubParent* __a)
|
||||
{
|
||||
delete __a; return true;
|
||||
}
|
||||
|
||||
PTestManyChildAllocsSubParent*
|
||||
TestManyChildAllocsParent::AllocPTestManyChildAllocsSub()
|
||||
{
|
||||
return new TestManyChildAllocsSubParent();
|
||||
}
|
||||
|
||||
|
||||
// child code
|
||||
|
||||
TestManyChildAllocsChild::TestManyChildAllocsChild()
|
||||
{
|
||||
MOZ_COUNT_CTOR(TestManyChildAllocsChild);
|
||||
}
|
||||
|
||||
TestManyChildAllocsChild::~TestManyChildAllocsChild()
|
||||
{
|
||||
MOZ_COUNT_DTOR(TestManyChildAllocsChild);
|
||||
}
|
||||
|
||||
bool TestManyChildAllocsChild::RecvGo()
|
||||
{
|
||||
for (int i = 0; i < 10; ++i) {
|
||||
PTestManyChildAllocsSubChild* child =
|
||||
SendPTestManyChildAllocsSubConstructor();
|
||||
|
||||
if (!child)
|
||||
fail("can't send ctor()");
|
||||
|
||||
if (!child->SendHello())
|
||||
fail("can't send Hello()");
|
||||
}
|
||||
|
||||
if (!SendDone())
|
||||
fail("can't send Done()");
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool
|
||||
TestManyChildAllocsChild::DeallocPTestManyChildAllocsSub(
|
||||
PTestManyChildAllocsSubChild* __a)
|
||||
{
|
||||
delete __a; return true;
|
||||
}
|
||||
|
||||
PTestManyChildAllocsSubChild*
|
||||
TestManyChildAllocsChild::AllocPTestManyChildAllocsSub()
|
||||
{
|
||||
return new TestManyChildAllocsSubChild();
|
||||
}
|
||||
|
||||
|
||||
} // namespace _ipdltest
|
||||
} // namespace mozilla
|
|
@ -0,0 +1,73 @@
|
|||
#ifndef mozilla__ipdltest_TestManyChildAllocs_h
|
||||
#define mozilla__ipdltest_TestManyChildAllocs_h 1
|
||||
|
||||
#include "mozilla/_ipdltest/PTestManyChildAllocsParent.h"
|
||||
#include "mozilla/_ipdltest/PTestManyChildAllocsChild.h"
|
||||
|
||||
#include "mozilla/_ipdltest/PTestManyChildAllocsSubParent.h"
|
||||
#include "mozilla/_ipdltest/PTestManyChildAllocsSubChild.h"
|
||||
|
||||
namespace mozilla {
|
||||
namespace _ipdltest {
|
||||
|
||||
// top-level protocol
|
||||
|
||||
class TestManyChildAllocsParent :
|
||||
public PTestManyChildAllocsParent
|
||||
{
|
||||
public:
|
||||
TestManyChildAllocsParent();
|
||||
virtual ~TestManyChildAllocsParent();
|
||||
|
||||
void Main();
|
||||
|
||||
protected:
|
||||
virtual bool RecvDone();
|
||||
virtual bool DeallocPTestManyChildAllocsSub(PTestManyChildAllocsSubParent* __a);
|
||||
virtual PTestManyChildAllocsSubParent* AllocPTestManyChildAllocsSub();
|
||||
};
|
||||
|
||||
|
||||
class TestManyChildAllocsChild :
|
||||
public PTestManyChildAllocsChild
|
||||
{
|
||||
public:
|
||||
TestManyChildAllocsChild();
|
||||
virtual ~TestManyChildAllocsChild();
|
||||
|
||||
protected:
|
||||
virtual bool RecvGo();
|
||||
virtual bool DeallocPTestManyChildAllocsSub(PTestManyChildAllocsSubChild* __a);
|
||||
virtual PTestManyChildAllocsSubChild* AllocPTestManyChildAllocsSub();
|
||||
};
|
||||
|
||||
|
||||
// do-nothing sub-protocol actors
|
||||
|
||||
class TestManyChildAllocsSubParent :
|
||||
public PTestManyChildAllocsSubParent
|
||||
{
|
||||
public:
|
||||
TestManyChildAllocsSubParent() { }
|
||||
virtual ~TestManyChildAllocsSubParent() { }
|
||||
|
||||
protected:
|
||||
virtual bool RecvHello() { return true; }
|
||||
};
|
||||
|
||||
|
||||
class TestManyChildAllocsSubChild :
|
||||
public PTestManyChildAllocsSubChild
|
||||
{
|
||||
public:
|
||||
TestManyChildAllocsSubChild() { }
|
||||
virtual ~TestManyChildAllocsSubChild() { }
|
||||
};
|
||||
|
||||
|
||||
|
||||
} // namepsace _ipdltest
|
||||
} // namespace mozilla
|
||||
|
||||
|
||||
#endif // ifndef mozilla__ipdltest_TestManyChildAllocs_h
|
|
@ -1,3 +1,5 @@
|
|||
IPDLSRCS = \
|
||||
PTestManyChildAllocs.ipdl \
|
||||
PTestManyChildAllocsSub.ipdl \
|
||||
PTestSanity.ipdl \
|
||||
$(NULL)
|
||||
|
|
Загрузка…
Ссылка в новой задаче