зеркало из 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 = \
|
IPDLTESTS = \
|
||||||
|
TestManyChildAllocs \
|
||||||
TestSanity \
|
TestSanity \
|
||||||
$(NULL)
|
$(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
|
- TestFoo.cpp, defining the top-level actors
|
||||||
|
|
||||||
|
- (make sure all are in the namespace mozilla::_ipdltest)
|
||||||
|
|
||||||
Next
|
Next
|
||||||
|
|
||||||
- add PTestFoo.ipdl to ipdl.mk
|
- 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 = \
|
IPDLSRCS = \
|
||||||
|
PTestManyChildAllocs.ipdl \
|
||||||
|
PTestManyChildAllocsSub.ipdl \
|
||||||
PTestSanity.ipdl \
|
PTestSanity.ipdl \
|
||||||
$(NULL)
|
$(NULL)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче