summaryrefslogtreecommitdiff
path: root/tests/test-memory-leaks/test-memory-leaks.cpp
blob: fa888a3f33d65a155b70178f7f8ec95a0150afb7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include "test-memory-leaks.h"
#include <cassert>

const int ITERATIONS = 20000;

void MemoryLeakTest::test() {
  set = new ResourceSet("player", this);

  iterations = ITERATIONS;

  AudioResource *audioResource = new ResourcePolicy::AudioResource("player");
  set->addResourceObject(audioResource);

  connect(set,  SIGNAL(resourcesGranted(QList<ResourcePolicy::ResourceType>)),
         this, SLOT(resourceAcquiredHandler(QList<ResourcePolicy::ResourceType>)));

  connect(set, SIGNAL(resourcesReleased()), this, SLOT(resourceReleasedHandler()));

  set->acquire();
}


void MemoryLeakTest::resourceAcquiredHandler(QList<ResourceType> notused)
{
  (void) notused;
  QList<Resource*> list = set->resources();
    if (list.count() == 0) {
        printf("Granted resource set is empty\n");
    }
    else {
      for (int i = 0; i < list.count(); i++) {
        //printf("Granted resource %d\n", (int)list[i]);
      }

      set->release();

    }
}

void MemoryLeakTest::resourceReleasedHandler()
{
    set->acquire();
    iterations--;
    printf("iteration %d\n", (ITERATIONS-iterations+1));
    if (iterations <= 0)  exit(0);

}



int main(int argc, char* argv[]) {

  QCoreApplication app(argc, argv);

  MemoryLeakTest *leaks = new MemoryLeakTest();

  leaks->test();

  return app.exec();
  delete leaks;
}