Skip to content

Improve/devkit performance / Add Flattened.sol #42

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
May 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions devkit/Files.sol
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

import "./MCBase.sol";
import "./MCDevKit.sol";
import "./MCTest.sol";
import "./MCScript.sol";
26,869 changes: 26,869 additions & 0 deletions devkit/Flattened.sol

Large diffs are not rendered by default.

10 changes: 5 additions & 5 deletions devkit/MCTest.sol
Original file line number Diff line number Diff line change
Expand Up @@ -15,13 +15,13 @@ import {Dummy} from "devkit/test/dummy/Dummy.sol";
// 📦 BOILERPLATE
import {MCTestBase} from "./MCBase.sol";

struct Function {
bytes4 selector;
address implementation;
}

// 🌟 MC State Fuzzing Test
abstract contract MCTest is MCTestBase, OZProxy { // solhint-disable-line payable-fallback
struct Function {
bytes4 selector;
address implementation;
}

mapping(bytes4 selector => address) implementations;
address target = address(this);
Function[] internal functions;
Expand Down
6 changes: 3 additions & 3 deletions devkit/core/Dictionary.sol
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import {ForgeHelper} from "devkit/utils/ForgeHelper.sol";
// External Libs
import {IDictionary} from "@ucs.mc/dictionary/interfaces/IDictionary.sol";
import {Dictionary as UCSDictionary} from "@ucs.mc/dictionary/Dictionary.sol";
import {ImmutableDictionary, Function as Func} from "@ucs.mc/dictionary/ImmutableDictionary.sol";
import {ImmutableDictionary} from "@ucs.mc/dictionary/ImmutableDictionary.sol";
import {BeaconDictionary} from "@ucs.mc/dictionary/BeaconDictionary.sol";
// Mock
import {MockDictionary} from "devkit/test/mocks/MockDictionary.sol";
Expand Down Expand Up @@ -80,9 +80,9 @@ library DictionaryLib {
uint pid = dictionary.startProcess("deployImmutable", param(functions, facade));
Validator.SHOULD_FacadeIsContract(facade);
dictionary.startBuilding();
Func[] memory funcs;
ImmutableDictionary.Function[] memory funcs;
for (uint i; i < functions.length; ++i) {
funcs[i] = Func(functions[i].selector, functions[i].implementation);
funcs[i] = ImmutableDictionary.Function(functions[i].selector, functions[i].implementation);
}
dictionary.addr = address(new ImmutableDictionary(funcs, facade));
dictionary.kind = DictionaryKind.Immutable;
Expand Down
4 changes: 2 additions & 2 deletions devkit/test/dummy/Dummy.sol
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import {MCDevKit} from "devkit/MCDevKit.sol";
import {DummyFunction} from "./DummyFunction.sol";
import {DummyFacade} from "./DummyFacade.sol";
import {DummyContract} from "devkit/test/dummy/DummyContract.sol";
import {Function} from "devkit/MCTest.sol";
import {MCTest} from "devkit/MCTest.sol";

library Dummy {
function bundleName() internal returns(string memory) {
Expand Down Expand Up @@ -35,7 +35,7 @@ library Dummy {
return mc.createMockDictionary().addr;
}

function dictionary(MCDevKit storage mc, Function[] memory functions) internal returns(address) {
function dictionary(MCDevKit storage mc, MCTest.Function[] memory functions) internal returns(address) {
mc.init("DummyBundle");
for (uint i; i < functions.length; ++i) {
mc.use(functions[i].selector, functions[i].implementation);
Expand Down
2 changes: 1 addition & 1 deletion script/DeployLib.sol
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

import {MCDevKit} from "devkit/MCDevKit.sol";
import {MCDevKit} from "devkit/Flattened.sol";
import {StdFacade} from "mc-std/interfaces/StdFacade.sol";
import {InitSetAdmin} from "mc-std/functions/protected/InitSetAdmin.sol";

Expand Down
3 changes: 1 addition & 2 deletions script/DeployStdDictionary.s.sol
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

import {MCScriptBase} from "devkit/MCBase.sol";
import {MCScriptBase, MCDevKit} from "devkit/Flattened.sol";
import {DeployLib} from "./DeployLib.sol";
import {MCDevKit} from "devkit/MCDevKit.sol";

contract DeployStdDictionary is MCScriptBase {
using DeployLib for MCDevKit;
Expand Down
3 changes: 1 addition & 2 deletions script/DeployStdFunctions.s.sol
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

import {MCScriptBase} from "devkit/MCBase.sol";
import {MCScriptBase, MCDevKit} from "devkit/Flattened.sol";
import {DeployLib} from "./DeployLib.sol";
import {MCDevKit} from "devkit/MCDevKit.sol";

contract DeployStdFunctions is MCScriptBase {
using DeployLib for MCDevKit;
Expand Down
3 changes: 1 addition & 2 deletions test/devkit/MCDeployLib.t.sol
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

import {MCTestBase} from "devkit/MCBase.sol";
import {Dummy} from "devkit/test/dummy/Dummy.sol";
import {MCTestBase, Dummy} from "devkit/Flattened.sol";

contract MCDeployLibTest is MCTestBase {
/**-----------------------------
Expand Down
8 changes: 5 additions & 3 deletions test/devkit/MCFinderLib.t.sol
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

import {MCTestBase} from "devkit/MCBase.sol";
import {MessageHead as REASON} from "devkit/system/message/MessageHead.sol";
import {Dummy} from "devkit/test/dummy/Dummy.sol";
import {
MCTestBase,
MessageHead as REASON,
Dummy
} from "devkit/Flattened.sol";

contract MCFinderLibTest is MCTestBase {

Expand Down
11 changes: 6 additions & 5 deletions test/devkit/MCHelpers.t.sol
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

import {MCTestBase} from "devkit/MCBase.sol";
import {MessageHead as HEAD} from "devkit/system/message/MessageHead.sol";
import {
MCTestBase,
MessageHead as HEAD,
Inspector
} from "devkit/Flattened.sol";

import {Inspector} from "devkit/types/Inspector.sol";
contract MCHelpersTest is MCTestBase {
using Inspector for string;


contract MCHelpersTest is MCTestBase {
/**-----------------------------
♻️ Reset Current Context
-------------------------------*/
Expand Down
56 changes: 40 additions & 16 deletions test/devkit/MCInitLib.t.sol
Original file line number Diff line number Diff line change
@@ -1,21 +1,45 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

import {MCTestBase} from "devkit/MCBase.sol";
import {MessageHead as HEAD} from "devkit/system/message/MessageHead.sol";
import {
MCTestBase,
MessageHead as HEAD,
Function,
Inspector,
Bundle,
DummyFunction,
DummyFacade
} from "devkit/Flattened.sol";

import {InitSetAdmin} from "mc-std/functions/protected/InitSetAdmin.sol";
import {GetFunctions} from "mc-std/functions/GetFunctions.sol";
import {Clone} from "mc-std/functions/Clone.sol";

import {Inspector} from "devkit/types/Inspector.sol";
contract MCInitLibTest is MCTestBase {
using Inspector for string;
using Inspector for address;

function _isInitSetAdmin(Function memory func) internal returns(bool) {
return
func.name.isEqual("InitSetAdmin") &&
func.selector == InitSetAdmin.initSetAdmin.selector &&
func.implementation.isContract();
}

import {Bundle} from "devkit/core/Bundle.sol";
import {Function} from "devkit/core/Function.sol";
import {DummyFunction} from "devkit/test/dummy/DummyFunction.sol";
import {DummyFacade} from "devkit/test/dummy/DummyFacade.sol";
function _isGetFunctions(Function memory func) internal returns(bool) {
return
func.name.isEqual("GetFunctions") &&
func.selector == GetFunctions.getFunctions.selector &&
func.implementation.isContract();
}

import {TestHelper} from "../utils/TestHelper.sol";
using TestHelper for Function;
function _isClone(Function memory func) internal returns(bool) {
return
func.name.isEqual("Clone") &&
func.selector == Clone.clone.selector &&
func.implementation.isContract();
}

contract MCInitLibTest is MCTestBase {

/**--------------------
🌱 Init Bundle
Expand Down Expand Up @@ -116,14 +140,14 @@ contract MCInitLibTest is MCTestBase {
function test_setupStdFuncs_Success() public {
mc.setupStdFunctions();

assertTrue(mc.std.functions.initSetAdmin.isInitSetAdmin());
assertTrue(mc.std.functions.getFunctions.isGetFunctions());
assertTrue(mc.std.functions.clone.isClone());
assertTrue(_isInitSetAdmin(mc.std.functions.initSetAdmin));
assertTrue(_isGetFunctions(mc.std.functions.getFunctions));
assertTrue(_isClone(mc.std.functions.clone));

assertTrue(mc.std.all.functions.length == 3);
assertTrue(mc.std.all.functions[0].isInitSetAdmin());
assertTrue(mc.std.all.functions[1].isGetFunctions());
assertTrue(mc.std.all.functions[2].isClone());
assertTrue(_isInitSetAdmin(mc.std.all.functions[0]));
assertTrue(_isGetFunctions(mc.std.all.functions[1]));
assertTrue(_isClone(mc.std.all.functions[2]));
}

}
19 changes: 10 additions & 9 deletions test/devkit/MCMockLib.t.sol
Original file line number Diff line number Diff line change
@@ -1,18 +1,19 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

import {MCTestBase} from "devkit/MCBase.sol";
import {MessageHead as HEAD} from "devkit/system/message/MessageHead.sol";
import {
MCTestBase,
MessageHead as HEAD,
Inspector,
Bundle,
Function,
DummyFunction,
DummyFacade
} from "devkit/Flattened.sol";

import {Inspector} from "devkit/types/Inspector.sol";
contract MCMockLibTest is MCTestBase {
using Inspector for string;

import {Bundle} from "devkit/core/Bundle.sol";
import {Function} from "devkit/core/Function.sol";
import {DummyFunction} from "devkit/test/dummy/DummyFunction.sol";
import {DummyFacade} from "devkit/test/dummy/DummyFacade.sol";

contract MCMockLibTest is MCTestBase {
function setUp() public {
mc.setupStdFunctions();
}
Expand Down
3 changes: 1 addition & 2 deletions test/script/DeployStdDictionary.t.sol
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.22;

import {MCTestBase} from "devkit/MCBase.sol";
import {MCTestBase, MCDevKit} from "devkit/Flattened.sol";
import {DeployLib} from "../../script/DeployLib.sol";
import {MCDevKit} from "devkit/MCDevKit.sol";

contract DeployStdDictionaryTest is MCTestBase {
using DeployLib for MCDevKit;
Expand Down
4 changes: 1 addition & 3 deletions test/std/bundles/Std.t.sol → test/std/Std.t.sol
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.23;

import {MCTest} from "devkit/MCTest.sol";
import {MCTest, MCDevKit} from "devkit/Flattened.sol";
import {DeployLib} from "script/DeployLib.sol";
import {MCDevKit} from "devkit/MCDevKit.sol";

import {Clone} from "mc-std/functions/Clone.sol";
import {IStd} from "mc-std/interfaces/IStd.sol";
import {Initialization} from "mc-std/functions/protected/protection/Initialization.sol";

Expand Down
11 changes: 6 additions & 5 deletions test/std/functions/Clone.t.sol
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.22;

import {console2} from "forge-std/console2.sol";
import {MCTest} from "devkit/MCTest.sol";
import {ProxyUtils} from "@ucs.mc/proxy/ProxyUtils.sol";
import {
MCTest,
console2,
ForgeHelper,
Dummy
} from "devkit/Flattened.sol";

import {Clone} from "mc-std/functions/Clone.sol";
import {ProxyCreator} from "mc-std/functions/internal/ProxyCreator.sol";
import {ForgeHelper} from "devkit/utils/ForgeHelper.sol";
import {Dummy} from "devkit/test/dummy/Dummy.sol";

contract CloneTest is MCTest {
function setUp() public {
Expand Down
11 changes: 6 additions & 5 deletions test/std/functions/Create.t.sol
Original file line number Diff line number Diff line change
@@ -1,14 +1,15 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.22;

import {console2} from "forge-std/console2.sol";
import {MCTest} from "devkit/MCTest.sol";
import {ProxyUtils} from "@ucs.mc/proxy/ProxyUtils.sol";
import {
MCTest,
console2,
ForgeHelper,
Dummy
} from "devkit/Flattened.sol";

import {Create} from "mc-std/functions/Create.sol";
import {ProxyCreator} from "mc-std/functions/internal/ProxyCreator.sol";
import {ForgeHelper} from "devkit/utils/ForgeHelper.sol";
import {Dummy} from "devkit/test/dummy/Dummy.sol";

contract CreateTest is MCTest {
function setUp() public {
Expand Down
16 changes: 8 additions & 8 deletions test/std/functions/GetFunctions.t.sol
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.22;

import {console2} from "forge-std/console2.sol";
import {MCTest} from "devkit/MCTest.sol";
import {ProxyUtils} from "@ucs.mc/proxy/ProxyUtils.sol";
import {Function as MCFunc} from "devkit/core/Function.sol";
import {
MCTest,
console2,
ForgeHelper,
Dummy,
DummyFunction,
DummyFacade
} from "devkit/Flattened.sol";

import {GetFunctions} from "mc-std/functions/GetFunctions.sol";
import {ProxyCreator} from "mc-std/functions/internal/ProxyCreator.sol";
import {ForgeHelper} from "devkit/utils/ForgeHelper.sol";
import {Dummy} from "devkit/test/dummy/Dummy.sol";
import {DummyFunction} from "devkit/test/dummy/DummyFunction.sol";
import {DummyFacade} from "devkit/test/dummy/DummyFacade.sol";

contract GetFunctionsTest is MCTest {
function setUp() public {
Expand Down
2 changes: 1 addition & 1 deletion test/std/functions/Receive.t.sol
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.22;

import {MCTest} from "devkit/MCTest.sol";
import {MCTest} from "devkit/Flattened.sol";
import {Receive} from "mc-std/functions/Receive.sol";

contract ReceiveTest is MCTest {
Expand Down
4 changes: 1 addition & 3 deletions test/std/functions/internal/ProxyCreator.t.sol
Original file line number Diff line number Diff line change
@@ -1,11 +1,9 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.22;

import {MCTest} from "devkit/MCTest.sol";
import {MCTest, ForgeHelper, Dummy} from "devkit/Flattened.sol";

import {Dummy} from "devkit/test/dummy/Dummy.sol";
import {ProxyCreator} from "mc-std/functions/internal/ProxyCreator.sol";
import {ForgeHelper} from "devkit/utils/ForgeHelper.sol";

contract ProxyCreatorTest is MCTest {

Expand Down
2 changes: 1 addition & 1 deletion test/std/functions/protected/InitSetAdmin.t.sol
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.22;

import {MCTest} from "devkit/MCTest.sol";
import {MCTest} from "devkit/Flattened.sol";

import {InitSetAdmin} from "mc-std/functions/protected/InitSetAdmin.sol";
import {Initialization} from "mc-std/functions/protected/protection/Initialization.sol";
Expand Down
2 changes: 0 additions & 2 deletions test/std/functions/protected/protection/MsgSender.t.sol
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ import {Test} from "forge-std/Test.sol";
import {MsgSender} from "mc-std/functions/protected/protection/MsgSender.sol";

contract MsgSenderTest is Test {
function setUp() public {}

function test_ShouldBeAdmin_RevertIf_SenderIsNotAdmin() public {
vm.expectRevert(MsgSender.NotAdmin.selector);
MsgSender.shouldBeAdmin();
Expand Down
Loading
Loading