/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
#include "macrowindow.h"
#include <QDomElement>

MacroWindow *createMacroWindow();
QDomElement getWidgetElement(QString type = "",
			     QString name = "",
			     QString value = "");

//
// Predefined tests
//
#define TEST_CREATION(W)                            \
  QDomElement n = getWidgetElement(#W, "mywidget");	\
  MacroWindow *wnd = createMacroWindow();           \
  W wgd(n, wnd);

#define TEST_DISABLE(W)                             \
  QDomElement n = getWidgetElement(#W, "mywidget");	\
  MacroWindow *wnd = createMacroWindow();           \
  W wdg(n, wnd);                                    \
  wdg.setEnabled(false);                            \
  QCOMPARE(wdg.enabled(), false);                   \
  wdg.setEnabled(true);                             \
  QCOMPARE(wdg.enabled(), true);
  
#define TEST_VALUE(W)                               \
  QDomElement n = getWidgetElement(#W, "mywidget");	\
  MacroWindow *wnd = createMacroWindow();           \
  W wdg(n, wnd);                                    \
  QCOMPARE(wdg.value(), QString(""));               \
  wdg.setValue("hello", "source");                  \
  QCOMPARE(wdg.value(), QString("hello"));

#define TEST_MEMLEAK(C) {                             \
  FILE *memlk_fp = fopen("/proc/self/statm", "r");    \
  int memlk_before;                                   \
  int memlk_after;                                    \
  fscanf(memlk_fp, "%d", &memlk_before);              \
  { C; }                                              \
  rewind(memlk_fp);                                   \
  fscanf(memlk_fp, "%d", &memlk_after);               \
  fclose(memlk_fp);                                   \
  QCOMPARE(memlk_before, memlk_after);                \
  }