home *** CD-ROM | disk | FTP | other *** search
/ ANews 1 / AnewsCD01.iso / Indispensables / Compression / xad / Developer / Sources / test / TestxadDate2.c < prev   
C/C++ Source or Header  |  1999-08-09  |  4KB  |  140 lines

  1. #include <proto/xadmaster.h>
  2. #include <proto/exec.h>
  3. #include <proto/dos.h>
  4.  
  5. struct xadMasterBase *xadMasterBase;
  6.  
  7. void dotest(ULONG a, ULONG b, ULONG c)
  8. {
  9.   struct xadDate xd;
  10.  
  11.   xd.xd_Micros = 0;
  12.   xd.xd_Year = c;
  13.   xd.xd_Month = b;
  14.   xd.xd_Day = a;
  15.   xd.xd_WeekDay = 0;
  16.   xd.xd_Hour = 0;
  17.   xd.xd_Minute = 0;
  18.   xd.xd_Second = 0;
  19.  
  20.   if(xadConvertDates(XAD_DATEXADDATE, &xd, XAD_GETDATEXADDATE, &xd, TAG_DONE))
  21.     Printf("err\n");
  22.   else
  23.     Printf("%ld.%ld.%ld - %ld.%ld.%ld - %ld\n", a, b, c, xd.xd_Day,
  24.   xd.xd_Month, xd.xd_Year, xd.xd_WeekDay);
  25. }
  26.  
  27. void dotest2(ULONG tag, ULONG a, ULONG tr)
  28. {
  29.   struct xadDate xd;
  30.   ULONG i, f;
  31.  
  32.   if(xadConvertDates(tag, a, XAD_MAKELOCALDATE, tr, XAD_GETDATEXADDATE, &xd,
  33.   TAG_DONE))
  34.     Printf("err\n");
  35.   else if(xadConvertDates(XAD_GETDATEUNIX, &i, XAD_MAKEGMTDATE, tr,
  36.   XAD_DATEXADDATE, &xd, TAG_DONE))
  37.     Printf("err3\n");
  38.   else if(xadConvertDates(XAD_GETDATEAMIGA, &f, XAD_DATEXADDATE, &xd,
  39.   TAG_DONE))
  40.     Printf("err4\n");
  41.   else
  42.     Printf("%08lx - %08lx - %08lx - %ld.%ld.%ld - %ld - %02ld:%02ld:%02ld\n", a, i, f, 
  43.   xd.xd_Day, xd.xd_Month, xd.xd_Year, xd.xd_WeekDay, xd.xd_Hour,
  44.   xd.xd_Minute, xd.xd_Second);
  45. }
  46.  
  47. void dotest3(ULONG d, ULONG m, ULONG y, ULONG h, ULONG min, ULONG sec, STRPTR txt)
  48. {
  49.   struct xadDate xd, xd2;
  50.   ULONG i;
  51.  
  52.   xd.xd_WeekDay = 0;
  53.   xd.xd_Day = d;
  54.   xd.xd_Month = m;
  55.   xd.xd_Year = y;
  56.   xd.xd_Micros = 0;
  57.   xd.xd_Second = sec;
  58.   xd.xd_Minute = min;
  59.   xd.xd_Hour = h;
  60.  
  61.   if(!txt)
  62.     txt = "";
  63.  
  64.   Printf("%2ld.%2ld.%4ld %02ld:%02ld:%02ld : ", xd.xd_Day, xd.xd_Month, xd.xd_Year,
  65.   xd.xd_Hour, xd.xd_Minute, xd.xd_Second);
  66.  
  67.   if(xadConvertDates(XAD_GETDATEAMIGA, &i, XAD_DATEXADDATE, &xd, TAG_DONE))
  68.     Printf("Error XAD->AMIGA    - ");
  69.   else if(xadConvertDates(XAD_DATEAMIGA, i, XAD_GETDATEXADDATE, &xd2, TAG_DONE))
  70.     Printf("Error AMIGA->XAD    - ");
  71.   else
  72.     Printf("%2ld.%2ld.%4ld %02ld:%02ld:%02ld - ", xd2.xd_Day, xd2.xd_Month, xd2.xd_Year,
  73.     xd2.xd_Hour, xd2.xd_Minute, xd2.xd_Second);
  74.  
  75.   if(xadConvertDates(XAD_GETDATEUNIX, &i, XAD_DATEXADDATE, &xd, TAG_DONE))
  76.     Printf("Error XAD->UNIX     - ");
  77.   else if(xadConvertDates(XAD_DATEUNIX, i, XAD_GETDATEXADDATE, &xd2, TAG_DONE))
  78.     Printf("Error UNIX->XAD     - ");
  79.   else
  80.     Printf("%2ld.%2ld.%4ld %02ld:%02ld:%02ld - ", xd2.xd_Day, xd2.xd_Month, xd2.xd_Year,
  81.     xd2.xd_Hour, xd2.xd_Minute, xd2.xd_Second);
  82.  
  83.   if(xadConvertDates(XAD_GETDATEMSDOS, &i, XAD_DATEXADDATE, &xd, TAG_DONE))
  84.     Printf("Error XAD->MSDOS    (%s)\n", txt);
  85.   else if(xadConvertDates(XAD_DATEMSDOS, i, XAD_GETDATEXADDATE, &xd2, TAG_DONE))
  86.     Printf("Error MSDOS->XAD    (%s)\n", txt);
  87.   else
  88.     Printf("%2ld.%2ld.%4ld %02ld:%02ld:%02ld (%s)\n", xd2.xd_Day, xd2.xd_Month, xd2.xd_Year,
  89.     xd2.xd_Hour, xd2.xd_Minute, xd2.xd_Second, txt);
  90. }
  91.  
  92. void main(void)
  93. {
  94.   if((xadMasterBase = (struct xadMasterBase *)
  95.   OpenLibrary("xadmaster.library", 1)))
  96.   {
  97.     struct DateStamp d = {0x1433,0x28D,0x877};
  98.  
  99.     dotest(1,1,1);
  100.     dotest(1,1,1700);
  101.     dotest(1,1,1970);
  102.     dotest(1,1,1978);
  103.     dotest2(XAD_DATEUNIX,0x00000000,1);
  104.     dotest2(XAD_DATEUNIX,0x01E13380,1);
  105.     dotest2(XAD_DATEUNIX,0x7FFFFFFF,1);
  106.     dotest2(XAD_DATEUNIX,0xFFFFFFFF,1);
  107.     dotest2(XAD_DATEAMIGA,0x00000000,0);
  108.     dotest2(XAD_DATEAMIGA,0x7FFFFFFF,0);
  109.     dotest2(XAD_DATEAMIGA,0xFFFFFFFF,0);
  110.     dotest2(XAD_DATEDATESTAMP,(ULONG) &d,0);
  111.     Printf("Boundary tests, no local time conversion\n"
  112.     "Test date             Amiga date            Unix date             MSDOS date\n");
  113.     dotest3(31,12,1969,23,59,58,0);
  114.     dotest3(31,12,1969,23,59,59,0);
  115.     dotest3( 1, 1,1970, 0, 0, 0,"UNIX start ");
  116.     dotest3(31,12,1977,23,59,58,0);
  117.     dotest3(31,12,1977,23,59,59,0);
  118.     dotest3( 1, 1,1978, 0, 0, 0,"AMIGA start");
  119.     dotest3(31,12,1979,23,59,58,0);
  120.     dotest3(31,12,1979,23,59,59,0);
  121.     dotest3( 1, 1,1980, 0, 0, 0,"MSDOS start");
  122.     dotest3(31,12,1999,23,59,58,0);
  123.     dotest3(31,12,1999,23,59,59,0);
  124.     dotest3( 1, 1,2000, 0, 0, 0,0);
  125.     dotest3( 7, 2,2106, 6,28,14,0);
  126.     dotest3( 7, 2,2106, 6,28,15,"UNIX end   ");
  127.     dotest3( 7, 2,2106, 6,28,16,0);
  128.     dotest3(31,12,2107,23,59,58,"MSDOS end  ");
  129.     dotest3(31,12,2107,23,59,59,0);
  130.     dotest3( 1, 1,2108, 0, 0, 0,0);
  131.     dotest3( 7, 2,2114, 6,28,14,0);
  132.     dotest3( 7, 2,2114, 6,28,15,"AMIGA end  ");
  133.     dotest3( 7, 2,2114, 6,28,16,0);
  134.  
  135.     CloseLibrary((struct Library *) xadMasterBase);
  136.   }
  137.   else
  138.     Printf("Could not open library\n");
  139. }
  140.