❯ forge test --mt test_unlimitedReviews -vvvvv
Warning: This is a nightly build of Foundry. It is recommended to use the latest stable version. Visit https:
To mute this warning set `FOUNDRY_DISABLE_NIGHTLY_WARNING` in your environment.
[⠊] Compiling...
No files changed, compilation skipped
Ran 1 test for test/LeveOnelAndGraduateTest.t.sol:LevelOneAndGraduateTest
[PASS] test_unlimitedReviews() (gas: 870403)
Traces:
[8721671] LevelOneAndGraduateTest::setUp()
├─ [4431614] → new DeployLevelOne@0x5615dEB798BB3E4dFa0139dFa1b3D433Cc23b72f
│ ├─ [0] VM::addr(<pk>) [staticcall]
│ │ └─ ← [Return] principal: [0x6b9470599cb23a06988C6332ABE964d6608A50ca]
│ ├─ [0] VM::label(principal: [0x6b9470599cb23a06988C6332ABE964d6608A50ca], "principal")
│ │ └─ ← [Return]
│ └─ ← [Return] 21885 bytes of code
├─ [3732450] DeployLevelOne::deployLevelOne()
│ ├─ [793117] → new MockUSDC@0x104fBc016F4bb334D775a19E8A6510109AC63E00
│ │ └─ ← [Return] 3734 bytes of code
│ ├─ [0] VM::startBroadcast()
│ │ └─ ← [Return]
│ ├─ [2608546] → new LevelOne@0x34A1D3fff3958843C43aD80F30b94c510645C316
│ │ └─ ← [Return] 13028 bytes of code
│ ├─ [67213] → new ERC1967Proxy@0x90193C961A926261B756D1E5bb255e67ff9498A1
│ │ ├─ emit Upgraded(implementation: LevelOne: [0x34A1D3fff3958843C43aD80F30b94c510645C316])
│ │ └─ ← [Return] 212 bytes of code
│ ├─ [93107] ERC1967Proxy::fallback(principal: [0x6b9470599cb23a06988C6332ABE964d6608A50ca], 5000000000000000000000 [5e21], MockUSDC: [0x104fBc016F4bb334D775a19E8A6510109AC63E00])
│ │ ├─ [92624] LevelOne::initialize(principal: [0x6b9470599cb23a06988C6332ABE964d6608A50ca], 5000000000000000000000 [5e21], MockUSDC: [0x104fBc016F4bb334D775a19E8A6510109AC63E00]) [delegatecall]
│ │ │ ├─ emit Initialized(version: 1)
│ │ │ └─ ← [Stop]
│ │ └─ ← [Return]
│ ├─ [0] VM::stopBroadcast()
│ │ └─ ← [Return]
│ └─ ← [Return] ERC1967Proxy: [0x90193C961A926261B756D1E5bb255e67ff9498A1]
├─ [712] DeployLevelOne::getUSDC() [staticcall]
│ └─ ← [Return] MockUSDC: [0x104fBc016F4bb334D775a19E8A6510109AC63E00]
├─ [603] DeployLevelOne::principal() [staticcall]
│ └─ ← [Return] principal: [0x6b9470599cb23a06988C6332ABE964d6608A50ca]
├─ [521] DeployLevelOne::getSchoolFees() [staticcall]
│ └─ ← [Return] 5000000000000000000000 [5e21]
├─ [516] DeployLevelOne::getImplementationAddress() [staticcall]
│ └─ ← [Return] LevelOne: [0x34A1D3fff3958843C43aD80F30b94c510645C316]
├─ [0] VM::addr(<pk>) [staticcall]
│ └─ ← [Return] first_teacher: [0xeeEeC5A3afd714e3C63A0b1ef6d80722Bcc514b3]
├─ [0] VM::label(first_teacher: [0xeeEeC5A3afd714e3C63A0b1ef6d80722Bcc514b3], "first_teacher")
│ └─ ← [Return]
├─ [0] VM::addr(<pk>) [staticcall]
│ └─ ← [Return] second_teacher: [0xb4c265c1f1d07474E3715F65724E8fa9d662BF0e]
├─ [0] VM::label(second_teacher: [0xb4c265c1f1d07474E3715F65724E8fa9d662BF0e], "second_teacher")
│ └─ ← [Return]
├─ [0] VM::addr(<pk>) [staticcall]
│ └─ ← [Return] first_student: [0x0e0C2a2596E7bCd5122Ae32390d8C0657fe5b879]
├─ [0] VM::label(first_student: [0x0e0C2a2596E7bCd5122Ae32390d8C0657fe5b879], "first_student")
│ └─ ← [Return]
├─ [0] VM::addr(<pk>) [staticcall]
│ └─ ← [Return] second_student: [0x662bE80E633b67Ad610e19fa00D6217Ebb6073BE]
├─ [0] VM::label(second_student: [0x662bE80E633b67Ad610e19fa00D6217Ebb6073BE], "second_student")
│ └─ ← [Return]
├─ [0] VM::addr(<pk>) [staticcall]
│ └─ ← [Return] third_student: [0xF238496034cA4D476743d590ff3A66def743F9be]
├─ [0] VM::label(third_student: [0xF238496034cA4D476743d590ff3A66def743F9be], "third_student")
│ └─ ← [Return]
├─ [0] VM::addr(<pk>) [staticcall]
│ └─ ← [Return] fourth_student: [0x8E4a21e39349dBb0178CC57ABF60EF8c78ea2680]
├─ [0] VM::label(fourth_student: [0x8E4a21e39349dBb0178CC57ABF60EF8c78ea2680], "fourth_student")
│ └─ ← [Return]
├─ [0] VM::addr(<pk>) [staticcall]
│ └─ ← [Return] fifth_student: [0xA1bC13cEF3390113AcA9450673182D3BEC1ce6Dd]
├─ [0] VM::label(fifth_student: [0xA1bC13cEF3390113AcA9450673182D3BEC1ce6Dd], "fifth_student")
│ └─ ← [Return]
├─ [0] VM::addr(<pk>) [staticcall]
│ └─ ← [Return] six_student: [0x983Cec4DF373E6f3809b4483fEBf6C9469B0769b]
├─ [0] VM::label(six_student: [0x983Cec4DF373E6f3809b4483fEBf6C9469B0769b], "six_student")
│ └─ ← [Return]
├─ [47293] MockUSDC::mint(first_student: [0x0e0C2a2596E7bCd5122Ae32390d8C0657fe5b879], 5000000000000000000000 [5e21])
│ ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: first_student: [0x0e0C2a2596E7bCd5122Ae32390d8C0657fe5b879], value: 5000000000000000000000 [5e21])
│ └─ ← [Stop]
├─ [25393] MockUSDC::mint(second_student: [0x662bE80E633b67Ad610e19fa00D6217Ebb6073BE], 5000000000000000000000 [5e21])
│ ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: second_student: [0x662bE80E633b67Ad610e19fa00D6217Ebb6073BE], value: 5000000000000000000000 [5e21])
│ └─ ← [Stop]
├─ [25393] MockUSDC::mint(third_student: [0xF238496034cA4D476743d590ff3A66def743F9be], 5000000000000000000000 [5e21])
│ ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: third_student: [0xF238496034cA4D476743d590ff3A66def743F9be], value: 5000000000000000000000 [5e21])
│ └─ ← [Stop]
├─ [25393] MockUSDC::mint(fourth_student: [0x8E4a21e39349dBb0178CC57ABF60EF8c78ea2680], 5000000000000000000000 [5e21])
│ ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: fourth_student: [0x8E4a21e39349dBb0178CC57ABF60EF8c78ea2680], value: 5000000000000000000000 [5e21])
│ └─ ← [Stop]
├─ [25393] MockUSDC::mint(fifth_student: [0xA1bC13cEF3390113AcA9450673182D3BEC1ce6Dd], 5000000000000000000000 [5e21])
│ ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: fifth_student: [0xA1bC13cEF3390113AcA9450673182D3BEC1ce6Dd], value: 5000000000000000000000 [5e21])
│ └─ ← [Stop]
├─ [25393] MockUSDC::mint(six_student: [0x983Cec4DF373E6f3809b4483fEBf6C9469B0769b], 5000000000000000000000 [5e21])
│ ├─ emit Transfer(from: 0x0000000000000000000000000000000000000000, to: six_student: [0x983Cec4DF373E6f3809b4483fEBf6C9469B0769b], value: 5000000000000000000000 [5e21])
│ └─ ← [Stop]
└─ ← [Stop]
[1018603] LevelOneAndGraduateTest::test_unlimitedReviews()
├─ [0] VM::startPrank(principal: [0x6b9470599cb23a06988C6332ABE964d6608A50ca])
│ └─ ← [Return]
├─ [78232] ERC1967Proxy::fallback(first_teacher: [0xeeEeC5A3afd714e3C63A0b1ef6d80722Bcc514b3])
│ ├─ [73258] LevelOne::addTeacher(first_teacher: [0xeeEeC5A3afd714e3C63A0b1ef6d80722Bcc514b3]) [delegatecall]
│ │ ├─ emit TeacherAdded(: first_teacher: [0xeeEeC5A3afd714e3C63A0b1ef6d80722Bcc514b3])
│ │ ├─ storage changes:
│ │ │ @ 0x57d868a63977bd534917d7a8e25f0ef7f1aff50f71be6046e0f1a385e6f801a2: 0 → 1
│ │ │ @ 0x0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db9: 0 → 0x000000000000000000000000eeeec5a3afd714e3c63a0b1ef6d80722bcc514b3
│ │ │ @ 11: 0 → 1
│ │ └─ ← [Stop]
│ └─ ← [Return]
├─ [49832] ERC1967Proxy::fallback(second_teacher: [0xb4c265c1f1d07474E3715F65724E8fa9d662BF0e])
│ ├─ [49358] LevelOne::addTeacher(second_teacher: [0xb4c265c1f1d07474E3715F65724E8fa9d662BF0e]) [delegatecall]
│ │ ├─ emit TeacherAdded(: second_teacher: [0xb4c265c1f1d07474E3715F65724E8fa9d662BF0e])
│ │ ├─ storage changes:
│ │ │ @ 11: 1 → 2
│ │ │ @ 0xb101def935dfb11c3409ed434cc467251e5d3d87bacee001803e0e204f6d366e: 0 → 1
│ │ │ @ 0x0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01dba: 0 → 0x000000000000000000000000b4c265c1f1d07474e3715f65724e8fa9d662bf0e
│ │ └─ ← [Stop]
│ └─ ← [Return]
├─ [0] VM::stopPrank()
│ └─ ← [Return]
├─ [0] VM::startPrank(first_student: [0x0e0C2a2596E7bCd5122Ae32390d8C0657fe5b879])
│ └─ ← [Return]
├─ [25298] MockUSDC::approve(ERC1967Proxy: [0x90193C961A926261B756D1E5bb255e67ff9498A1], 5000000000000000000000 [5e21])
│ ├─ emit Approval(owner: first_student: [0x0e0C2a2596E7bCd5122Ae32390d8C0657fe5b879], spender: ERC1967Proxy: [0x90193C961A926261B756D1E5bb255e67ff9498A1], value: 5000000000000000000000 [5e21])
│ ├─ storage changes:
│ │ @ 0x54f9d497ea6cb8c569ddc28d71aa1db837507029cd3461ad39f13bd82419ced5: 0 → 0x00000000000000000000000000000000000000000000010f0cf064dd59200000
│ └─ ← [Return] true
├─ [152722] ERC1967Proxy::fallback()
│ ├─ [152251] LevelOne::enroll() [delegatecall]
│ │ ├─ [31619] MockUSDC::transferFrom(first_student: [0x0e0C2a2596E7bCd5122Ae32390d8C0657fe5b879], ERC1967Proxy: [0x90193C961A926261B756D1E5bb255e67ff9498A1], 5000000000000000000000 [5e21])
│ │ │ ├─ emit Transfer(from: first_student: [0x0e0C2a2596E7bCd5122Ae32390d8C0657fe5b879], to: ERC1967Proxy: [0x90193C961A926261B756D1E5bb255e67ff9498A1], value: 5000000000000000000000 [5e21])
│ │ │ ├─ storage changes:
│ │ │ │ @ 0x85120fe62b1558ce6a3b06ce55476288affa9dd99a08a6a4e730f499fa788693: 0 → 0x00000000000000000000000000000000000000000000010f0cf064dd59200000
│ │ │ │ @ 0x54f9d497ea6cb8c569ddc28d71aa1db837507029cd3461ad39f13bd82419ced5: 0x00000000000000000000000000000000000000000000010f0cf064dd59200000 → 0
│ │ │ │ @ 0x6c0f4c1d3f4d554e9fe581eea550af915e659968ff2ba5ff411341020211a17c: 0x00000000000000000000000000000000000000000000010f0cf064dd59200000 → 0
│ │ │ └─ ← [Return] true
│ │ ├─ emit Enrolled(: first_student: [0x0e0C2a2596E7bCd5122Ae32390d8C0657fe5b879])
│ │ ├─ storage changes:
│ │ │ @ 10: 0 → 1
│ │ │ @ 0xc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8: 0 → 0x0000000000000000000000000e0c2a2596e7bcd5122ae32390d8c0657fe5b879
│ │ │ @ 0x9cc94cd8307a1299e92a32d07cf9fea6a72944aacad209220ed57cf0b3fba76c: 0 → 1
│ │ │ @ 3: 0 → 0x00000000000000000000000000000000000000000000010f0cf064dd59200000
│ │ │ @ 0x5ceb440eb7d1f0ab1caae1cb86e7dae52e513d1495b39698049ea00c1e0013a2: 0 → 100
│ │ └─ ← [Stop]
│ └─ ← [Return]
├─ [0] VM::stopPrank()
│ └─ ← [Return]
├─ [0] VM::startPrank(second_student: [0x662bE80E633b67Ad610e19fa00D6217Ebb6073BE])
│ └─ ← [Return]
├─ [25298] MockUSDC::approve(ERC1967Proxy: [0x90193C961A926261B756D1E5bb255e67ff9498A1], 5000000000000000000000 [5e21])
│ ├─ emit Approval(owner: second_student: [0x662bE80E633b67Ad610e19fa00D6217Ebb6073BE], spender: ERC1967Proxy: [0x90193C961A926261B756D1E5bb255e67ff9498A1], value: 5000000000000000000000 [5e21])
│ ├─ storage changes:
│ │ @ 0x76be54c7587b4998d480b953de94d77f9ceac7c75e6240c646b8f84843625be7: 0 → 0x00000000000000000000000000000000000000000000010f0cf064dd59200000
│ └─ ← [Return] true
├─ [83022] ERC1967Proxy::fallback()
│ ├─ [82551] LevelOne::enroll() [delegatecall]
│ │ ├─ [9719] MockUSDC::transferFrom(second_student: [0x662bE80E633b67Ad610e19fa00D6217Ebb6073BE], ERC1967Proxy: [0x90193C961A926261B756D1E5bb255e67ff9498A1], 5000000000000000000000 [5e21])
│ │ │ ├─ emit Transfer(from: second_student: [0x662bE80E633b67Ad610e19fa00D6217Ebb6073BE], to: ERC1967Proxy: [0x90193C961A926261B756D1E5bb255e67ff9498A1], value: 5000000000000000000000 [5e21])
│ │ │ ├─ storage changes:
│ │ │ │ @ 0x85120fe62b1558ce6a3b06ce55476288affa9dd99a08a6a4e730f499fa788693: 0x00000000000000000000000000000000000000000000010f0cf064dd59200000 → 0x00000000000000000000000000000000000000000000021e19e0c9bab2400000
│ │ │ │ @ 0x45f236bdf8a90ecb5bbdc3e8e1ae12f59e826a4d8bc862175f7d968179f1aa51: 0x00000000000000000000000000000000000000000000010f0cf064dd59200000 → 0
│ │ │ │ @ 0x76be54c7587b4998d480b953de94d77f9ceac7c75e6240c646b8f84843625be7: 0x00000000000000000000000000000000000000000000010f0cf064dd59200000 → 0
│ │ │ └─ ← [Return] true
│ │ ├─ emit Enrolled(: second_student: [0x662bE80E633b67Ad610e19fa00D6217Ebb6073BE])
│ │ ├─ storage changes:
│ │ │ @ 0x85120fe62b1558ce6a3b06ce55476288affa9dd99a08a6a4e730f499fa788693: 0x00000000000000000000000000000000000000000000010f0cf064dd59200000 → 0x00000000000000000000000000000000000000000000021e19e0c9bab2400000
│ │ │ @ 0xc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a9: 0 → 0x000000000000000000000000662be80e633b67ad610e19fa00d6217ebb6073be
│ │ │ @ 0x223d420e8e7792bfe5b67aed3684be409a4a094892a297950f931af54d981951: 0 → 1
│ │ │ @ 10: 1 → 2
│ │ │ @ 3: 0x00000000000000000000000000000000000000000000010f0cf064dd59200000 → 0x00000000000000000000000000000000000000000000021e19e0c9bab2400000
│ │ │ @ 0x39fa7acec5a6d664b873634c54c39d09ba3d8f3d430ae478fbd7a901c69ad2ed: 0 → 100
│ │ └─ ← [Stop]
│ └─ ← [Return]
├─ [0] VM::stopPrank()
│ └─ ← [Return]
├─ [0] VM::startPrank(third_student: [0xF238496034cA4D476743d590ff3A66def743F9be])
│ └─ ← [Return]
├─ [25298] MockUSDC::approve(ERC1967Proxy: [0x90193C961A926261B756D1E5bb255e67ff9498A1], 5000000000000000000000 [5e21])
│ ├─ emit Approval(owner: third_student: [0xF238496034cA4D476743d590ff3A66def743F9be], spender: ERC1967Proxy: [0x90193C961A926261B756D1E5bb255e67ff9498A1], value: 5000000000000000000000 [5e21])
│ ├─ storage changes:
│ │ @ 0x334336411380cd1e7d657324fff19afd8123fd4d851af38dd01b6d55b8004d6b: 0 → 0x00000000000000000000000000000000000000000000010f0cf064dd59200000
│ └─ ← [Return] true
├─ [83022] ERC1967Proxy::fallback()
│ ├─ [82551] LevelOne::enroll() [delegatecall]
│ │ ├─ [9719] MockUSDC::transferFrom(third_student: [0xF238496034cA4D476743d590ff3A66def743F9be], ERC1967Proxy: [0x90193C961A926261B756D1E5bb255e67ff9498A1], 5000000000000000000000 [5e21])
│ │ │ ├─ emit Transfer(from: third_student: [0xF238496034cA4D476743d590ff3A66def743F9be], to: ERC1967Proxy: [0x90193C961A926261B756D1E5bb255e67ff9498A1], value: 5000000000000000000000 [5e21])
│ │ │ ├─ storage changes:
│ │ │ │ @ 0xd2e4f267192cb18d9c6cf9508b251bf30100d715b89aa4888d5502b37ddfdf89: 0x00000000000000000000000000000000000000000000010f0cf064dd59200000 → 0
│ │ │ │ @ 0x334336411380cd1e7d657324fff19afd8123fd4d851af38dd01b6d55b8004d6b: 0x00000000000000000000000000000000000000000000010f0cf064dd59200000 → 0
│ │ │ │ @ 0x85120fe62b1558ce6a3b06ce55476288affa9dd99a08a6a4e730f499fa788693: 0x00000000000000000000000000000000000000000000021e19e0c9bab2400000 → 0x00000000000000000000000000000000000000000000032d26d12e980b600000
│ │ │ └─ ← [Return] true
│ │ ├─ emit Enrolled(: third_student: [0xF238496034cA4D476743d590ff3A66def743F9be])
│ │ ├─ storage changes:
│ │ │ @ 10: 2 → 3
│ │ │ @ 0x85120fe62b1558ce6a3b06ce55476288affa9dd99a08a6a4e730f499fa788693: 0x00000000000000000000000000000000000000000000021e19e0c9bab2400000 → 0x00000000000000000000000000000000000000000000032d26d12e980b600000
│ │ │ @ 0x252ea5d918f0937784f663ff59a5011dcac4d191e9d3b7afe2060bcf7aa42b37: 0 → 100
│ │ │ @ 0xab748e6cd808e6ab453ebd88df4d47447afdcb707d3f298f7a4274a9168c1a4f: 0 → 1
│
│ └─ ← [Return]
├─ [0] VM::stopPrank()
│ └─ ← [Return]
├─ [1325] ERC1967Proxy::fallback(first_student: [0x0e0C2a2596E7bCd5122Ae32390d8C0657fe5b879]) [staticcall]
│ ├─ [848] LevelOne::studentScore(first_student: [0x0e0C2a2596E7bCd5122Ae32390d8C0657fe5b879]) [delegatecall]
│ │ └─ ← [Return] 40
│ └─ ← [Return] 40
├─ [0] VM::assertEq(40, 40) [staticcall]
│ └─ ← [Return]
├─ storage changes:
│ @ 0x82d425d3feff18da41f2fa97835a1836e80e39a20f19c852dff89389d680b960: 0 → 0x00000000000000000000000000000000000000000000010f0cf064dd59200000
│ @ 0x334336411380cd1e7d657324fff19afd8123fd4d851af38dd01b6d55b8004d6b: 0 → 0x00000000000000000000000000000000000000000000010f0cf064dd59200000
│ @ 0x54f9d497ea6cb8c569ddc28d71aa1db837507029cd3461ad39f13bd82419ced5: 0 → 0x00000000000000000000000000000000000000000000010f0cf064dd59200000
│ @ 0xf9ab2b08e8af1cc9f027069f2cae15c7b348c62107b216ed9b24649b5535b5b5: 0 → 0x00000000000000000000000000000000000000000000010f0cf064dd59200000
│ @ 0x9fb63c01ff2a3156b7d685bf29c096fda493164f6ea3f0ee0ed76dd65cc991b1: 0 → 0x00000000000000000000000000000000000000000000010f0cf064dd59200000
│ @ 0x76be54c7587b4998d480b953de94d77f9ceac7c75e6240c646b8f84843625be7: 0 → 0x00000000000000000000000000000000000000000000010f0cf064dd59200000
│ @ 0x57d868a63977bd534917d7a8e25f0ef7f1aff50f71be6046e0f1a385e6f801a2: 0 → 1
│ @ 4: 0 → 70
│ @ 0x581f42ae2479be3ebd08b298cb91cbea5b6a503bec3889b13af562a45bf879dd: 0 → 0x0000000000000000000000000000000000000000000000000000000000375f01
│ @ 3: 0x00000000000000000000000000000000000000000000054b40b1f852bda00000 → 0x00000000000000000000000000000000000000000000065a4da25d3016c00000
└─ ← [Stop]
Suite result: ok. 1 passed; 0 failed; 0 skipped; finished in 19.51ms (16.65ms CPU time)
Ran 1 test suite in 886.80ms (19.51ms CPU time): 1 tests passed, 0 failed, 0 skipped (1 total tests)