AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
SpellProcTriggeredFilterTest.cpp File Reference

Unit tests for triggered spell filtering in proc system. More...

#include "ProcChanceTestHelper.h"
#include "ProcEventInfoHelper.h"
#include "gtest/gtest.h"

Go to the source code of this file.

Classes

class  SpellProcTriggeredFilterTest
 

Functions

 TEST_F (SpellProcTriggeredFilterTest, SelfLoop_BlocksWhenTriggeredBySameAura)
 
 TEST_F (SpellProcTriggeredFilterTest, SelfLoop_AllowsWhenTriggeredByDifferentAura)
 
 TEST_F (SpellProcTriggeredFilterTest, SelfLoop_AllowsWhenNotTriggered)
 
 TEST_F (SpellProcTriggeredFilterTest, TriggeredSpell_BlockedByDefault)
 
 TEST_F (SpellProcTriggeredFilterTest, NonTriggeredSpell_AllowedByDefault)
 
 TEST_F (SpellProcTriggeredFilterTest, CanProcFromProcs_AllowsTriggeredSpells)
 
 TEST_F (SpellProcTriggeredFilterTest, TriggeredCanProcAttribute_AllowsTriggeredSpells)
 
 TEST_F (SpellProcTriggeredFilterTest, NotAProc_AllowsTriggeredSpell)
 
 TEST_F (SpellProcTriggeredFilterTest, AutoAttackMelee_AllowsTriggeredSpells)
 
 TEST_F (SpellProcTriggeredFilterTest, AutoAttackRanged_AllowsTriggeredSpells)
 
 TEST_F (SpellProcTriggeredFilterTest, TakenAutoAttack_AllowsTriggeredSpells)
 
 TEST_F (SpellProcTriggeredFilterTest, KillEvent_AllowsTriggeredSpells)
 
 TEST_F (SpellProcTriggeredFilterTest, KilledEvent_AllowsTriggeredSpells)
 
 TEST_F (SpellProcTriggeredFilterTest, DeathEvent_AllowsTriggeredSpells)
 
 TEST_F (SpellProcTriggeredFilterTest, KillWithOtherFlags_StillAllowsTriggeredSpells)
 
 TEST_F (SpellProcTriggeredFilterTest, Scenario_RapidKilling_AutoShotKill)
 
 TEST_F (SpellProcTriggeredFilterTest, KillEvent_SelfLoopStillBlocked)
 
 TEST_F (SpellProcTriggeredFilterTest, Combined_SelfLoopTakesPrecedence)
 
 TEST_F (SpellProcTriggeredFilterTest, Combined_MultipleExceptions)
 
 TEST_F (SpellProcTriggeredFilterTest, Scenario_HotStreak_TriggeredPyroblast)
 
 TEST_F (SpellProcTriggeredFilterTest, Scenario_SwordSpec_ChainProcs)
 
 TEST_F (SpellProcTriggeredFilterTest, Scenario_WindfuryWeapon_AutoAttack)
 
 TEST_F (SpellProcTriggeredFilterTest, EdgeCase_ZeroEventMask)
 
 TEST_F (SpellProcTriggeredFilterTest, EdgeCase_AllExceptionsDisabled)
 

Detailed Description

Unit tests for triggered spell filtering in proc system.

Tests the logic from SpellAuras.cpp:2191-2209:

  • Self-loop prevention (spell triggered by same aura)
  • Triggered spell blocking (default behavior)
  • SPELL_ATTR3_CAN_PROC_FROM_PROCS exception
  • PROC_ATTR_TRIGGERED_CAN_PROC exception
  • SPELL_ATTR3_NOT_A_PROC exception
  • AUTO_ATTACK_PROC_FLAG_MASK exception

Definition in file SpellProcTriggeredFilterTest.cpp.

Function Documentation

◆ TEST_F() [1/24]

TEST_F ( SpellProcTriggeredFilterTest  ,
AutoAttackMelee_AllowsTriggeredSpells   
)
204{
206 config.isTriggered = true;
207 config.auraHasCanProcFromProcs = false;
208 config.spellHasNotAProc = false;
209
210 auto procEntry = CreateBasicProcEntry();
211
212 // Event mask includes auto-attack - exception applies
214
216 config, procEntry, autoAttackEvent))
217 << "AUTO_ATTACK_PROC_FLAG_MASK (melee) should allow triggered spells";
218}
std::uint32_t uint32
Definition Define.h:107
@ PROC_FLAG_DONE_MELEE_AUTO_ATTACK
Definition SpellMgr.h:113
static bool ShouldBlockTriggeredSpell(TriggeredSpellConfig const &config, SpellProcEntry const &procEntry, uint32 eventTypeMask)
Simulate triggered spell filtering Implements the self-loop prevention and triggered spell blocking f...
Definition ProcChanceTestHelper.h:256
Configuration for simulating triggered spell filtering.
Definition ProcChanceTestHelper.h:239
bool isTriggered
Definition ProcChanceTestHelper.h:240
bool spellHasNotAProc
Definition ProcChanceTestHelper.h:242
bool auraHasCanProcFromProcs
Definition ProcChanceTestHelper.h:241

References ProcChanceTestHelper::TriggeredSpellConfig::auraHasCanProcFromProcs, ProcChanceTestHelper::TriggeredSpellConfig::isTriggered, PROC_FLAG_DONE_MELEE_AUTO_ATTACK, ProcChanceTestHelper::ShouldBlockTriggeredSpell(), and ProcChanceTestHelper::TriggeredSpellConfig::spellHasNotAProc.

◆ TEST_F() [2/24]

TEST_F ( SpellProcTriggeredFilterTest  ,
AutoAttackRanged_AllowsTriggeredSpells   
)
221{
223 config.isTriggered = true;
224 config.auraHasCanProcFromProcs = false;
225 config.spellHasNotAProc = false;
226
227 auto procEntry = CreateBasicProcEntry();
228
229 // Hunter auto-shot or wand (ranged auto-attack)
231
233 config, procEntry, rangedAutoEvent))
234 << "AUTO_ATTACK_PROC_FLAG_MASK (ranged) should allow triggered spells";
235}
@ PROC_FLAG_DONE_RANGED_AUTO_ATTACK
Definition SpellMgr.h:119

References ProcChanceTestHelper::TriggeredSpellConfig::auraHasCanProcFromProcs, ProcChanceTestHelper::TriggeredSpellConfig::isTriggered, PROC_FLAG_DONE_RANGED_AUTO_ATTACK, ProcChanceTestHelper::ShouldBlockTriggeredSpell(), and ProcChanceTestHelper::TriggeredSpellConfig::spellHasNotAProc.

◆ TEST_F() [3/24]

TEST_F ( SpellProcTriggeredFilterTest  ,
CanProcFromProcs_AllowsTriggeredSpells   
)
142{
144 config.isTriggered = true;
145 config.auraHasCanProcFromProcs = true; // Exception: aura has SPELL_ATTR3_CAN_PROC_FROM_PROCS
146 config.spellHasNotAProc = false;
147
148 auto procEntry = CreateBasicProcEntry();
149
150 // Should be allowed due to aura attribute
153 << "SPELL_ATTR3_CAN_PROC_FROM_PROCS should allow triggered spells";
154}
@ PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_NEG
Definition SpellMgr.h:134

References ProcChanceTestHelper::TriggeredSpellConfig::auraHasCanProcFromProcs, ProcChanceTestHelper::TriggeredSpellConfig::isTriggered, PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_NEG, ProcChanceTestHelper::ShouldBlockTriggeredSpell(), and ProcChanceTestHelper::TriggeredSpellConfig::spellHasNotAProc.

◆ TEST_F() [4/24]

TEST_F ( SpellProcTriggeredFilterTest  ,
Combined_MultipleExceptions   
)
387{
389 config.isTriggered = true;
390 config.auraHasCanProcFromProcs = true; // Exception 1
391 config.spellHasNotAProc = true; // Exception 2
392
393 auto procEntry = SpellProcEntryBuilder()
396 .WithChance(100.0f)
397 .Build();
398
399 // Should be allowed (multiple exceptions all pass)
402 << "Multiple exceptions should still allow proc";
403}
@ PROC_ATTR_TRIGGERED_CAN_PROC
Definition SpellMgr.h:277
Builder class for creating SpellProcEntry test instances.
Definition ProcEventInfoHelper.h:141
SpellProcEntry Build() const
Definition ProcEventInfoHelper.h:226
SpellProcEntryBuilder & WithChance(float chance)
Definition ProcEventInfoHelper.h:208
SpellProcEntryBuilder & WithAttributesMask(uint32 attributesMask)
Definition ProcEventInfoHelper.h:190
SpellProcEntryBuilder & WithProcFlags(uint32 procFlags)
Definition ProcEventInfoHelper.h:166

References ProcChanceTestHelper::TriggeredSpellConfig::auraHasCanProcFromProcs, SpellProcEntryBuilder::Build(), ProcChanceTestHelper::TriggeredSpellConfig::isTriggered, PROC_ATTR_TRIGGERED_CAN_PROC, PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_NEG, ProcChanceTestHelper::ShouldBlockTriggeredSpell(), ProcChanceTestHelper::TriggeredSpellConfig::spellHasNotAProc, SpellProcEntryBuilder::WithAttributesMask(), SpellProcEntryBuilder::WithChance(), and SpellProcEntryBuilder::WithProcFlags().

◆ TEST_F() [5/24]

TEST_F ( SpellProcTriggeredFilterTest  ,
Combined_SelfLoopTakesPrecedence   
)
367{
369 config.isTriggered = true;
370 config.triggeredByAuraSpellId = 12345;
371 config.procAuraSpellId = 12345; // Self-loop
372 config.auraHasCanProcFromProcs = true; // Would normally allow
373
374 auto procEntry = SpellProcEntryBuilder()
377 .WithChance(100.0f)
378 .Build();
379
380 // Self-loop should still block even with exceptions
383 << "Self-loop should block even when TRIGGERED_CAN_PROC is set";
384}
uint32 triggeredByAuraSpellId
Definition ProcChanceTestHelper.h:243
uint32 procAuraSpellId
Definition ProcChanceTestHelper.h:244

References ProcChanceTestHelper::TriggeredSpellConfig::auraHasCanProcFromProcs, SpellProcEntryBuilder::Build(), ProcChanceTestHelper::TriggeredSpellConfig::isTriggered, PROC_ATTR_TRIGGERED_CAN_PROC, PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_NEG, ProcChanceTestHelper::TriggeredSpellConfig::procAuraSpellId, ProcChanceTestHelper::ShouldBlockTriggeredSpell(), ProcChanceTestHelper::TriggeredSpellConfig::triggeredByAuraSpellId, SpellProcEntryBuilder::WithAttributesMask(), SpellProcEntryBuilder::WithChance(), and SpellProcEntryBuilder::WithProcFlags().

◆ TEST_F() [6/24]

TEST_F ( SpellProcTriggeredFilterTest  ,
DeathEvent_AllowsTriggeredSpells   
)
292{
294 config.isTriggered = true;
295 config.auraHasCanProcFromProcs = false;
296 config.spellHasNotAProc = false;
297
298 auto procEntry = CreateBasicProcEntry();
299
300 // PROC_FLAG_DEATH should bypass triggered-spell filter
302 config, procEntry, PROC_FLAG_DEATH))
303 << "PROC_FLAG_DEATH should allow triggered spells";
304}
@ PROC_FLAG_DEATH
Definition SpellMgr.h:146

References ProcChanceTestHelper::TriggeredSpellConfig::auraHasCanProcFromProcs, ProcChanceTestHelper::TriggeredSpellConfig::isTriggered, PROC_FLAG_DEATH, ProcChanceTestHelper::ShouldBlockTriggeredSpell(), and ProcChanceTestHelper::TriggeredSpellConfig::spellHasNotAProc.

◆ TEST_F() [7/24]

◆ TEST_F() [8/24]

TEST_F ( SpellProcTriggeredFilterTest  ,
EdgeCase_ZeroEventMask   
)
469{
471 config.isTriggered = true;
472 config.auraHasCanProcFromProcs = false;
473
474 auto procEntry = CreateBasicProcEntry();
475
476 // Zero event mask means no auto-attack exception
478 config, procEntry, 0))
479 << "Zero event mask should not grant auto-attack exception";
480}

References ProcChanceTestHelper::TriggeredSpellConfig::auraHasCanProcFromProcs, ProcChanceTestHelper::TriggeredSpellConfig::isTriggered, and ProcChanceTestHelper::ShouldBlockTriggeredSpell().

◆ TEST_F() [9/24]

TEST_F ( SpellProcTriggeredFilterTest  ,
KilledEvent_AllowsTriggeredSpells   
)
277{
279 config.isTriggered = true;
280 config.auraHasCanProcFromProcs = false;
281 config.spellHasNotAProc = false;
282
283 auto procEntry = CreateBasicProcEntry();
284
285 // PROC_FLAG_KILLED should bypass triggered-spell filter
287 config, procEntry, PROC_FLAG_KILLED))
288 << "PROC_FLAG_KILLED should allow triggered spells";
289}
@ PROC_FLAG_KILLED
Definition SpellMgr.h:110

References ProcChanceTestHelper::TriggeredSpellConfig::auraHasCanProcFromProcs, ProcChanceTestHelper::TriggeredSpellConfig::isTriggered, PROC_FLAG_KILLED, ProcChanceTestHelper::ShouldBlockTriggeredSpell(), and ProcChanceTestHelper::TriggeredSpellConfig::spellHasNotAProc.

◆ TEST_F() [10/24]

TEST_F ( SpellProcTriggeredFilterTest  ,
KillEvent_AllowsTriggeredSpells   
)
262{
264 config.isTriggered = true;
265 config.auraHasCanProcFromProcs = false;
266 config.spellHasNotAProc = false;
267
268 auto procEntry = CreateBasicProcEntry();
269
270 // PROC_FLAG_KILL should bypass triggered-spell filter
272 config, procEntry, PROC_FLAG_KILL))
273 << "PROC_FLAG_KILL should allow triggered spells";
274}
@ PROC_FLAG_KILL
Definition SpellMgr.h:111

References ProcChanceTestHelper::TriggeredSpellConfig::auraHasCanProcFromProcs, ProcChanceTestHelper::TriggeredSpellConfig::isTriggered, PROC_FLAG_KILL, ProcChanceTestHelper::ShouldBlockTriggeredSpell(), and ProcChanceTestHelper::TriggeredSpellConfig::spellHasNotAProc.

◆ TEST_F() [11/24]

TEST_F ( SpellProcTriggeredFilterTest  ,
KillEvent_SelfLoopStillBlocked   
)
345{
346 // Even with kill event exemption, self-loop should still be blocked
348 config.isTriggered = true;
349 config.triggeredByAuraSpellId = 34949; // Same as proc aura
350 config.procAuraSpellId = 34949;
351
352 auto procEntry = SpellProcEntryBuilder()
354 .WithChance(100.0f)
355 .Build();
356
358 config, procEntry, PROC_FLAG_KILL))
359 << "Self-loop should still block even on kill events";
360}

References SpellProcEntryBuilder::Build(), ProcChanceTestHelper::TriggeredSpellConfig::isTriggered, PROC_FLAG_KILL, ProcChanceTestHelper::TriggeredSpellConfig::procAuraSpellId, ProcChanceTestHelper::ShouldBlockTriggeredSpell(), ProcChanceTestHelper::TriggeredSpellConfig::triggeredByAuraSpellId, SpellProcEntryBuilder::WithChance(), and SpellProcEntryBuilder::WithProcFlags().

◆ TEST_F() [12/24]

TEST_F ( SpellProcTriggeredFilterTest  ,
KillWithOtherFlags_StillAllowsTriggeredSpells   
)
307{
309 config.isTriggered = true;
310 config.auraHasCanProcFromProcs = false;
311 config.spellHasNotAProc = false;
312
313 auto procEntry = CreateBasicProcEntry();
314
315 // PROC_FLAG_KILL combined with other flags should still bypass
317
319 config, procEntry, combinedEvent))
320 << "PROC_FLAG_KILL combined with other flags should still bypass filter";
321}

References ProcChanceTestHelper::TriggeredSpellConfig::auraHasCanProcFromProcs, ProcChanceTestHelper::TriggeredSpellConfig::isTriggered, PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_NEG, PROC_FLAG_KILL, ProcChanceTestHelper::ShouldBlockTriggeredSpell(), and ProcChanceTestHelper::TriggeredSpellConfig::spellHasNotAProc.

◆ TEST_F() [13/24]

TEST_F ( SpellProcTriggeredFilterTest  ,
NonTriggeredSpell_AllowedByDefault   
)
123{
125 config.isTriggered = false; // Not triggered
126 config.auraHasCanProcFromProcs = false;
127 config.spellHasNotAProc = false;
128
129 auto procEntry = CreateBasicProcEntry();
130
131 // Should be allowed
134 << "Non-triggered spell should be allowed";
135}

References ProcChanceTestHelper::TriggeredSpellConfig::auraHasCanProcFromProcs, ProcChanceTestHelper::TriggeredSpellConfig::isTriggered, PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_NEG, ProcChanceTestHelper::ShouldBlockTriggeredSpell(), and ProcChanceTestHelper::TriggeredSpellConfig::spellHasNotAProc.

◆ TEST_F() [14/24]

TEST_F ( SpellProcTriggeredFilterTest  ,
NotAProc_AllowsTriggeredSpell   
)
185{
187 config.isTriggered = true;
188 config.auraHasCanProcFromProcs = false;
189 config.spellHasNotAProc = true; // Exception: spell has SPELL_ATTR3_NOT_A_PROC
190
191 auto procEntry = CreateBasicProcEntry();
192
193 // Should be allowed due to spell attribute
196 << "SPELL_ATTR3_NOT_A_PROC should allow triggered spell";
197}

References ProcChanceTestHelper::TriggeredSpellConfig::auraHasCanProcFromProcs, ProcChanceTestHelper::TriggeredSpellConfig::isTriggered, PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_NEG, ProcChanceTestHelper::ShouldBlockTriggeredSpell(), and ProcChanceTestHelper::TriggeredSpellConfig::spellHasNotAProc.

◆ TEST_F() [15/24]

TEST_F ( SpellProcTriggeredFilterTest  ,
Scenario_HotStreak_TriggeredPyroblast   
)
410{
411 // Hot Streak (48108) allows triggered Pyroblast to not proc it again
413 config.isTriggered = true; // Pyroblast was triggered by Hot Streak
414 config.triggeredByAuraSpellId = 48108; // Hot Streak
415 config.procAuraSpellId = 48108; // Hot Streak is checking if it should proc
416
417 auto procEntry = CreateBasicProcEntry();
418
419 // Self-loop: Hot Streak can't proc from spell it triggered
422 << "Hot Streak triggered Pyroblast should not proc Hot Streak";
423}

References ProcChanceTestHelper::TriggeredSpellConfig::isTriggered, PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_NEG, ProcChanceTestHelper::TriggeredSpellConfig::procAuraSpellId, ProcChanceTestHelper::ShouldBlockTriggeredSpell(), and ProcChanceTestHelper::TriggeredSpellConfig::triggeredByAuraSpellId.

◆ TEST_F() [16/24]

TEST_F ( SpellProcTriggeredFilterTest  ,
Scenario_RapidKilling_AutoShotKill   
)
324{
325 // Rapid Killing (34949) has PROC_FLAG_KILL
326 // Auto Shot (75) repeated casts are IsTriggered=true
327 // Kill event should proc Rapid Killing regardless
329 config.isTriggered = true; // Auto Shot is triggered
330 config.auraHasCanProcFromProcs = false; // Rapid Killing doesn't have this
331 config.spellHasNotAProc = false; // Auto Shot doesn't have NOT_A_PROC
332
333 auto procEntry = SpellProcEntryBuilder()
335 .WithChance(100.0f)
336 .Build();
337
338 // PROC_FLAG_KILL exemption should allow this
340 config, procEntry, PROC_FLAG_KILL))
341 << "Rapid Killing should proc from Auto Shot kill";
342}

References ProcChanceTestHelper::TriggeredSpellConfig::auraHasCanProcFromProcs, SpellProcEntryBuilder::Build(), ProcChanceTestHelper::TriggeredSpellConfig::isTriggered, PROC_FLAG_KILL, ProcChanceTestHelper::ShouldBlockTriggeredSpell(), ProcChanceTestHelper::TriggeredSpellConfig::spellHasNotAProc, SpellProcEntryBuilder::WithChance(), and SpellProcEntryBuilder::WithProcFlags().

◆ TEST_F() [17/24]

◆ TEST_F() [18/24]

TEST_F ( SpellProcTriggeredFilterTest  ,
Scenario_WindfuryWeapon_AutoAttack   
)
447{
448 // Windfury Weapon procs from auto-attacks, which are allowed for triggered spells
450 config.isTriggered = true; // Windfury extra attacks are triggered
451 config.auraHasCanProcFromProcs = false;
452
453 auto procEntry = SpellProcEntryBuilder()
455 .WithProcsPerMinute(2.0f)
456 .Build();
457
458 // Auto-attack exception allows triggered Windfury attacks
460 config, procEntry, PROC_FLAG_DONE_MELEE_AUTO_ATTACK))
461 << "Windfury triggered attacks should be allowed (auto-attack exception)";
462}
SpellProcEntryBuilder & WithProcsPerMinute(float ppm)
Definition ProcEventInfoHelper.h:202

References ProcChanceTestHelper::TriggeredSpellConfig::auraHasCanProcFromProcs, SpellProcEntryBuilder::Build(), ProcChanceTestHelper::TriggeredSpellConfig::isTriggered, PROC_FLAG_DONE_MELEE_AUTO_ATTACK, ProcChanceTestHelper::ShouldBlockTriggeredSpell(), SpellProcEntryBuilder::WithProcFlags(), and SpellProcEntryBuilder::WithProcsPerMinute().

◆ TEST_F() [19/24]

TEST_F ( SpellProcTriggeredFilterTest  ,
SelfLoop_AllowsWhenNotTriggered   
)
88{
90 config.isTriggered = false; // Not a triggered spell
91 config.triggeredByAuraSpellId = 0;
92 config.procAuraSpellId = 12345;
93
94 auto procEntry = CreateBasicProcEntry();
95
96 // Non-triggered spell should be allowed
99 << "Non-triggered spell should allow proc";
100}

References ProcChanceTestHelper::TriggeredSpellConfig::isTriggered, PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_NEG, ProcChanceTestHelper::TriggeredSpellConfig::procAuraSpellId, ProcChanceTestHelper::ShouldBlockTriggeredSpell(), and ProcChanceTestHelper::TriggeredSpellConfig::triggeredByAuraSpellId.

◆ TEST_F() [20/24]

TEST_F ( SpellProcTriggeredFilterTest  ,
SelfLoop_AllowsWhenTriggeredByDifferentAura   
)
72{
74 config.isTriggered = true;
75 config.triggeredByAuraSpellId = 12345; // Different from proc aura
76 config.procAuraSpellId = 67890;
77 config.auraHasCanProcFromProcs = true; // Allow triggered spells
78
79 auto procEntry = CreateBasicProcEntry();
80
81 // Different aura should be allowed
84 << "Different aura trigger should allow proc";
85}

References ProcChanceTestHelper::TriggeredSpellConfig::auraHasCanProcFromProcs, ProcChanceTestHelper::TriggeredSpellConfig::isTriggered, PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_NEG, ProcChanceTestHelper::TriggeredSpellConfig::procAuraSpellId, ProcChanceTestHelper::ShouldBlockTriggeredSpell(), and ProcChanceTestHelper::TriggeredSpellConfig::triggeredByAuraSpellId.

◆ TEST_F() [21/24]

TEST_F ( SpellProcTriggeredFilterTest  ,
SelfLoop_BlocksWhenTriggeredBySameAura   
)

◆ TEST_F() [22/24]

TEST_F ( SpellProcTriggeredFilterTest  ,
TakenAutoAttack_AllowsTriggeredSpells   
)
238{
240 config.isTriggered = true;
241 config.auraHasCanProcFromProcs = false;
242 config.spellHasNotAProc = false;
243
244 auto procEntry = CreateBasicProcEntry();
245
246 // Taken melee auto-attack
248
250 config, procEntry, takenMeleeEvent))
251 << "TAKEN_MELEE_AUTO_ATTACK should allow triggered spells";
252}
@ PROC_FLAG_TAKEN_MELEE_AUTO_ATTACK
Definition SpellMgr.h:114

References ProcChanceTestHelper::TriggeredSpellConfig::auraHasCanProcFromProcs, ProcChanceTestHelper::TriggeredSpellConfig::isTriggered, PROC_FLAG_TAKEN_MELEE_AUTO_ATTACK, ProcChanceTestHelper::ShouldBlockTriggeredSpell(), and ProcChanceTestHelper::TriggeredSpellConfig::spellHasNotAProc.

◆ TEST_F() [23/24]

◆ TEST_F() [24/24]

TEST_F ( SpellProcTriggeredFilterTest  ,
TriggeredSpell_BlockedByDefault   
)
107{
109 config.isTriggered = true;
110 config.auraHasCanProcFromProcs = false;
111 config.spellHasNotAProc = false;
112
113 // No TRIGGERED_CAN_PROC attribute
114 auto procEntry = CreateBasicProcEntry();
115
116 // Should be blocked - no exceptions apply
119 << "Triggered spell should be blocked by default";
120}

References ProcChanceTestHelper::TriggeredSpellConfig::auraHasCanProcFromProcs, ProcChanceTestHelper::TriggeredSpellConfig::isTriggered, PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_NEG, ProcChanceTestHelper::ShouldBlockTriggeredSpell(), and ProcChanceTestHelper::TriggeredSpellConfig::spellHasNotAProc.