// SPDX-License-Identifier: AGPL-3.0
pragma solidity ^0.7.0;

contract TestUnsignedIntegers {
    // Following unsigned integer variables are packed together in a single slot since the combined size is less than 32 bytes.
    uint8 uint1;
    uint16 uint2;

    // Unsigned integer variable is stored in the next slot as it needs 32 bytes of storage.
    uint256 uint3;

    // Unsigned integer variable is stored in the next slot as there is not enough space for it in the previous slot.
    uint32 uint4;

    // Set variable uint1.
    function setUint1(uint8 value) external {
        uint1 = value;
    }

    // Set variable uint2.
    function setUint2(uint16 value) external {
        uint2 = value;
    }

    // Set variable uint3.
    function setUint3(uint256 value) external {
        uint3 = value;
    }

    // Set variable uint4.
    function setUint4(uint32 value) external {
        uint4 = value;
    }
}
