12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- // SPDX-License-Identifier: MIT
- pragma solidity ^0.8.20;
- import {Test} from "forge-std/Test.sol";
- import {ShortStrings, ShortString} from "@openzeppelin/contracts/utils/ShortStrings.sol";
- contract ShortStringsTest is Test {
- string _fallback;
- function testRoundtripShort(string memory input) external {
- vm.assume(_isShort(input));
- ShortString short = ShortStrings.toShortString(input);
- string memory output = ShortStrings.toString(short);
- assertEq(input, output);
- }
- function testRoundtripWithFallback(string memory input, string memory fallbackInitial) external {
- _fallback = fallbackInitial; // Make sure that the initial value has no effect
- ShortString short = ShortStrings.toShortStringWithFallback(input, _fallback);
- string memory output = ShortStrings.toStringWithFallback(short, _fallback);
- assertEq(input, output);
- }
- function testRevertLong(string memory input) external {
- vm.assume(!_isShort(input));
- vm.expectRevert(abi.encodeWithSelector(ShortStrings.StringTooLong.selector, input));
- this.toShortString(input);
- }
- function testLengthShort(string memory input) external {
- vm.assume(_isShort(input));
- uint256 inputLength = bytes(input).length;
- ShortString short = ShortStrings.toShortString(input);
- uint256 shortLength = ShortStrings.byteLength(short);
- assertEq(inputLength, shortLength);
- }
- function testLengthWithFallback(string memory input, string memory fallbackInitial) external {
- _fallback = fallbackInitial;
- uint256 inputLength = bytes(input).length;
- ShortString short = ShortStrings.toShortStringWithFallback(input, _fallback);
- uint256 shortLength = ShortStrings.byteLengthWithFallback(short, _fallback);
- assertEq(inputLength, shortLength);
- }
- function toShortString(string memory input) external pure returns (ShortString) {
- return ShortStrings.toShortString(input);
- }
- function _isShort(string memory input) internal pure returns (bool) {
- return bytes(input).length < 32;
- }
- }
|