WorldTest.cs 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  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 InitializeRegistry(framework);
  12. await InitializeWorld(framework);
  13. await InitializeSecondWorld(framework);
  14. }
  15. public static async Task InitializeRegistry(Framework framework) {
  16. framework.RegistryPda = WorldProgram.FindRegistryPda();
  17. InitializeRegistryAccounts initializeRegistry = new InitializeRegistryAccounts() {
  18. Registry = framework.RegistryPda,
  19. Payer = framework.Wallet.Account.PublicKey,
  20. SystemProgram = SystemProgram.ProgramIdKey,
  21. };
  22. TransactionInstruction instruction = WorldProgram.InitializeRegistry(initializeRegistry);
  23. try {
  24. await framework.SendAndConfirmInstruction(instruction);
  25. } catch (Exception) {
  26. // We ignore this error because it happens when the registry already exists
  27. }
  28. }
  29. public static async Task InitializeWorld(Framework framework) {
  30. var accountInfo = await framework.GetAccountInfo(framework.RegistryPda);
  31. var data = Convert.FromBase64String(accountInfo.Data[0]);
  32. var registry = Registry.Deserialize(data);
  33. framework.WorldPda = WorldProgram.FindWorldPda(registry.Worlds);
  34. var initializeNewWorld = new InitializeNewWorldAccounts() {
  35. Registry = framework.RegistryPda,
  36. Payer = framework.Wallet.Account.PublicKey,
  37. SystemProgram = SystemProgram.ProgramIdKey,
  38. World = framework.WorldPda,
  39. };
  40. TransactionInstruction instruction = WorldProgram.InitializeNewWorld(initializeNewWorld);
  41. await framework.SendAndConfirmInstruction(instruction);
  42. }
  43. public static async Task InitializeSecondWorld(Framework framework) {
  44. var accountInfo = await framework.GetAccountInfo(framework.RegistryPda);
  45. var data = Convert.FromBase64String(accountInfo.Data[0]);
  46. var registry = Registry.Deserialize(data);
  47. var WorldPda = WorldProgram.FindWorldPda(registry.Worlds);
  48. var initializeNewWorld = new InitializeNewWorldAccounts() {
  49. Registry = framework.RegistryPda,
  50. Payer = framework.Wallet.Account.PublicKey,
  51. SystemProgram = SystemProgram.ProgramIdKey,
  52. World = WorldPda,
  53. };
  54. TransactionInstruction instruction = WorldProgram.InitializeNewWorld(initializeNewWorld);
  55. await framework.SendAndConfirmInstruction(instruction);
  56. }
  57. }
  58. }