julien/lovepublic Fork 0
9bf25a7597df88a258ef7ee1fa6b97a8b2d8ec8b
Commits
Clone
git clone https://git.rickub.com/julien/love.git
git clone ssh://git@rickub.com/julien/love.git

Host key fingerprint (ed25519): SHA256:iycHnxEyq0Q7uyVpB7JlznP0G7JrTPXLYRcAU5CSLhc — verify it before your first connect.

Love.t.sol · 67 lines · 1.6 KBSolidity Blame HistoryRaw
add love contract 9bf25a7 julienbrg 10h ago1// SPDX-License-Identifier: MIT
2pragma solidity ^0.8.30;
3
4import {Love} from "../src/Love.sol";
5import {Test} from "forge-std/Test.sol";
6
7contract LoveTest is Test {
8 Love public love;
9
10 address alice = makeAddr("alice");
11 address bob = makeAddr("bob");
12
13 event LoveSent(address indexed from, address indexed to, uint256 amount);
14
15 function setUp() public {
16 love = new Love();
17 }
18
19 function test_Send() public {
20 vm.prank(alice);
21 love.send(bob, 1);
22
23 assertEq(love.sent(alice, bob), 1);
24 assertEq(love.received(bob), 1);
25 }
26
27 function test_SendAccumulates() public {
28 vm.startPrank(alice);
29 love.send(bob, 2);
30 love.send(bob, 3);
31 vm.stopPrank();
32
33 assertEq(love.sent(alice, bob), 5);
34 assertEq(love.received(bob), 5);
35 }
36
37 function test_SendEmitsEvent() public {
38 vm.expectEmit(true, true, false, true);
39 emit LoveSent(alice, bob, 7);
40
41 vm.prank(alice);
42 love.send(bob, 7);
43 }
44
45 function test_RevertWhen_SendingToSelf() public {
46 vm.prank(alice);
47 vm.expectRevert(Love.SelfLove.selector);
48 love.send(alice, 1);
49 }
50
51 function test_RevertWhen_AmountIsZero() public {
52 vm.prank(alice);
53 vm.expectRevert(Love.ZeroAmount.selector);
54 love.send(bob, 0);
55 }
56
57 function testFuzz_Send(address from, address to, uint256 amount) public {
58 vm.assume(from != to);
59 amount = bound(amount, 1, type(uint256).max);
60
61 vm.prank(from);
62 love.send(to, amount);
63
64 assertEq(love.sent(from, to), amount);
65 assertEq(love.received(to), amount);
66 }
67}