tests.inc 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. static
  2. YSI_g_sVariable;
  3. forward y_va_PublicTestFunction(vara, varb);
  4. public y_va_PublicTestFunction(vara, varb)
  5. {
  6. if (vara)
  7. {
  8. YSI_g_sVariable = varb;
  9. }
  10. else
  11. {
  12. ++YSI_g_sVariable;
  13. }
  14. }
  15. static stock y_va_CallRemoteFunction(va_args<>)
  16. {
  17. va_CallRemoteFunction("y_va_PublicTestFunction", "ii", va_start<0>);
  18. }
  19. Test:y_va_CallRemoteFunction()
  20. {
  21. YSI_g_sVariable = 5;
  22. y_va_CallRemoteFunction(0, 11);
  23. ASSERT(YSI_g_sVariable == 6);
  24. y_va_CallRemoteFunction(1, 11);
  25. ASSERT(YSI_g_sVariable == 11);
  26. }
  27. static stock y_va_CallLocalFunction(va_args<>)
  28. {
  29. va_CallLocalFunction("y_va_PublicTestFunction", "ii", va_start<0>);
  30. }
  31. Test:y_va_CallLocalFunction()
  32. {
  33. YSI_g_sVariable = 8;
  34. y_va_CallLocalFunction(0, 45);
  35. ASSERT(YSI_g_sVariable == 9);
  36. y_va_CallLocalFunction(1, 45);
  37. ASSERT(YSI_g_sVariable == 45);
  38. }
  39. static stock y_va_SetTimerEx(va_args<>)
  40. {
  41. return va_SetTimerEx("y_va_SetTimerExPublic", 1000, false, "iii", va_start<0>);
  42. }
  43. Test:va_SetTimerEx()
  44. {
  45. ASSERT(y_va_SetTimerEx(5, 6, 7) != 0);
  46. }
  47. static stock y_va_format(dest[], size, fmat[], va_args<>)
  48. {
  49. va_format(dest, size, fmat, va_start<3>);
  50. }
  51. Test:y_va_format()
  52. {
  53. new
  54. str[64];
  55. y_va_format(str, sizeof (str), "Hello %d %04x %s", 99, 0x1F, "woop");
  56. ASSERT(!strcmp(str, "Hello 99 001F woop"));
  57. }
  58. static stock y_va_return(dest[], size, fmat[], va_args<>)
  59. {
  60. strcpy(dest, va_return(fmat, va_start<3>), size);
  61. }
  62. Test:y_va_return()
  63. {
  64. new
  65. str[YSI_MAX_STRING * 8];
  66. y_va_return(str, sizeof (str), "Hi %.3f %8.8s %8.8s", 5.5, "this is a very long string", "short");
  67. ASSERT(!strcmp(str, "Hi 5.500 this is short "));
  68. }
  69. static stock y_va_DoubleIndirection(dest[1040], fmat[], var0, var1, var2, va_args<>) //var3, var4, size = sizeof (dest))
  70. {
  71. #pragma unused var0, var1, var2
  72. // va_format(dest, 32, fmat, va_start<5>);
  73. dest = va_return(fmat, va_start<5>);
  74. }
  75. Test:y_va_DoubleIndirection()
  76. {
  77. new
  78. dest[1040],
  79. var0 = 44,
  80. var1 = 55,
  81. var2 = 66,
  82. var3 = 77,
  83. var4 = 88;
  84. y_va_DoubleIndirection(dest, "%d %d", var0, var1, var2, var3, var4);
  85. ASSERT(var0 == 44);
  86. ASSERT(var1 == 55);
  87. ASSERT(var2 == 66);
  88. ASSERT(var3 == 77);
  89. ASSERT(var4 == 88);
  90. ASSERT(!strcmp(dest, "77 88"));
  91. }
  92. static stock bool:y_va_Locals(real[], fmat[], va_args<>)
  93. {
  94. new
  95. dest[128];
  96. va_format(dest, sizeof (dest), fmat, va_start<2>);
  97. return !strcmp(dest, real);
  98. }
  99. Test:y_va_Locals()
  100. {
  101. ASSERT(y_va_Locals("42", "%d", 42));
  102. ASSERT(y_va_Locals("42 43 44", "%d %d %d", 42, 43, 44));
  103. ASSERT(y_va_Locals("hi", "%s", "hi"));
  104. ASSERT(y_va_Locals("he -1", "%.2s %d", "hello", -1));
  105. }