PluginsHookTest.pm
上传用户:market2
上传日期:2018-11-18
资源大小:18786k
文件大小:3k
源码类别:

外挂编程

开发平台:

Windows_Unix

  1. package PluginsHookTest;
  2. use strict;
  3. use Test::More;
  4. use Plugins;
  5. sub start {
  6. print "### Starting PluginsHookTestn";
  7. testAddHook();
  8. testAddHooks();
  9. testLegacyAPI();
  10. }
  11. sub testAddHook {
  12. my $value;
  13. ok(!Plugins::hasHook('hook1'));
  14. ok(!Plugins::hasHook('hook2'));
  15. ok(!Plugins::hasHook('hook3'));
  16. ok(!Plugins::hasHook('foo hook'));
  17. my $handle1 = Plugins::addHook('hook1', sub { $value = 1; });
  18. ok(Plugins::hasHook('hook1'));
  19. ok(!Plugins::hasHook('hook2'));
  20. ok(!Plugins::hasHook('hook3'));
  21. ok(!Plugins::hasHook('foo hook'));
  22. Plugins::callHook('hook2');
  23. ok(!defined($value));
  24. Plugins::callHook('hook1');
  25. is($value, 1);
  26. my $handle2 = Plugins::addHook('hook2', sub { $value = 2; });
  27. ok(Plugins::hasHook('hook1'));
  28. ok(Plugins::hasHook('hook2'));
  29. ok(!Plugins::hasHook('hook3'));
  30. ok(!Plugins::hasHook('foo hook'));
  31. Plugins::callHook('hook1');
  32. is($value, 1);
  33. Plugins::callHook('hook2');
  34. is($value, 2);
  35. Plugins::callHook('hook3');
  36. is($value, 2);
  37. my $handle3 = Plugins::addHook('hook1', sub { $value = 3; });
  38. ok(Plugins::hasHook('hook1'));
  39. ok(Plugins::hasHook('hook2'));
  40. ok(!Plugins::hasHook('hook3'));
  41. ok(!Plugins::hasHook('foo hook'));
  42. Plugins::callHook('hook1');
  43. is($value, 3);
  44. Plugins::callHook('hook2');
  45. is($value, 2);
  46. Plugins::delHook($handle1);
  47. ok(Plugins::hasHook('hook1'));
  48. ok(Plugins::hasHook('hook2'));
  49. ok(!Plugins::hasHook('hook3'));
  50. ok(!Plugins::hasHook('foo hook'));
  51. Plugins::callHook('hook2');
  52. is($value, 2);
  53. Plugins::callHook('hook1');
  54. is($value, 3);
  55. Plugins::delHook($handle3);
  56. ok(!Plugins::hasHook('hook1'));
  57. ok(Plugins::hasHook('hook2'));
  58. ok(!Plugins::hasHook('hook3'));
  59. ok(!Plugins::hasHook('foo hook'));
  60. Plugins::callHook('hook2');
  61. is($value, 2);
  62. Plugins::callHook('hook1');
  63. is($value, 2);
  64. Plugins::delHook($handle2);
  65. ok(!Plugins::hasHook('hook1'));
  66. ok(!Plugins::hasHook('hook2'));
  67. ok(!Plugins::hasHook('hook3'));
  68. ok(!Plugins::hasHook('foo hook'));
  69. }
  70. sub testAddHooks {
  71. my $value;
  72. my $handle = Plugins::addHooks(
  73. ['hook1', sub { $value = 1; }],
  74. ['hook2', sub { $value = 2; }]
  75. );
  76. ok(Plugins::hasHook('hook1'));
  77. ok(Plugins::hasHook('hook2'));
  78. ok(!Plugins::hasHook('hook3'));
  79. Plugins::callHook('hook1');
  80. is($value, 1);
  81. Plugins::callHook('hook2');
  82. is($value, 2);
  83. Plugins::delHook($handle);
  84. ok(!Plugins::hasHook('hook1'));
  85. ok(!Plugins::hasHook('hook2'));
  86. ok(!Plugins::hasHook('hook3'));
  87. Plugins::callHook('hook1');
  88. is($value, 2);
  89. }
  90. sub testLegacyAPI {
  91. my $handle = Plugins::addHook('hook1', sub {});
  92. ok(Plugins::hasHook('hook1'));
  93. Plugins::delHook('hook1', $handle);
  94. ok(!Plugins::hasHook('hook1'));
  95. }
  96. 1;