From 31d07fdac80a2a546646b1eb232fa7dd6319ce83 Mon Sep 17 00:00:00 2001
From: August Skare <post@augustskare.no>
Date: Mon, 19 Nov 2018 17:27:00 +0100
Subject: rename all files and directories to lowercase

---
 packages/dev-tools-pages/ts/pages/cov.tsx | 149 ++++++++++++++++++++++++++++++
 1 file changed, 149 insertions(+)
 create mode 100644 packages/dev-tools-pages/ts/pages/cov.tsx

(limited to 'packages/dev-tools-pages/ts/pages/cov.tsx')

diff --git a/packages/dev-tools-pages/ts/pages/cov.tsx b/packages/dev-tools-pages/ts/pages/cov.tsx
new file mode 100644
index 000000000..3ffa6077d
--- /dev/null
+++ b/packages/dev-tools-pages/ts/pages/cov.tsx
@@ -0,0 +1,149 @@
+import * as React from 'react';
+import { hydrate, render } from 'react-dom';
+import * as Loadable from 'react-loadable';
+
+import { context } from 'ts/context/cov';
+
+import { Base } from 'ts/components/Base';
+import { Breakout } from 'ts/components/Breakout';
+import { Code } from 'ts/components/Code';
+import { Content } from 'ts/components/Content';
+import { ContentBlock } from 'ts/components/ContentBlock';
+import { Hero } from 'ts/components/Hero';
+import { InlineCode } from 'ts/components/InlineCode';
+import { Intro, IntroAside, IntroLead } from 'ts/components/Intro';
+import { List, ListItem } from 'ts/components/List';
+import { TabBlock, Tabs } from 'ts/components/Tabs';
+
+const Animation = Loadable({
+    loader: () => System.import(/* webpackChunkName: 'cov-animation' */ 'ts/components/Animations/Cov'),
+    loading: () => <div />,
+    delay: 1000,
+    render(loadable: { Animation: any }): React.ReactNode {
+        const Component = loadable.Animation;
+        return <Component />;
+    },
+});
+
+const Cov: React.StatelessComponent<{}> = () => (
+    <Base context={context}>
+        <Hero>
+            <Animation />
+        </Hero>
+        <Intro>
+            <IntroLead title="Measure your tests">
+                <p>
+                    When it comes to writing smart contracts, testing is one of the most important steps of the process.
+                    In order to quantify the robustness of your Solidity testing suite, you need to measure its code
+                    coverage.
+                </p>
+            </IntroLead>
+            <IntroAside>
+                <Code
+                    language="javascript"
+                    isDiff={true}
+                    gutterLength={2}
+                    gutter={[4, undefined, 4, 4, 4, undefined, 4, 2, 2, 2]}
+                >
+                    {`+function executeTransaction(uint transactionId)
+     public
++    notExecuted(transactionId)
++    fullyConfirmed(transactionId)
++    pastTimeLock(transactionId)
+{
++    Transaction storage tx = transactions[transactionId]
++    tx.executed = true
++    if (tx.destination.call.value(tx.value)(tx.data))
++        Execution(transactionId)
+     else {
+-        ExecutionFailure(transactionId)
+-        tx.executed = false
+    }
+}`}
+                </Code>
+            </IntroAside>
+        </Intro>
+
+        <Content>
+            <ContentBlock main={true} title="Get started" />
+            <ContentBlock title="Prerequisites">
+                <List>
+                    <ListItem>
+                        Use <a href="#">ganache-cli</a> as a backing node.
+                    </ListItem>
+                    <ListItem>
+                        Understand and use <a href="#">web3-provider-engine</a>.
+                    </ListItem>
+                </List>
+            </ContentBlock>
+            <ContentBlock title="Installation">
+                <Breakout>
+                    <Code>npm install @0x/sol-cov --save</Code>
+                </Breakout>
+
+                <p>
+                    Sol-cov is a subprovider that needs to be prepended to your <a href="#">provider engine</a>.
+                    Depending on your project setup, you will need to use a specific ArtifactAdapter. Sol-cov ships with
+                    the <InlineCode>SolCompilerArtifactAdapter</InlineCode> for use with <a href="#">Sol-compiler</a>{' '}
+                    and <InlineCode>TruffleArtifactAdapter</InlineCode> for use with the{' '}
+                    <a href="#">Truffle framework</a>. You can also write your own and support any artifact format.
+                </p>
+
+                <Tabs>
+                    <TabBlock title="Sol-compiler">
+                        <Code language="javascript">
+                            {`import { SolCompilerArtifactAdapter } from '@0x/sol-trace';
+
+// Both artifactsDir and contractsDir are optional and will be fetched from compiler.json if not passed in
+const artifactAdapter = new SolCompilerArtifactAdapter(artifactsDir, contractsDir);`}
+                        </Code>
+                    </TabBlock>
+                    <TabBlock title="Truffle">
+                        <Code language="javascript">
+                            {`import { TruffleArtifactAdapter } from '@0x/sol-trace';
+
+const projectRoot = '.';
+const solcVersion = '0.4.24';
+const artifactAdapter = new TruffleArtifactAdapter(projectRoot, solcVersion);`}
+                        </Code>
+                    </TabBlock>
+                    <TabBlock title="Custom">
+                        <Code language="javascript">
+                            {`import { AbstractArtifactAdapter } from '@0x/sol-trace';
+
+class YourCustomArtifactsAdapter extends AbstractArtifactAdapter {...};
+const artifactAdapter = new YourCustomArtifactsAdapter(...);`}
+                        </Code>
+                    </TabBlock>
+                </Tabs>
+                <p>
+                    Now that we have an <InlineCode>artifactAdapter</InlineCode>, we can create a{' '}
+                    <InlineCode>RevertTraceSubprovider</InlineCode> and append it to our provider engine.
+                </p>
+
+                <Breakout>
+                    <Code language="javascript">
+                        {`import { ProviderEngine, RpcSubprovider } from 'web3-provider-engine';
+import { RevertTraceSubprovider } from '@0x/sol-cov';
+
+const defaultFromAddress = "..."; // Some ethereum address with test funds
+const revertTraceSubprovider = new RevertTraceSubprovider(artifactAdapter, defaultFromAddress);
+
+const providerEngine = new ProviderEngine();
+providerEngine.addProvider(revertTraceSubprovider);
+providerEngine.addProvider(new RpcSubprovider({rpcUrl: 'http://localhost:8545'}));
+providerEngine.start();`}
+                    </Code>
+                </Breakout>
+            </ContentBlock>
+        </Content>
+    </Base>
+);
+
+const root = document.getElementById('app');
+
+if (root.hasChildNodes()) {
+    hydrate(<Cov />, root);
+} else {
+    render(<Cov />, root);
+}
-- 
cgit v1.2.3

