Arrays.t.sol 844 B

12345678910111213141516171819202122232425262728293031
  1. // SPDX-License-Identifier: MIT
  2. pragma solidity ^0.8.20;
  3. import {Test} from "forge-std/Test.sol";
  4. import {SymTest} from "halmos-cheatcodes/SymTest.sol";
  5. import {Arrays} from "@openzeppelin/contracts/utils/Arrays.sol";
  6. contract ArraysTest is Test, SymTest {
  7. function testSort(uint256[] memory values) public {
  8. Arrays.sort(values);
  9. _assertSort(values);
  10. }
  11. function symbolicSort() public {
  12. uint256[] memory values = new uint256[](3);
  13. for (uint256 i = 0; i < 3; i++) {
  14. values[i] = svm.createUint256("arrayElement");
  15. }
  16. Arrays.sort(values);
  17. _assertSort(values);
  18. }
  19. /// Asserts
  20. function _assertSort(uint256[] memory values) internal {
  21. for (uint256 i = 1; i < values.length; ++i) {
  22. assertLe(values[i - 1], values[i]);
  23. }
  24. }
  25. }