julien/lovepublic Fork 0
b1c9b0da13b4f77bdbd9773cbd4365322de0f1d7
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.

add love contract 9bf25a7 · on b1c9b0da13b4f77bdbd9773cbd4365322de0f1d7 · julienbrg · 9h ago
Love.t.sol · 67 lines · 1.6 KBSolidity Blame HistoryRaw
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.30;

import {Love} from "../src/Love.sol";
import {Test} from "forge-std/Test.sol";

contract LoveTest is Test {
    Love public love;

    address alice = makeAddr("alice");
    address bob = makeAddr("bob");

    event LoveSent(address indexed from, address indexed to, uint256 amount);

    function setUp() public {
        love = new Love();
    }

    function test_Send() public {
        vm.prank(alice);
        love.send(bob, 1);

        assertEq(love.sent(alice, bob), 1);
        assertEq(love.received(bob), 1);
    }

    function test_SendAccumulates() public {
        vm.startPrank(alice);
        love.send(bob, 2);
        love.send(bob, 3);
        vm.stopPrank();

        assertEq(love.sent(alice, bob), 5);
        assertEq(love.received(bob), 5);
    }

    function test_SendEmitsEvent() public {
        vm.expectEmit(true, true, false, true);
        emit LoveSent(alice, bob, 7);

        vm.prank(alice);
        love.send(bob, 7);
    }

    function test_RevertWhen_SendingToSelf() public {
        vm.prank(alice);
        vm.expectRevert(Love.SelfLove.selector);
        love.send(alice, 1);
    }

    function test_RevertWhen_AmountIsZero() public {
        vm.prank(alice);
        vm.expectRevert(Love.ZeroAmount.selector);
        love.send(bob, 0);
    }

    function testFuzz_Send(address from, address to, uint256 amount) public {
        vm.assume(from != to);
        amount = bound(amount, 1, type(uint256).max);

        vm.prank(from);
        love.send(to, amount);

        assertEq(love.sent(from, to), amount);
        assertEq(love.received(to), amount);
    }
}