AccelerationTest.cs 3.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using Solana.Unity.Bolt.Test;
  2. using Solana.Unity.Rpc.Models;
  3. using Solana.Unity.Wallet;
  4. using Solana.Unity.Bolt;
  5. using Solana.Unity.Rpc;
  6. using System;
  7. using System.Threading.Tasks;
  8. using Solana.Unity.Wallet.Bip39;
  9. using World.Program;
  10. using System.Diagnostics;
  11. using Solana.Unity.Rpc.Types;
  12. namespace AccelerationTest {
  13. public class Test {
  14. public static async Task Run(Framework framework) {
  15. await Profiler.Run("AddAccelerationEntity", async () => {
  16. await AddAccelerationEntity(framework);
  17. });
  18. await Profiler.Run("InitializePositionComponentOnAccelerationEntity", async () => {
  19. await InitializePositionComponentOnAccelerationEntity(framework);
  20. });
  21. await Profiler.Run("DelegateComponent", async () => {
  22. await DelegateComponent(framework);
  23. });
  24. await Profiler.Run("ApplySimpleMovementSystemOnAccelerator 10", async () => {
  25. if (Environment.GetEnvironmentVariable("GITHUB_ACTIONS") != null) {
  26. return;
  27. }
  28. await ApplySimpleMovementSystemOnAccelerator(framework);
  29. });
  30. }
  31. public static async Task AddAccelerationEntity(Framework framework) {
  32. var addEntity = await Bolt.World.AddEntity(framework.Client, framework.WorldPda, framework.Wallet.Account.PublicKey, Commitment.Processed);
  33. framework.AccelerationEntityPda = addEntity.Pda;
  34. await framework.SendAndConfirmInstruction(addEntity.Instruction);
  35. }
  36. public static async Task InitializePositionComponentOnAccelerationEntity(Framework framework) {
  37. var initializeComponent = await Bolt.World.InitializeComponent(framework.Wallet.Account.PublicKey, framework.AccelerationEntityPda, framework.ExampleComponentPosition);
  38. framework.AccelerationComponentPositionPda = initializeComponent.Pda;
  39. await framework.SendAndConfirmInstruction(initializeComponent.Instruction);
  40. }
  41. public static async Task DelegateComponent(Framework framework) {
  42. var delegateComponent = await Bolt.World.DelegateComponent(framework.Wallet.Account.PublicKey, framework.AccelerationEntityPda, framework.ExampleComponentPosition);
  43. await framework.SendAndConfirmInstruction(delegateComponent.gTransaction);
  44. var delegateBuffer = await Bolt.World.DelegateBuffer();
  45. }
  46. public static async Task ApplySimpleMovementSystemOnAccelerator(Framework framework) {
  47. for (int i = 0; i < 10; i++) {
  48. var apply = new ApplyAccounts() {
  49. CpiAuth = WorldProgram.FindCpiAuthPda(),
  50. Authority = framework.Wallet.Account.PublicKey,
  51. BoltSystem = framework.SystemSimpleMovement,
  52. World = framework.WorldPda,
  53. Buffer = WorldProgram.FindBufferPda(framework.AccelerationComponentPositionPda)
  54. };
  55. var instruction = WorldProgram.Apply(apply, Bolt.World.SerializeArgs(new { direction = "Up" }));
  56. instruction.Keys.Add(AccountMeta.ReadOnly(framework.ExampleComponentPosition, false));
  57. instruction.Keys.Add(AccountMeta.Writable(framework.AccelerationComponentPositionPda, false));
  58. await framework.SendAndConfirmInstruction(framework.AcceleratorClient, instruction);
  59. await Task.Delay(50);
  60. }
  61. }
  62. }
  63. }