[![Build Status](https://travis-ci.org/ethereum/remix-tests.svg?branch=master)](https://travis-ci.org/ethereum/remix-tests) Remix-Tests --- ### Installation `npm -g install remix-tests` ### Test structure Example test file: ```Javascript pragma solidity ^0.4.7; import "remix_tests.sol"; // injected by remix-tests import "./simple_storage.sol"; contract MyTest { SimpleStorage foo; uint i = 0; function beforeAll() { foo = new SimpleStorage(); } function beforeEach() { if (i == 1) { foo.set(200); } i += 1; } function initialValueShouldBe100() public { Assert.equal(foo.get(), 100, "initial value is not correct"); } function initialValueShouldBe200() public constant returns { return Assert.equal(foo.get(), 200, "initial value is not correct"); } } ``` Available special functions: * `beforeEach` - runs before each test * `beforeAll` - runs before all tests #### Assert library Available functions: `Assert.ok(value, message)` `Assert.equal(value1, value2, message)` `Assert.notEqual(value1, value2, message)` supported values currently are: `bool` `uint` `int` `address` `bytes32` ### Command Line Remix-Tests will assume the tests will files whose name end with "_test.sol". e.g `simple_storage_test.sol` Usage: * A directory with tests files `remix-tests examples/` * A test file `remix-tests examples/simple_storage_test.sol` ### Library Importing the library: ```Javascript const RemixTests = require('remix-tests'); ``` Running a single test object: ```Javascript remixTests.runTest(contractName, contractObj, testCallback, resultsCallback) ``` params: `testName` - `string` name of the test `testObj` - web3.js 1.0 contract instance of the test `testCallback(object)` - called each time there is a test event. 3 possible type of objects: * `{ type: 'contract', value: '', filename: '' }` * `{ type: 'testPass', value: '', time: