#include <proto/xadmaster.h>
#include <proto/exec.h>
#include <proto/dos.h>

struct xadMasterBase *xadMasterBase;

void dotest(ULONG a, ULONG b, ULONG c)
{
  struct xadDate xd;

  xd.xd_Micros = 0;
  xd.xd_Year = c;
  xd.xd_Month = b;
  xd.xd_Day = a;
  xd.xd_WeekDay = 0;
  xd.xd_Hour = 0;
  xd.xd_Minute = 0;
  xd.xd_Second = 0;

  if(xadConvertDates(XAD_DATEXADDATE, &xd, XAD_GETDATEXADDATE, &xd, TAG_DONE))
    Printf("err\n");
  else
    Printf("%ld.%ld.%ld - %ld.%ld.%ld - %ld\n", a, b, c, xd.xd_Day,
  xd.xd_Month, xd.xd_Year, xd.xd_WeekDay);
}

void dotest2(ULONG tag, ULONG a, ULONG tr)
{
  struct xadDate xd;
  ULONG i, f;

  if(xadConvertDates(tag, a, XAD_MAKELOCALDATE, tr, XAD_GETDATEXADDATE, &xd,
  TAG_DONE))
    Printf("err\n");
  else if(xadConvertDates(XAD_GETDATEUNIX, &i, XAD_MAKEGMTDATE, tr,
  XAD_DATEXADDATE, &xd, TAG_DONE))
    Printf("err3\n");
  else if(xadConvertDates(XAD_GETDATEAMIGA, &f, XAD_DATEXADDATE, &xd,
  TAG_DONE))
    Printf("err4\n");
  else
    Printf("%08lx - %08lx - %08lx - %ld.%ld.%ld - %ld - %02ld:%02ld:%02ld\n", a, i, f, 
  xd.xd_Day, xd.xd_Month, xd.xd_Year, xd.xd_WeekDay, xd.xd_Hour,
  xd.xd_Minute, xd.xd_Second);
}

void main(void)
{
  if((xadMasterBase = (struct xadMasterBase *)
  OpenLibrary("xadmaster.library", 1)))
  {
    struct DateStamp d = {0x1433,0x28D,0x877};

    dotest(1,1,1);
    dotest(1,1,1700);
    dotest(1,1,1970);
    dotest(1,1,1978);
    dotest2(XAD_DATEUNIX,0x00000000,1);
    dotest2(XAD_DATEUNIX,0x01E13380,1);
    dotest2(XAD_DATEUNIX,0x7FFFFFFF,1);
    dotest2(XAD_DATEUNIX,0xFFFFFFFF,1);
    dotest2(XAD_DATEAMIGA,0x00000000,0);
    dotest2(XAD_DATEAMIGA,0x7FFFFFFF,0);
    dotest2(XAD_DATEAMIGA,0xFFFFFFFF,0);
    dotest2(XAD_DATEDATESTAMP,(ULONG) &d,0);

    CloseLibrary((struct Library *) xadMasterBase);
  }
  else
    Printf("err2\n");
}
