Commit 35bd3f74 authored by aniket-engg's avatar aniket-engg Committed by Aniket

expected vs returned for equal method for uint type

parent 83251c82
...@@ -8,14 +8,21 @@ library Assert { ...@@ -8,14 +8,21 @@ library Assert {
string message string message
); );
event AssertionEventUint(
bool passed,
string message,
uint256 returned,
uint256 expected
);
function ok(bool a, string memory message) public returns (bool result) { function ok(bool a, string memory message) public returns (bool result) {
result = a; result = a;
emit AssertionEvent(result, message); emit AssertionEvent(result, message);
} }
function equal(uint a, uint b, string memory message) public returns (bool result) { function equal(uint256 a, uint256 b, string memory message) public returns (bool result) {
result = (a == b); result = (a == b);
emit AssertionEvent(result, message); emit AssertionEventUint(result, message, a, b);
} }
function equal(int a, int b, string memory message) public returns (bool result) { function equal(int a, int b, string memory message) public returns (bool result) {
......
...@@ -228,20 +228,33 @@ export function runTest (testName: string, testObject: any, contractDetails: Com ...@@ -228,20 +228,33 @@ export function runTest (testName: string, testObject: any, contractDetails: Com
method.send(sendParams).on('receipt', (receipt) => { method.send(sendParams).on('receipt', (receipt) => {
try { try {
const time: number = (Date.now() - startTime) / 1000.0 const time: number = (Date.now() - startTime) / 1000.0
const topic = Web3.utils.sha3('AssertionEvent(bool,string)') const assertionEvents = [
{
name: 'AssertionEvent',
params: ['bool', 'string']
},
{
name: 'AssertionEventUint',
params: ['bool', 'string', 'uint256', 'uint256']
}
]
const assertionEventHashes = assertionEvents.map(e => Web3.utils.sha3(e.name + '(' + e.params.join() + ')') )
let testPassed = false let testPassed = false
for (const i in receipt.events) { for (const i in receipt.events) {
const event = receipt.events[i] const event = receipt.events[i]
if (event.raw.topics.indexOf(topic) >= 0) { const eIndex = assertionEventHashes.indexOf(event.raw.topics[0]) // event name topic will always be at index 0
const testEvent = web3.eth.abi.decodeParameters(['bool', 'string'], event.raw.data) if (eIndex >= 0) {
const testEvent = web3.eth.abi.decodeParameters(assertionEvents[eIndex].params, event.raw.data)
if (!testEvent[0]) { if (!testEvent[0]) {
const resp: TestResultInterface = { const resp: TestResultInterface = {
type: 'testFailure', type: 'testFailure',
value: changeCase.sentenceCase(func.name), value: changeCase.sentenceCase(func.name),
time: time, time: time,
errMsg: testEvent[1], errMsg: testEvent[1],
context: testName context: testName,
returned: testEvent[2],
expected: testEvent[3]
}; };
testCallback(undefined, resp) testCallback(undefined, resp)
failureNum += 1 failureNum += 1
......
...@@ -26,12 +26,14 @@ export interface ResultsInterface { ...@@ -26,12 +26,14 @@ export interface ResultsInterface {
timePassed: number timePassed: number
} }
export interface TestResultInterface { export interface TestResultInterface {
type: string, type: string
value: any, value: any
time?: number, time?: number
context?: string, context?: string
errMsg?: string errMsg?: string
filename?: string filename?: string
returned?: string | number
expected?: string | number
} }
export interface TestCbInterface { export interface TestCbInterface {
(error: Error | null | undefined, result: TestResultInterface) : void; (error: Error | null | undefined, result: TestResultInterface) : void;
......
...@@ -125,7 +125,7 @@ describe('testRunner', () => { ...@@ -125,7 +125,7 @@ describe('testRunner', () => {
{ type: 'contract', value: 'MyTest', filename: __dirname + '/examples_1/simple_storage_test.sol' }, { type: 'contract', value: 'MyTest', filename: __dirname + '/examples_1/simple_storage_test.sol' },
{ type: 'testPass', value: 'Initial value should be100', context: 'MyTest' }, { type: 'testPass', value: 'Initial value should be100', context: 'MyTest' },
{ type: 'testPass', value: 'Initial value should not be200', context: 'MyTest' }, { type: 'testPass', value: 'Initial value should not be200', context: 'MyTest' },
{ type: 'testFailure', value: 'Should trigger one fail', errMsg: 'uint test 1 fails', context: 'MyTest' }, { type: 'testFailure', value: 'Should trigger one fail', errMsg: 'uint test 1 fails', context: 'MyTest', expected: '2', returned: '1'},
{ type: 'testPass', value: 'Should trigger one pass', context: 'MyTest' } { type: 'testPass', value: 'Should trigger one pass', context: 'MyTest' }
], ['time']) ], ['time'])
}) })
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment