From a67ecc957da8a06cf8b79966761f1a61d63b8b1a Mon Sep 17 00:00:00 2001
From: xBalbinus <xiangan9@gmail.com>
Date: Fri, 17 Nov 2023 14:37:26 -0500
Subject: [PATCH] fix: WorkedExample tests

---
 src/CallBreakerTypes.sol         |  2 +-
 src/timetravel/CallBreaker.sol   |  2 +-
 test/examples/SelfCheckout.sol   |  2 +-
 test/solve-lib/WorkedExample.sol | 23 ++++++++---------------
 4 files changed, 11 insertions(+), 18 deletions(-)

diff --git a/src/CallBreakerTypes.sol b/src/CallBreakerTypes.sol
index cfd4b4a..2010256 100644
--- a/src/CallBreakerTypes.sol
+++ b/src/CallBreakerTypes.sol
@@ -38,4 +38,4 @@ struct Call {
 struct CallBalance {
     bool set;
     int256 balance;
-}
\ No newline at end of file
+}
diff --git a/src/timetravel/CallBreaker.sol b/src/timetravel/CallBreaker.sol
index 8e70d07..2a3eb61 100644
--- a/src/timetravel/CallBreaker.sol
+++ b/src/timetravel/CallBreaker.sol
@@ -262,4 +262,4 @@ contract CallBreaker is CallBreakerStorage {
             revert CallPositionFailed(callObj, index);
         }
     }
-}
\ No newline at end of file
+}
diff --git a/test/examples/SelfCheckout.sol b/test/examples/SelfCheckout.sol
index 3681632..e924cf8 100644
--- a/test/examples/SelfCheckout.sol
+++ b/test/examples/SelfCheckout.sol
@@ -78,7 +78,7 @@ contract SelfCheckout is SmarterContract {
                 callvalue: abi.encodeWithSignature("checkBalance()")
             });
             emit LogCallObj(callObj);
-            assertFutureCallTo(callObj, 3);
+            assertFutureCallTo(callObj, 2);
 
             balanceScheduled = true;
         }
diff --git a/test/solve-lib/WorkedExample.sol b/test/solve-lib/WorkedExample.sol
index 6ea858c..0decfe9 100644
--- a/test/solve-lib/WorkedExample.sol
+++ b/test/solve-lib/WorkedExample.sol
@@ -67,8 +67,10 @@ contract WorkedExampleLib {
     }
 
     function solverLand(uint256 laminatorSequenceNumber, address filler, uint256 x) public {
-        CallObject[] memory callObjs = new CallObject[](4);
-        ReturnObject[] memory returnObjs = new ReturnObject[](4);
+        erc20b.approve(address(selfcheckout), x);
+
+        CallObject[] memory callObjs = new CallObject[](3);
+        ReturnObject[] memory returnObjs = new ReturnObject[](3);
 
         callObjs[0] = CallObject({
             amount: 0,
@@ -84,27 +86,18 @@ contract WorkedExampleLib {
 
         returnObjs[0] = ReturnObject({returnvalue: abi.encode(abi.encode(returnObjsFromPull))});
 
-        callObjs[1] = CallObject({
-            amount: 0,
-            addr: address(erc20b),
-            gas: 1000000,
-            callvalue: abi.encodeWithSignature("approve(address,uint256)", address(selfcheckout), x)
-        });
-        // return object is still nothing
-        returnObjs[1] = ReturnObject({returnvalue: abi.encode(true)});
-
         // then we'll call giveSomeBtokenToOwner and get the imbalance back to zero
-        callObjs[2] = CallObject({
+        callObjs[1] = CallObject({
             amount: 0,
             addr: address(selfcheckout),
             gas: 1000000,
             callvalue: abi.encodeWithSignature("giveSomeBtokenToOwner(uint256)", x)
         });
         // return object is still nothing
-        returnObjs[2] = ReturnObject({returnvalue: ""});
+        returnObjs[1] = ReturnObject({returnvalue: ""});
 
         // then we'll call checkBalance
-        callObjs[3] = CallObject({
+        callObjs[2] = CallObject({
             amount: 0,
             addr: address(selfcheckout),
             gas: 1000000,
@@ -112,7 +105,7 @@ contract WorkedExampleLib {
         });
         // log what this callobject looks like
         // return object is still nothing
-        returnObjs[3] = ReturnObject({returnvalue: ""});
+        returnObjs[2] = ReturnObject({returnvalue: ""});
 
         // Constructing something that'll decode happily
         bytes32[] memory keys = new bytes32[](5);