mirror of
https://github.com/Mezeporta/Erupe.git
synced 2026-03-22 15:43:49 +01:00
Replace the mutable global `_config.ErupeConfig` with dependency injection across 79 files. Config is now threaded through existing paths: `ClientContext.RealClientMode` for packet encoding, `s.server. erupeConfig` for channel handlers, and explicit parameters for utility functions. This removes hidden coupling, enables test parallelism without global save/restore, and prevents low-level packages from reaching up to the config layer. Key changes: - Enrich ClientContext with RealClientMode for packet files - Add mode parameter to CryptConn, mhfitem, mhfcourse functions - Convert handlers_commands init() to lazy sync.Once initialization - Delete global var, init(), and helper functions from config.go - Update all tests to pass config explicitly
367 lines
18 KiB
Go
367 lines
18 KiB
Go
package mhfpacket
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"erupe-ce/common/byteframe"
|
|
_config "erupe-ce/config"
|
|
"erupe-ce/network/clientctx"
|
|
)
|
|
|
|
// TestBuildCoverage_NotImplemented_Extended exercises Build() on all remaining packet types
|
|
// whose Build method returns errors.New("NOT IMPLEMENTED") and was not already covered
|
|
// by TestBuildCoverage_NotImplemented.
|
|
func TestBuildCoverage_NotImplemented_Extended(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
pkt MHFPacket
|
|
}{
|
|
{"MsgMhfAcceptReadReward", &MsgMhfAcceptReadReward{}},
|
|
{"MsgMhfAcquireDistItem", &MsgMhfAcquireDistItem{}},
|
|
{"MsgMhfAcquireFesta", &MsgMhfAcquireFesta{}},
|
|
{"MsgMhfAcquireFestaIntermediatePrize", &MsgMhfAcquireFestaIntermediatePrize{}},
|
|
{"MsgMhfAcquireFestaPersonalPrize", &MsgMhfAcquireFestaPersonalPrize{}},
|
|
{"MsgMhfAcquireGuildAdventure", &MsgMhfAcquireGuildAdventure{}},
|
|
{"MsgMhfAcquireGuildTresure", &MsgMhfAcquireGuildTresure{}},
|
|
{"MsgMhfAcquireGuildTresureSouvenir", &MsgMhfAcquireGuildTresureSouvenir{}},
|
|
{"MsgMhfAcquireItem", &MsgMhfAcquireItem{}},
|
|
{"MsgMhfAcquireMonthlyReward", &MsgMhfAcquireMonthlyReward{}},
|
|
{"MsgMhfAcquireTitle", &MsgMhfAcquireTitle{}},
|
|
{"MsgMhfAcquireTournament", &MsgMhfAcquireTournament{}},
|
|
{"MsgMhfAddAchievement", &MsgMhfAddAchievement{}},
|
|
{"MsgMhfAddGuildMissionCount", &MsgMhfAddGuildMissionCount{}},
|
|
{"MsgMhfAddGuildWeeklyBonusExceptionalUser", &MsgMhfAddGuildWeeklyBonusExceptionalUser{}},
|
|
{"MsgMhfAddRewardSongCount", &MsgMhfAddRewardSongCount{}},
|
|
{"MsgMhfAddUdPoint", &MsgMhfAddUdPoint{}},
|
|
{"MsgMhfAnswerGuildScout", &MsgMhfAnswerGuildScout{}},
|
|
{"MsgMhfApplyBbsArticle", &MsgMhfApplyBbsArticle{}},
|
|
{"MsgMhfApplyCampaign", &MsgMhfApplyCampaign{}},
|
|
{"MsgMhfApplyDistItem", &MsgMhfApplyDistItem{}},
|
|
{"MsgMhfArrangeGuildMember", &MsgMhfArrangeGuildMember{}},
|
|
{"MsgMhfCancelGuildMissionTarget", &MsgMhfCancelGuildMissionTarget{}},
|
|
{"MsgMhfCancelGuildScout", &MsgMhfCancelGuildScout{}},
|
|
{"MsgMhfCaravanMyRank", &MsgMhfCaravanMyRank{}},
|
|
{"MsgMhfCaravanMyScore", &MsgMhfCaravanMyScore{}},
|
|
{"MsgMhfCaravanRanking", &MsgMhfCaravanRanking{}},
|
|
{"MsgMhfChargeFesta", &MsgMhfChargeFesta{}},
|
|
{"MsgMhfChargeGuildAdventure", &MsgMhfChargeGuildAdventure{}},
|
|
{"MsgMhfCheckDailyCafepoint", &MsgMhfCheckDailyCafepoint{}},
|
|
{"MsgMhfContractMercenary", &MsgMhfContractMercenary{}},
|
|
{"MsgMhfCreateGuild", &MsgMhfCreateGuild{}},
|
|
{"MsgMhfCreateJoint", &MsgMhfCreateJoint{}},
|
|
{"MsgMhfCreateMercenary", &MsgMhfCreateMercenary{}},
|
|
{"MsgMhfDebugPostValue", &MsgMhfDebugPostValue{}},
|
|
{"MsgMhfDisplayedAchievement", &MsgMhfDisplayedAchievement{}},
|
|
{"MsgMhfEnterTournamentQuest", &MsgMhfEnterTournamentQuest{}},
|
|
{"MsgMhfEntryFesta", &MsgMhfEntryFesta{}},
|
|
{"MsgMhfEntryRookieGuild", &MsgMhfEntryRookieGuild{}},
|
|
{"MsgMhfEntryTournament", &MsgMhfEntryTournament{}},
|
|
{"MsgMhfEnumerateAiroulist", &MsgMhfEnumerateAiroulist{}},
|
|
{"MsgMhfEnumerateDistItem", &MsgMhfEnumerateDistItem{}},
|
|
{"MsgMhfEnumerateEvent", &MsgMhfEnumerateEvent{}},
|
|
{"MsgMhfEnumerateFestaIntermediatePrize", &MsgMhfEnumerateFestaIntermediatePrize{}},
|
|
{"MsgMhfEnumerateFestaPersonalPrize", &MsgMhfEnumerateFestaPersonalPrize{}},
|
|
{"MsgMhfEnumerateGuacot", &MsgMhfEnumerateGuacot{}},
|
|
{"MsgMhfEnumerateGuild", &MsgMhfEnumerateGuild{}},
|
|
{"MsgMhfEnumerateGuildItem", &MsgMhfEnumerateGuildItem{}},
|
|
{"MsgMhfEnumerateGuildMember", &MsgMhfEnumerateGuildMember{}},
|
|
{"MsgMhfEnumerateGuildMessageBoard", &MsgMhfEnumerateGuildMessageBoard{}},
|
|
{"MsgMhfEnumerateGuildTresure", &MsgMhfEnumerateGuildTresure{}},
|
|
{"MsgMhfEnumerateHouse", &MsgMhfEnumerateHouse{}},
|
|
{"MsgMhfEnumerateMercenaryLog", &MsgMhfEnumerateMercenaryLog{}},
|
|
{"MsgMhfEnumeratePrice", &MsgMhfEnumeratePrice{}},
|
|
{"MsgMhfEnumerateRengokuRanking", &MsgMhfEnumerateRengokuRanking{}},
|
|
{"MsgMhfEnumerateTitle", &MsgMhfEnumerateTitle{}},
|
|
{"MsgMhfEnumerateUnionItem", &MsgMhfEnumerateUnionItem{}},
|
|
{"MsgMhfExchangeKouryouPoint", &MsgMhfExchangeKouryouPoint{}},
|
|
{"MsgMhfGetAchievement", &MsgMhfGetAchievement{}},
|
|
{"MsgMhfGetAdditionalBeatReward", &MsgMhfGetAdditionalBeatReward{}},
|
|
{"MsgMhfGetBbsSnsStatus", &MsgMhfGetBbsSnsStatus{}},
|
|
{"MsgMhfGetBbsUserStatus", &MsgMhfGetBbsUserStatus{}},
|
|
{"MsgMhfGetBoostRight", &MsgMhfGetBoostRight{}},
|
|
{"MsgMhfGetBoxGachaInfo", &MsgMhfGetBoxGachaInfo{}},
|
|
{"MsgMhfGetBreakSeibatuLevelReward", &MsgMhfGetBreakSeibatuLevelReward{}},
|
|
{"MsgMhfGetCaAchievementHist", &MsgMhfGetCaAchievementHist{}},
|
|
{"MsgMhfGetCaUniqueID", &MsgMhfGetCaUniqueID{}},
|
|
{"MsgMhfGetDailyMissionMaster", &MsgMhfGetDailyMissionMaster{}},
|
|
{"MsgMhfGetDailyMissionPersonal", &MsgMhfGetDailyMissionPersonal{}},
|
|
{"MsgMhfGetDistDescription", &MsgMhfGetDistDescription{}},
|
|
{"MsgMhfGetEarthStatus", &MsgMhfGetEarthStatus{}},
|
|
{"MsgMhfGetEarthValue", &MsgMhfGetEarthValue{}},
|
|
{"MsgMhfGetEnhancedMinidata", &MsgMhfGetEnhancedMinidata{}},
|
|
{"MsgMhfGetEquipSkinHist", &MsgMhfGetEquipSkinHist{}},
|
|
{"MsgMhfGetExtraInfo", &MsgMhfGetExtraInfo{}},
|
|
{"MsgMhfGetFixedSeibatuRankingTable", &MsgMhfGetFixedSeibatuRankingTable{}},
|
|
{"MsgMhfGetFpointExchangeList", &MsgMhfGetFpointExchangeList{}},
|
|
{"MsgMhfGetGachaPlayHistory", &MsgMhfGetGachaPlayHistory{}},
|
|
{"MsgMhfGetGuildManageRight", &MsgMhfGetGuildManageRight{}},
|
|
{"MsgMhfGetGuildMissionList", &MsgMhfGetGuildMissionList{}},
|
|
{"MsgMhfGetGuildMissionRecord", &MsgMhfGetGuildMissionRecord{}},
|
|
{"MsgMhfGetGuildScoutList", &MsgMhfGetGuildScoutList{}},
|
|
{"MsgMhfGetGuildTargetMemberNum", &MsgMhfGetGuildTargetMemberNum{}},
|
|
{"MsgMhfGetGuildTresureSouvenir", &MsgMhfGetGuildTresureSouvenir{}},
|
|
{"MsgMhfGetGuildWeeklyBonusActiveCount", &MsgMhfGetGuildWeeklyBonusActiveCount{}},
|
|
{"MsgMhfGetGuildWeeklyBonusMaster", &MsgMhfGetGuildWeeklyBonusMaster{}},
|
|
{"MsgMhfGetKeepLoginBoostStatus", &MsgMhfGetKeepLoginBoostStatus{}},
|
|
{"MsgMhfGetKouryouPoint", &MsgMhfGetKouryouPoint{}},
|
|
{"MsgMhfGetLobbyCrowd", &MsgMhfGetLobbyCrowd{}},
|
|
{"MsgMhfGetPaperData", &MsgMhfGetPaperData{}},
|
|
{"MsgMhfGetRandFromTable", &MsgMhfGetRandFromTable{}},
|
|
{"MsgMhfGetRejectGuildScout", &MsgMhfGetRejectGuildScout{}},
|
|
{"MsgMhfGetRengokuBinary", &MsgMhfGetRengokuBinary{}},
|
|
{"MsgMhfGetRengokuRankingRank", &MsgMhfGetRengokuRankingRank{}},
|
|
{"MsgMhfGetRestrictionEvent", &MsgMhfGetRestrictionEvent{}},
|
|
{"MsgMhfGetRewardSong", &MsgMhfGetRewardSong{}},
|
|
{"MsgMhfGetRyoudama", &MsgMhfGetRyoudama{}},
|
|
{"MsgMhfGetSeibattle", &MsgMhfGetSeibattle{}},
|
|
{"MsgMhfGetSenyuDailyCount", &MsgMhfGetSenyuDailyCount{}},
|
|
{"MsgMhfGetStepupStatus", &MsgMhfGetStepupStatus{}},
|
|
{"MsgMhfGetTenrouirai", &MsgMhfGetTenrouirai{}},
|
|
{"MsgMhfGetTinyBin", &MsgMhfGetTinyBin{}},
|
|
{"MsgMhfGetTrendWeapon", &MsgMhfGetTrendWeapon{}},
|
|
{"MsgMhfGetUdBonusQuestInfo", &MsgMhfGetUdBonusQuestInfo{}},
|
|
{"MsgMhfGetUdDailyPresentList", &MsgMhfGetUdDailyPresentList{}},
|
|
{"MsgMhfGetUdGuildMapInfo", &MsgMhfGetUdGuildMapInfo{}},
|
|
{"MsgMhfGetUdMonsterPoint", &MsgMhfGetUdMonsterPoint{}},
|
|
{"MsgMhfGetUdMyPoint", &MsgMhfGetUdMyPoint{}},
|
|
{"MsgMhfGetUdMyRanking", &MsgMhfGetUdMyRanking{}},
|
|
{"MsgMhfGetUdNormaPresentList", &MsgMhfGetUdNormaPresentList{}},
|
|
{"MsgMhfGetUdRanking", &MsgMhfGetUdRanking{}},
|
|
{"MsgMhfGetUdRankingRewardList", &MsgMhfGetUdRankingRewardList{}},
|
|
{"MsgMhfGetUdSelectedColorInfo", &MsgMhfGetUdSelectedColorInfo{}},
|
|
{"MsgMhfGetUdShopCoin", &MsgMhfGetUdShopCoin{}},
|
|
{"MsgMhfGetUdTacticsBonusQuest", &MsgMhfGetUdTacticsBonusQuest{}},
|
|
{"MsgMhfGetUdTacticsFirstQuestBonus", &MsgMhfGetUdTacticsFirstQuestBonus{}},
|
|
{"MsgMhfGetUdTacticsFollower", &MsgMhfGetUdTacticsFollower{}},
|
|
{"MsgMhfGetUdTacticsLog", &MsgMhfGetUdTacticsLog{}},
|
|
{"MsgMhfGetUdTacticsPoint", &MsgMhfGetUdTacticsPoint{}},
|
|
{"MsgMhfGetUdTacticsRanking", &MsgMhfGetUdTacticsRanking{}},
|
|
{"MsgMhfGetUdTacticsRemainingPoint", &MsgMhfGetUdTacticsRemainingPoint{}},
|
|
{"MsgMhfGetUdTacticsRewardList", &MsgMhfGetUdTacticsRewardList{}},
|
|
{"MsgMhfGetUdTotalPointInfo", &MsgMhfGetUdTotalPointInfo{}},
|
|
{"MsgMhfGetWeeklySeibatuRankingReward", &MsgMhfGetWeeklySeibatuRankingReward{}},
|
|
{"MsgMhfInfoFesta", &MsgMhfInfoFesta{}},
|
|
{"MsgMhfInfoGuild", &MsgMhfInfoGuild{}},
|
|
{"MsgMhfInfoScenarioCounter", &MsgMhfInfoScenarioCounter{}},
|
|
{"MsgMhfInfoTournament", &MsgMhfInfoTournament{}},
|
|
{"MsgMhfKickExportForce", &MsgMhfKickExportForce{}},
|
|
{"MsgMhfListMail", &MsgMhfListMail{}},
|
|
{"MsgMhfListMember", &MsgMhfListMember{}},
|
|
{"MsgMhfLoadFavoriteQuest", &MsgMhfLoadFavoriteQuest{}},
|
|
{"MsgMhfLoadHouse", &MsgMhfLoadHouse{}},
|
|
{"MsgMhfLoadLegendDispatch", &MsgMhfLoadLegendDispatch{}},
|
|
{"MsgMhfLoadMezfesData", &MsgMhfLoadMezfesData{}},
|
|
{"MsgMhfLoadPlateMyset", &MsgMhfLoadPlateMyset{}},
|
|
{"MsgMhfLoadRengokuData", &MsgMhfLoadRengokuData{}},
|
|
{"MsgMhfLoadScenarioData", &MsgMhfLoadScenarioData{}},
|
|
{"MsgMhfLoaddata", &MsgMhfLoaddata{}},
|
|
{"MsgMhfMercenaryHuntdata", &MsgMhfMercenaryHuntdata{}},
|
|
{"MsgMhfOperateGuild", &MsgMhfOperateGuild{}},
|
|
{"MsgMhfOperateGuildMember", &MsgMhfOperateGuildMember{}},
|
|
{"MsgMhfOperateGuildTresureReport", &MsgMhfOperateGuildTresureReport{}},
|
|
{"MsgMhfOperateJoint", &MsgMhfOperateJoint{}},
|
|
{"MsgMhfOperateWarehouse", &MsgMhfOperateWarehouse{}},
|
|
{"MsgMhfOperationInvGuild", &MsgMhfOperationInvGuild{}},
|
|
{"MsgMhfOprMember", &MsgMhfOprMember{}},
|
|
{"MsgMhfOprtMail", &MsgMhfOprtMail{}},
|
|
{"MsgMhfPaymentAchievement", &MsgMhfPaymentAchievement{}},
|
|
{"MsgMhfPlayBoxGacha", &MsgMhfPlayBoxGacha{}},
|
|
{"MsgMhfPlayFreeGacha", &MsgMhfPlayFreeGacha{}},
|
|
{"MsgMhfPlayNormalGacha", &MsgMhfPlayNormalGacha{}},
|
|
{"MsgMhfPlayStepupGacha", &MsgMhfPlayStepupGacha{}},
|
|
{"MsgMhfPostBoostTime", &MsgMhfPostBoostTime{}},
|
|
{"MsgMhfPostBoostTimeLimit", &MsgMhfPostBoostTimeLimit{}},
|
|
{"MsgMhfPostBoostTimeQuestReturn", &MsgMhfPostBoostTimeQuestReturn{}},
|
|
{"MsgMhfPostCafeDurationBonusReceived", &MsgMhfPostCafeDurationBonusReceived{}},
|
|
{"MsgMhfPostGemInfo", &MsgMhfPostGemInfo{}},
|
|
{"MsgMhfPostGuildScout", &MsgMhfPostGuildScout{}},
|
|
{"MsgMhfPostRyoudama", &MsgMhfPostRyoudama{}},
|
|
{"MsgMhfPostSeibattle", &MsgMhfPostSeibattle{}},
|
|
{"MsgMhfPostTenrouirai", &MsgMhfPostTenrouirai{}},
|
|
{"MsgMhfPostTinyBin", &MsgMhfPostTinyBin{}},
|
|
{"MsgMhfPresentBox", &MsgMhfPresentBox{}},
|
|
{"MsgMhfReadBeatLevel", &MsgMhfReadBeatLevel{}},
|
|
{"MsgMhfReadBeatLevelAllRanking", &MsgMhfReadBeatLevelAllRanking{}},
|
|
{"MsgMhfReadBeatLevelMyRanking", &MsgMhfReadBeatLevelMyRanking{}},
|
|
{"MsgMhfReadGuildcard", &MsgMhfReadGuildcard{}},
|
|
{"MsgMhfReadLastWeekBeatRanking", &MsgMhfReadLastWeekBeatRanking{}},
|
|
{"MsgMhfReadMail", &MsgMhfReadMail{}},
|
|
{"MsgMhfReadMercenaryM", &MsgMhfReadMercenaryM{}},
|
|
{"MsgMhfReadMercenaryW", &MsgMhfReadMercenaryW{}},
|
|
{"MsgMhfReceiveCafeDurationBonus", &MsgMhfReceiveCafeDurationBonus{}},
|
|
{"MsgMhfReceiveGachaItem", &MsgMhfReceiveGachaItem{}},
|
|
{"MsgMhfRegisterEvent", &MsgMhfRegisterEvent{}},
|
|
{"MsgMhfRegistGuildAdventure", &MsgMhfRegistGuildAdventure{}},
|
|
{"MsgMhfRegistGuildAdventureDiva", &MsgMhfRegistGuildAdventureDiva{}},
|
|
{"MsgMhfRegistGuildCooking", &MsgMhfRegistGuildCooking{}},
|
|
{"MsgMhfRegistGuildTresure", &MsgMhfRegistGuildTresure{}},
|
|
{"MsgMhfRegistSpabiTime", &MsgMhfRegistSpabiTime{}},
|
|
{"MsgMhfReleaseEvent", &MsgMhfReleaseEvent{}},
|
|
{"MsgMhfResetAchievement", &MsgMhfResetAchievement{}},
|
|
{"MsgMhfResetBoxGachaInfo", &MsgMhfResetBoxGachaInfo{}},
|
|
{"MsgMhfResetTitle", &MsgMhfResetTitle{}},
|
|
{"MsgMhfSaveDecoMyset", &MsgMhfSaveDecoMyset{}},
|
|
{"MsgMhfSaveFavoriteQuest", &MsgMhfSaveFavoriteQuest{}},
|
|
{"MsgMhfSaveHunterNavi", &MsgMhfSaveHunterNavi{}},
|
|
{"MsgMhfSaveMercenary", &MsgMhfSaveMercenary{}},
|
|
{"MsgMhfSaveMezfesData", &MsgMhfSaveMezfesData{}},
|
|
{"MsgMhfSaveOtomoAirou", &MsgMhfSaveOtomoAirou{}},
|
|
{"MsgMhfSavePartner", &MsgMhfSavePartner{}},
|
|
{"MsgMhfSavePlateBox", &MsgMhfSavePlateBox{}},
|
|
{"MsgMhfSavePlateData", &MsgMhfSavePlateData{}},
|
|
{"MsgMhfSavePlateMyset", &MsgMhfSavePlateMyset{}},
|
|
{"MsgMhfSaveRengokuData", &MsgMhfSaveRengokuData{}},
|
|
{"MsgMhfSaveScenarioData", &MsgMhfSaveScenarioData{}},
|
|
{"MsgMhfSavedata", &MsgMhfSavedata{}},
|
|
{"MsgMhfSendMail", &MsgMhfSendMail{}},
|
|
{"MsgMhfSetCaAchievement", &MsgMhfSetCaAchievement{}},
|
|
{"MsgMhfSetCaAchievementHist", &MsgMhfSetCaAchievementHist{}},
|
|
{"MsgMhfSetDailyMissionPersonal", &MsgMhfSetDailyMissionPersonal{}},
|
|
{"MsgMhfSetEnhancedMinidata", &MsgMhfSetEnhancedMinidata{}},
|
|
{"MsgMhfSetGuildManageRight", &MsgMhfSetGuildManageRight{}},
|
|
{"MsgMhfSetGuildMissionTarget", &MsgMhfSetGuildMissionTarget{}},
|
|
{"MsgMhfSetKiju", &MsgMhfSetKiju{}},
|
|
{"MsgMhfSetRejectGuildScout", &MsgMhfSetRejectGuildScout{}},
|
|
{"MsgMhfSetRestrictionEvent", &MsgMhfSetRestrictionEvent{}},
|
|
{"MsgMhfSetUdTacticsFollower", &MsgMhfSetUdTacticsFollower{}},
|
|
{"MsgMhfSexChanger", &MsgMhfSexChanger{}},
|
|
{"MsgMhfStampcardPrize", &MsgMhfStampcardPrize{}},
|
|
{"MsgMhfStartBoostTime", &MsgMhfStartBoostTime{}},
|
|
{"MsgMhfStateCampaign", &MsgMhfStateCampaign{}},
|
|
{"MsgMhfStateFestaG", &MsgMhfStateFestaG{}},
|
|
{"MsgMhfStateFestaU", &MsgMhfStateFestaU{}},
|
|
{"MsgMhfTransferItem", &MsgMhfTransferItem{}},
|
|
{"MsgMhfTransitMessage", &MsgMhfTransitMessage{}},
|
|
{"MsgMhfUnreserveSrg", &MsgMhfUnreserveSrg{}},
|
|
{"MsgMhfUpdateBeatLevel", &MsgMhfUpdateBeatLevel{}},
|
|
{"MsgMhfUpdateCafepoint", &MsgMhfUpdateCafepoint{}},
|
|
{"MsgMhfUpdateEquipSkinHist", &MsgMhfUpdateEquipSkinHist{}},
|
|
{"MsgMhfUpdateEtcPoint", &MsgMhfUpdateEtcPoint{}},
|
|
{"MsgMhfUpdateForceGuildRank", &MsgMhfUpdateForceGuildRank{}},
|
|
{"MsgMhfUpdateGuacot", &MsgMhfUpdateGuacot{}},
|
|
{"MsgMhfUpdateGuild", &MsgMhfUpdateGuild{}},
|
|
{"MsgMhfUpdateGuildIcon", &MsgMhfUpdateGuildIcon{}},
|
|
{"MsgMhfUpdateGuildItem", &MsgMhfUpdateGuildItem{}},
|
|
{"MsgMhfUpdateGuildMessageBoard", &MsgMhfUpdateGuildMessageBoard{}},
|
|
{"MsgMhfUpdateGuildcard", &MsgMhfUpdateGuildcard{}},
|
|
{"MsgMhfUpdateHouse", &MsgMhfUpdateHouse{}},
|
|
{"MsgMhfUpdateInterior", &MsgMhfUpdateInterior{}},
|
|
{"MsgMhfUpdateMyhouseInfo", &MsgMhfUpdateMyhouseInfo{}},
|
|
{"MsgMhfUpdateUnionItem", &MsgMhfUpdateUnionItem{}},
|
|
{"MsgMhfUpdateUseTrendWeaponLog", &MsgMhfUpdateUseTrendWeaponLog{}},
|
|
{"MsgMhfUpdateWarehouse", &MsgMhfUpdateWarehouse{}},
|
|
{"MsgMhfUseGachaPoint", &MsgMhfUseGachaPoint{}},
|
|
{"MsgMhfUseKeepLoginBoost", &MsgMhfUseKeepLoginBoost{}},
|
|
{"MsgMhfUseRewardSong", &MsgMhfUseRewardSong{}},
|
|
{"MsgMhfUseUdShopCoin", &MsgMhfUseUdShopCoin{}},
|
|
{"MsgMhfVoteFesta", &MsgMhfVoteFesta{}},
|
|
// Sys packets
|
|
{"MsgSysAcquireSemaphore", &MsgSysAcquireSemaphore{}},
|
|
{"MsgSysAuthData", &MsgSysAuthData{}},
|
|
{"MsgSysAuthQuery", &MsgSysAuthQuery{}},
|
|
{"MsgSysAuthTerminal", &MsgSysAuthTerminal{}},
|
|
{"MsgSysCheckSemaphore", &MsgSysCheckSemaphore{}},
|
|
{"MsgSysCloseMutex", &MsgSysCloseMutex{}},
|
|
{"MsgSysCollectBinary", &MsgSysCollectBinary{}},
|
|
{"MsgSysCreateAcquireSemaphore", &MsgSysCreateAcquireSemaphore{}},
|
|
{"MsgSysCreateMutex", &MsgSysCreateMutex{}},
|
|
{"MsgSysCreateObject", &MsgSysCreateObject{}},
|
|
{"MsgSysCreateOpenMutex", &MsgSysCreateOpenMutex{}},
|
|
{"MsgSysDeleteMutex", &MsgSysDeleteMutex{}},
|
|
{"MsgSysDeleteSemaphore", &MsgSysDeleteSemaphore{}},
|
|
{"MsgSysEnumerateStage", &MsgSysEnumerateStage{}},
|
|
{"MsgSysEnumlobby", &MsgSysEnumlobby{}},
|
|
{"MsgSysEnumuser", &MsgSysEnumuser{}},
|
|
{"MsgSysGetFile", &MsgSysGetFile{}},
|
|
{"MsgSysGetObjectBinary", &MsgSysGetObjectBinary{}},
|
|
{"MsgSysGetObjectOwner", &MsgSysGetObjectOwner{}},
|
|
{"MsgSysGetState", &MsgSysGetState{}},
|
|
{"MsgSysGetUserBinary", &MsgSysGetUserBinary{}},
|
|
{"MsgSysHideClient", &MsgSysHideClient{}},
|
|
{"MsgSysInfokyserver", &MsgSysInfokyserver{}},
|
|
{"MsgSysIssueLogkey", &MsgSysIssueLogkey{}},
|
|
{"MsgSysLoadRegister", &MsgSysLoadRegister{}},
|
|
{"MsgSysLockGlobalSema", &MsgSysLockGlobalSema{}},
|
|
{"MsgSysOpenMutex", &MsgSysOpenMutex{}},
|
|
{"MsgSysOperateRegister", &MsgSysOperateRegister{}},
|
|
{"MsgSysRecordLog", &MsgSysRecordLog{}},
|
|
{"MsgSysReleaseSemaphore", &MsgSysReleaseSemaphore{}},
|
|
{"MsgSysReserveStage", &MsgSysReserveStage{}},
|
|
{"MsgSysRightsReload", &MsgSysRightsReload{}},
|
|
{"MsgSysRotateObject", &MsgSysRotateObject{}},
|
|
{"MsgSysSerialize", &MsgSysSerialize{}},
|
|
{"MsgSysSetObjectBinary", &MsgSysSetObjectBinary{}},
|
|
{"MsgSysSetUserBinary", &MsgSysSetUserBinary{}},
|
|
{"MsgSysTerminalLog", &MsgSysTerminalLog{}},
|
|
{"MsgSysTransBinary", &MsgSysTransBinary{}},
|
|
{"MsgSysUnlockStage", &MsgSysUnlockStage{}},
|
|
// Additional Mhf packets
|
|
{"MsgMhfAddUdTacticsPoint", &MsgMhfAddUdTacticsPoint{}},
|
|
{"MsgMhfAddKouryouPoint", &MsgMhfAddKouryouPoint{}},
|
|
{"MsgMhfAcquireExchangeShop", &MsgMhfAcquireExchangeShop{}},
|
|
{"MsgMhfGetEtcPoints", &MsgMhfGetEtcPoints{}},
|
|
{"MsgMhfEnumerateCampaign", &MsgMhfEnumerateCampaign{}},
|
|
}
|
|
|
|
ctx := &clientctx.ClientContext{RealClientMode: _config.ZZ}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
bf := byteframe.NewByteFrame()
|
|
err, panicked := callBuildSafe(tt.pkt, bf, ctx)
|
|
if panicked {
|
|
return
|
|
}
|
|
if err == nil {
|
|
return
|
|
}
|
|
if err.Error() != "NOT IMPLEMENTED" {
|
|
t.Errorf("Build() returned unexpected error: %v", err)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
// TestParseCoverage_NotImplemented_Extended exercises Parse() on additional packet types
|
|
// whose Parse method returns "NOT IMPLEMENTED" and is not yet covered.
|
|
func TestParseCoverage_NotImplemented_Extended(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
pkt MHFPacket
|
|
}{
|
|
{"MsgMhfRegisterEvent", &MsgMhfRegisterEvent{}},
|
|
{"MsgMhfReleaseEvent", &MsgMhfReleaseEvent{}},
|
|
{"MsgMhfEnumeratePrice", &MsgMhfEnumeratePrice{}},
|
|
{"MsgMhfEnumerateTitle", &MsgMhfEnumerateTitle{}},
|
|
{"MsgMhfAcquireTitle", &MsgMhfAcquireTitle{}},
|
|
{"MsgMhfEnumerateUnionItem", &MsgMhfEnumerateUnionItem{}},
|
|
{"MsgMhfUpdateUnionItem", &MsgMhfUpdateUnionItem{}},
|
|
{"MsgMhfCreateJoint", &MsgMhfCreateJoint{}},
|
|
{"MsgMhfOperateJoint", &MsgMhfOperateJoint{}},
|
|
{"MsgMhfUpdateGuildIcon", &MsgMhfUpdateGuildIcon{}},
|
|
{"MsgMhfUpdateGuildItem", &MsgMhfUpdateGuildItem{}},
|
|
{"MsgMhfEnumerateGuildItem", &MsgMhfEnumerateGuildItem{}},
|
|
{"MsgMhfOperationInvGuild", &MsgMhfOperationInvGuild{}},
|
|
{"MsgMhfStampcardPrize", &MsgMhfStampcardPrize{}},
|
|
{"MsgMhfUpdateForceGuildRank", &MsgMhfUpdateForceGuildRank{}},
|
|
{"MsgMhfResetTitle", &MsgMhfResetTitle{}},
|
|
{"MsgMhfRegistGuildAdventureDiva", &MsgMhfRegistGuildAdventureDiva{}},
|
|
}
|
|
|
|
ctx := &clientctx.ClientContext{RealClientMode: _config.ZZ}
|
|
bf := byteframe.NewByteFrame()
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
err, panicked := callParseSafe(tt.pkt, bf, ctx)
|
|
if panicked {
|
|
return
|
|
}
|
|
if err == nil {
|
|
return
|
|
}
|
|
if err.Error() != "NOT IMPLEMENTED" {
|
|
t.Errorf("Parse() returned unexpected error: %v", err)
|
|
}
|
|
})
|
|
}
|
|
}
|