npc_test_checkweight.txt 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. //===== rAthena Script =======================================
  2. //= Test: Checkweight
  3. //===== By: ==================================================
  4. //= rAthena Dev Team
  5. //===== Last Updated: ========================================
  6. //= 20140123
  7. //===== Description: =========================================
  8. //= Tests 'checkweight' and 'checkweight2' commands.
  9. //============================================================
  10. prontera,161,181,6 script ChkSpace 763,{
  11. function ChkResult;
  12. function FinalReport;
  13. L_RESET:
  14. resetlvl(1);
  15. getinventorylist;
  16. for(set .@i,0; .@i < @inventorylist_count; set .@i,.@i+1){
  17. delitem(@inventorylist_id[.@i],@inventorylist_amount[.@i]); //clear inventory
  18. }
  19. L_TEST1: //basic backward chk
  20. .@testid = 0;
  21. .@success = 0;
  22. .@ret = checkweight(512,10);
  23. set .@success,.@success+ChkResult(.@testid++,1,.@ret); //should be success
  24. .@ret = checkweight("Apple",10);
  25. set .@success,.@success+ChkResult(.@testid++,1,.@ret); //should be success
  26. .@ret = checkweight(6320,33000);
  27. set .@success,.@success+ChkResult(.@testid++,0,.@ret); //should be failure too many item amount item weight=0
  28. .@ret = checkweight("Premium_Reset_Stone",33000);
  29. set .@success,.@success+ChkResult(.@testid++,0,.@ret); //should be failure too many item amount
  30. .@ret = checkweight(717,500);
  31. set .@success,.@success+ChkResult(.@testid++,1,.@ret); //should be success weight based on max weight=2030
  32. .@ret = checkweight(717,1000);
  33. set .@success,.@success+ChkResult(.@testid++,0,.@ret); //should be failure weight based on max weight=2030
  34. .@ret = checkweight(2794,100);
  35. set .@success,.@success+ChkResult(.@testid++,1,.@ret); //should be success
  36. .@ret = checkweight(2794,101);
  37. set .@success,.@success+ChkResult(.@testid++,0,.@ret); //should be failure (with MAX_INVENTORY = 100)
  38. .@ret = checkweight(-1,1);
  39. set .@success,.@success+ChkResult(.@testid++,0,.@ret); //should be failure invalid item id
  40. .@ret = checkweight(512,0);
  41. set .@success,.@success+ChkResult(.@testid++,0,.@ret); //should be failure invalid amount
  42. debugmes "End backward test";
  43. FinalReport(.@testid,.@success);
  44. L_TEST2: //update using list test
  45. .@testid = 0;
  46. .@success = 0;
  47. .@ret = checkweight(512,10,513,10);
  48. set .@success,.@success+ChkResult(.@testid++,1,.@ret); //should be success
  49. .@ret = checkweight("Apple",10,"Banana",10);
  50. set .@success,.@success+ChkResult(.@testid++,1,.@ret); //should be success
  51. .@ret = checkweight(512,80,513,33000);
  52. set .@success,.@success+ChkResult(.@testid++,0,.@ret); //should be failure
  53. .@ret = checkweight("Apple",80,"Banana",33000);
  54. set .@success,.@success+ChkResult(.@testid++,0,.@ret); //should be failure too many item amount
  55. .@ret = checkweight("Apple",10,"Banana",21,512);
  56. set .@success,.@success+ChkResult(.@testid++,0,.@ret); //should be failure invalid nb of args
  57. .@ret = checkweight(717,500,716,100);
  58. set .@success,.@success+ChkResult(.@testid++,1,.@ret); //should be succes weight 1800/2030
  59. .@ret = checkweight(717,500,716,500);
  60. set .@success,.@success+ChkResult(.@testid++,0,.@ret); //should be failure weight 3000/2030
  61. .@ret = checkweight(2794,95,2795,5);
  62. set .@success,.@success+ChkResult(.@testid++,1,.@ret); //should be success
  63. .@ret = checkweight(2794,95,2795,10);
  64. set .@success,.@success+ChkResult(.@testid++,0,.@ret); //should be failure (with MAX_INVENTORY = 100)
  65. .@ret = checkweight(512,1,-1,1);
  66. set .@success,.@success+ChkResult(.@testid++,0,.@ret); //should be failure invalid item id
  67. .@ret = checkweight(512,1,513,0);
  68. set .@success,.@success+ChkResult(.@testid++,0,.@ret); //should be failure invalid amount
  69. .@ret = checkweight(6320,31000,6320,2000);
  70. set .@success,.@success+ChkResult(.@testid++,0,.@ret); //should be failure overamount inventory
  71. .@ret = checkweight(512,1,513,1,514,1,515,1);
  72. set .@success,.@success+ChkResult(.@testid++,1,.@ret); //should be success
  73. debugmes "End update by list tests";
  74. FinalReport(.@testid,.@success);
  75. L_TEST3: //update using array tests
  76. .@testid = 0;
  77. .@success = 0;
  78. setarray .@item[0], 512,513,514,515;
  79. setarray .@count[0], 1,5,9,12;
  80. .@ret = checkweight2(.@item,.@count);
  81. set .@success,.@success+ChkResult(.@testid++,1,.@ret); //should be success
  82. cleararray .@item[0], 0, 4;
  83. cleararray .@count[0], 0, 4;
  84. setarray .@item[0], 512,513,514,515;
  85. setarray .@count[0], 1,5,-1,12;
  86. .@ret = checkweight2(.@item,.@count);
  87. set .@success,.@success+ChkResult(.@testid++,0,.@ret); //should be failure, invalid amount
  88. cleararray .@item[0], 0, 4;
  89. cleararray .@count[0], 0, 4;
  90. setarray .@item[0], 512,513,514,-1;
  91. setarray .@count[0], 1,5,15,12;
  92. .@ret = checkweight2(.@item,.@count);
  93. set .@success,.@success+ChkResult(.@testid++,0,.@ret); //should be failure, invalid id
  94. cleararray .@item[0], 0, 4;
  95. cleararray .@count[0], 0, 4;
  96. setarray .@item[0], 717,715,716,714;
  97. setarray .@count[0], 300,300,300,300;
  98. .@ret = checkweight2(.@item,.@count);
  99. set .@success,.@success+ChkResult(.@testid++,0,.@ret); //should be failure, total by weight
  100. cleararray .@item[0], 0, 4;
  101. cleararray .@count[0], 0, 4;
  102. setarray .@item[0], 6320,6320;
  103. setarray .@count[0], 31000,2000;
  104. .@ret = checkweight2(.@item,.@count);
  105. set .@success,.@success+ChkResult(.@testid++,0,.@ret); //should be failure, total by weight
  106. cleararray .@item[0], 0, 2;
  107. cleararray .@count[0], 0, 2;
  108. setarray .@item[0], 2794,2795;
  109. setarray .@count[0], 95,5;
  110. .@ret = checkweight2(.@item,.@count);
  111. set .@success,.@success+ChkResult(.@testid++,1,.@ret); //should be success
  112. setarray .@count[0], 95,10;
  113. .@ret = checkweight2(.@item,.@count);
  114. set .@success,.@success+ChkResult(.@testid++,0,.@ret); //should be failure overamount item
  115. cleararray .@item[0], 0, 2;
  116. cleararray .@count[0], 0, 2;
  117. setarray .@item[0], 6320,6320,512;
  118. setarray .@count[0], 1,3;
  119. .@ret = checkweight2(.@item,.@count);
  120. set .@success,.@success+ChkResult(.@testid++,0,.@ret); //should be failure, size mismatch
  121. cleararray .@item[0], 0, 3;
  122. cleararray .@count[0], 0, 2;
  123. setarray .@item[0], 6320,6321;
  124. setarray .@count[0], 1,3,5;
  125. .@ret = checkweight2(.@item,.@count);
  126. set .@success,.@success+ChkResult(.@testid++,0,.@ret); //should be failure, size mismatch
  127. set .@weight_limit, MaxWeight;
  128. set MaxWeight, 2147483647; //currently maxweight is stored as uint32 (2^32-1)
  129. cleararray .@item[0], 0, 2;
  130. cleararray .@count[0], 0, 3;
  131. setarray .@item[0], 714;
  132. setarray .@count[0], 300;
  133. .@ret = checkweight2(.@item,.@count);
  134. set MaxWeight, .@weight_limit;
  135. set .@success,.@success+ChkResult(.@testid++,1,.@ret); //should be success, (test weight over 65k)
  136. debugmes "End update by array tests";
  137. FinalReport(.@testid,.@success);
  138. L_FINAL:
  139. end;
  140. function ChkResult {
  141. .@tid = getarg(0);
  142. .@expected = getarg(1);
  143. .@ret = getarg(2);
  144. .@success = (.@ret==.@expected);
  145. debugmes "Test "+.@tid+" = "+(.@success?"Success":"Fail");
  146. return .@success;
  147. }
  148. function FinalReport {
  149. .@tdone = getarg(0);
  150. .@success = getarg(1);
  151. debugmes "Results = Pass : "+.@success+"/"+.@tdone+" Fails : "+(.@tdone-.@success)+"/"+.@tdone;
  152. if(.@success != .@tdone) { debugmes "One or more failures have occurred. Enable chkresult print to find failed tests."; }
  153. return;
  154. }
  155. }