test(upserver): 归档存档迁移与玩法闭环回归工具
This commit is contained in:
42
CodexOutput/upserver/ClubRegression/generate.py
Normal file
42
CodexOutput/upserver/ClubRegression/generate.py
Normal file
@@ -0,0 +1,42 @@
|
||||
from pathlib import Path
|
||||
s=Path('Client/Assets/Scripts/Services/ClubService.cs').read_text(encoding='utf-8-sig')
|
||||
models=Path('Client/Assets/Scripts/Services/ClubModel.cs').read_text(encoding='utf-8-sig')
|
||||
def block(text,marker):
|
||||
start=text.index(marker);a=text.index('{',start);depth=1;b=a+1
|
||||
while depth:
|
||||
depth+=(text[b]=='{')-(text[b]=='}');b+=1
|
||||
return text[start:b]
|
||||
helper=s[s.index(' private static bool IsDecimalPlayerId'):s.index(' public async Task<List<SocialInfoItemData>> GetClubDetails')]
|
||||
methods='\n'.join(block(s,m) for m in ['public async Task<ClubInfo> CreateClub(', 'public async void QuitClub(', 'public async void Demote(', 'public async void Promote(', 'public async void Kickout(', 'public async void HandleApply(', 'public async Task ClubSingin('])
|
||||
dtos='\n'.join(block(models,'public class '+name+'\n') for name in ['ClubInfo','ClubSettingData','CreateClubRequest','CreateClubResp','QuitClubRequest','QuitClubResp','DemoteClubRequest','PromoteClubRequest','KickoutClubRequest','KickoutClubResp','HandleApplyRequest','HandleApplyResp','ClubSinginRequest','ClubSinginResp'])
|
||||
code='''// Generated from production methods; do not edit. Engine and transport are controlled test doubles.
|
||||
using System;using System.Collections.Generic;using System.ComponentModel;using System.Linq;using System.Threading.Tasks;using Newtonsoft.Json.Linq;
|
||||
public enum EMemberRole:byte {Owner,Vice,Member,Elder}
|
||||
'''+dtos+'''
|
||||
public class Subject {
|
||||
public User userService=new();public Server customServerMgr=new();public Chat chatService=new();public ClubInfo myClubInfo=new(){id=9,curMembers=3};public EMemberRole memberRole=EMemberRole.Member;public Dictionary<long,string> internalIdToPlayerId=new();public int Effects;
|
||||
private int? signingSession; public DateTime? signTime; public List<Person> clubPlayerInfos=new(){new Person{playFabId="102"}}; public bool CanAccepted=true; void SetClubRed(){} void ShowPromote(){Effects++;}void MyClubInfoChange(bool join=false){Effects++;}void ClearLikeCursorIds(){Effects++;}
|
||||
'''+helper+methods+'''
|
||||
}
|
||||
public class User{public string UserId="8BDE34F732DD4210";public string ApiPlayerId="101";public bool IsAuthorized=true;public uint InternalId=42;}
|
||||
public class Server{public int SessionVersion;public int Calls;public object Body;public string Response;public TaskCompletionSource<string> Gate;public Task<string> ClubRequest(string path,object data){Calls++;Body=data;return Gate?.Task??Task.FromResult(Response);}}
|
||||
public class Chat{public int Effects;public void SendSystemMessage(string text){Effects++;}public void OnQuit(){Effects++;}public void GetConversationList(long id){Effects++;}}
|
||||
public class ClubSttingUpdateEvent{} public static class GContext {public static Container container=new();public static int Events;public static void Publish(object value){Events++;}}
|
||||
public static class ToastPanel{public static int Count;public static void Show(string text){Count++;}}
|
||||
public static class LocalizationMgr{public static string GetText(string key)=>key;}
|
||||
'''
|
||||
Path('CodexOutput/upserver/ClubRegression/Generated.cs').write_text(code)
|
||||
|
||||
p=Path('CodexOutput/upserver/ClubRegression/Generated.cs')
|
||||
with p.open('a') as f:f.write("""
|
||||
public class Person{public string playFabId;}
|
||||
public enum RedPointName {ApplyList}
|
||||
public class RedPointManager {public static RedPointManager Instance=new();public void SetRedPointState(RedPointName n,bool b){}}
|
||||
public static class ZZTimeHelper {public static DateTime UtcNow()=>new DateTime(2026,9,21);public static DateTime UtcNowOffset(this DateTime time)=>time;}
|
||||
public class PlayFabMgr {public static PlayFabMgr Instance=new();public int Writes;public void UpdateUserDataValue(string k,string v){Writes++;}}
|
||||
public enum MessageChatType {SI}
|
||||
public class Container {public T Resolve<T>() where T:new()=>new T();}
|
||||
public class PlayerItemData {public static int Rewards;public void AddItemByDrop(int id,object ctx){Rewards++;}}
|
||||
public class ShowData{}
|
||||
namespace cfg {public class Tables {public Config TbServerConfig=new();}public class Config{public int ClubSignReward=1;}}
|
||||
""")
|
||||
Reference in New Issue
Block a user