WorldTest.cs 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. using Solana.Unity.Bolt.Test;
  2. using Solana.Unity.Programs;
  3. using Solana.Unity.Rpc.Models;
  4. using System;
  5. using System.Threading.Tasks;
  6. using World.Accounts;
  7. using World.Program;
  8. namespace WorldTest {
  9. public class Test {
  10. public static async Task Run(Framework framework) {
  11. await Profiler.Run("InitializeRegistry", async () => {
  12. await InitializeRegistry(framework);
  13. });
  14. await Profiler.Run("InitializeWorld", async () => {
  15. await InitializeWorld(framework);
  16. });
  17. await Profiler.Run("InitializeSecondWorld", async () => {
  18. await InitializeSecondWorld(framework);
  19. });
  20. }
  21. public static async Task InitializeRegistry(Framework framework) {
  22. framework.RegistryPda = WorldProgram.FindRegistryPda();
  23. InitializeRegistryAccounts initializeRegistry = new InitializeRegistryAccounts() {
  24. Registry = framework.RegistryPda,
  25. Payer = framework.Wallet.Account.PublicKey,
  26. SystemProgram = SystemProgram.ProgramIdKey,
  27. };
  28. TransactionInstruction instruction = WorldProgram.InitializeRegistry(initializeRegistry);
  29. await framework.SendAndConfirmInstruction(instruction, mayFail: true);
  30. }
  31. public static async Task InitializeWorld(Framework framework) {
  32. var accountInfo = await framework.GetAccountInfo(framework.RegistryPda);
  33. var data = Convert.FromBase64String(accountInfo.Data[0]);
  34. var registry = Registry.Deserialize(data);
  35. framework.WorldPda = WorldProgram.FindWorldPda(registry.Worlds);
  36. var initializeNewWorld = new InitializeNewWorldAccounts() {
  37. Registry = framework.RegistryPda,
  38. Payer = framework.Wallet.Account.PublicKey,
  39. SystemProgram = SystemProgram.ProgramIdKey,
  40. World = framework.WorldPda,
  41. };
  42. TransactionInstruction instruction = WorldProgram.InitializeNewWorld(initializeNewWorld);
  43. await framework.SendAndConfirmInstruction(instruction);
  44. }
  45. public static async Task InitializeSecondWorld(Framework framework) {
  46. var accountInfo = await framework.GetAccountInfo(framework.RegistryPda);
  47. var data = Convert.FromBase64String(accountInfo.Data[0]);
  48. var registry = Registry.Deserialize(data);
  49. var WorldPda = WorldProgram.FindWorldPda(registry.Worlds);
  50. var initializeNewWorld = new InitializeNewWorldAccounts() {
  51. Registry = framework.RegistryPda,
  52. Payer = framework.Wallet.Account.PublicKey,
  53. SystemProgram = SystemProgram.ProgramIdKey,
  54. World = WorldPda,
  55. };
  56. TransactionInstruction instruction = WorldProgram.InitializeNewWorld(initializeNewWorld);
  57. await framework.SendAndConfirmInstruction(instruction);
  58. }
  59. }
  60. }