AzerothCore 3.3.5a
OpenSource WoW Emulator
Loading...
Searching...
No Matches
ProcTestScenario Class Reference

Test context for proc simulation scenarios. More...

#include "ProcChanceTestHelper.h"

Public Member Functions

 ProcTestScenario ()
 
void AdvanceTime (std::chrono::milliseconds duration)
 
std::chrono::steady_clock::time_point GetNow () const
 
UnitStubGetActor ()
 
UnitStub const & GetActor () const
 
ProcTestScenarioWithActorLevel (uint8_t level)
 
ProcTestScenarioWithWeaponSpeed (uint8_t attackType, uint32_t speed)
 
std::unique_ptr< AuraStub > & GetAura ()
 
ProcTestScenarioWithAura (uint32_t spellId, uint8_t charges=0, uint8_t stacks=1)
 
bool SimulateProc (SpellProcEntry const &procEntry, float rollResult=0.0f)
 

Private Attributes

std::chrono::steady_clock::time_point _now
 
UnitStub _actor
 
std::unique_ptr< AuraStub_aura
 

Detailed Description

Test context for proc simulation scenarios.

Constructor & Destructor Documentation

◆ ProcTestScenario()

ProcTestScenario::ProcTestScenario ( )
inline
615: _now(std::chrono::steady_clock::now()) {}
std::chrono::steady_clock::time_point _now
Definition ProcChanceTestHelper.h:687

Member Function Documentation

◆ AdvanceTime()

void ProcTestScenario::AdvanceTime ( std::chrono::milliseconds  duration)
inline
619 {
620 _now += duration;
621 }

References _now.

Referenced by TEST_F(), TEST_F(), and TEST_P().

◆ GetActor() [1/2]

UnitStub & ProcTestScenario::GetActor ( )
inline
626{ return _actor; }
UnitStub _actor
Definition ProcChanceTestHelper.h:688

References _actor.

◆ GetActor() [2/2]

UnitStub const & ProcTestScenario::GetActor ( ) const
inline
627{ return _actor; }

References _actor.

◆ GetAura()

std::unique_ptr< AuraStub > & ProcTestScenario::GetAura ( )
inline
642{ return _aura; }
std::unique_ptr< AuraStub > _aura
Definition ProcChanceTestHelper.h:689

References _aura.

Referenced by TEST_F(), TEST_F(), and TEST_F().

◆ GetNow()

std::chrono::steady_clock::time_point ProcTestScenario::GetNow ( ) const
inline
623{ return _now; }

References _now.

◆ SimulateProc()

bool ProcTestScenario::SimulateProc ( SpellProcEntry const &  procEntry,
float  rollResult = 0.0f 
)
inline
655 {
656 if (!_aura)
657 return false;
658
659 // Check cooldown
661 return false;
662
663 // Calculate chance
665 procEntry,
668
669 // Roll check (rollResult of 0 means always pass)
670 if (rollResult > 0.0f && rollResult > chance)
671 return false;
672
673 // Apply cooldown if set
674 if (procEntry.Cooldown.count() > 0)
675 {
677 static_cast<uint32>(procEntry.Cooldown.count()));
678 }
679
680 // Consume charges
682
683 return true;
684 }
std::uint32_t uint32
Definition Define.h:107
static bool SimulateConsumeProcCharges(AuraStub *aura, SpellProcEntry const &procEntry)
Simulate charge consumption from ConsumeProcCharges()
Definition ProcChanceTestHelper.h:121
static float SimulateCalcProcChance(SpellProcEntry const &procEntry, uint32 actorLevel=80, uint32 weaponSpeed=2500, float chanceModifier=0.0f, float ppmModifier=0.0f, bool hasDamageInfo=true, bool hasHealInfo=false)
Simulate CalcProcChance() from SpellAuras.cpp.
Definition ProcChanceTestHelper.h:85
static void ApplyProcCooldown(AuraStub *aura, std::chrono::steady_clock::time_point now, uint32 cooldownMs)
Apply proc cooldown to aura.
Definition ProcChanceTestHelper.h:163
static bool IsProcOnCooldown(AuraStub const *aura, std::chrono::steady_clock::time_point now)
Check if proc is on cooldown.
Definition ProcChanceTestHelper.h:149
virtual uint8_t GetLevel() const
Definition UnitStub.h:201
virtual uint32_t GetAttackTime(uint8_t attType) const
Definition UnitStub.h:122

References _actor, _aura, _now, ProcChanceTestHelper::ApplyProcCooldown(), SpellProcEntry::Cooldown, UnitStub::GetAttackTime(), UnitStub::GetLevel(), ProcChanceTestHelper::IsProcOnCooldown(), ProcChanceTestHelper::SimulateCalcProcChance(), and ProcChanceTestHelper::SimulateConsumeProcCharges().

Referenced by TEST_F(), TEST_F(), TEST_F(), TEST_F(), and TEST_P().

◆ WithActorLevel()

ProcTestScenario & ProcTestScenario::WithActorLevel ( uint8_t  level)
inline
630 {
631 _actor.SetLevel(level);
632 return *this;
633 }
void SetLevel(uint8_t level)
Definition UnitStub.h:204

References _actor, and UnitStub::SetLevel().

◆ WithAura()

ProcTestScenario & ProcTestScenario::WithAura ( uint32_t  spellId,
uint8_t  charges = 0,
uint8_t  stacks = 1 
)
inline
645 {
646 _aura = std::make_unique<AuraStub>(spellId);
647 _aura->SetCharges(charges);
648 _aura->SetUsingCharges(charges > 0);
649 _aura->SetStackAmount(stacks);
650 return *this;
651 }

References _aura.

Referenced by TEST_F(), TEST_F(), TEST_F(), TEST_F(), and TEST_P().

◆ WithWeaponSpeed()

ProcTestScenario & ProcTestScenario::WithWeaponSpeed ( uint8_t  attackType,
uint32_t  speed 
)
inline
636 {
637 _actor.SetAttackTime(attackType, speed);
638 return *this;
639 }
void SetAttackTime(uint8_t attType, uint32_t time)
Definition UnitStub.h:127

References _actor, and UnitStub::SetAttackTime().

Member Data Documentation

◆ _actor

UnitStub ProcTestScenario::_actor
private

◆ _aura

std::unique_ptr<AuraStub> ProcTestScenario::_aura
private

Referenced by GetAura(), SimulateProc(), and WithAura().

◆ _now

std::chrono::steady_clock::time_point ProcTestScenario::_now
private

Referenced by AdvanceTime(), GetNow(), and SimulateProc().


The documentation for this class was generated from the following file: