aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/abi.filters.js49
-rw-r--r--test/abi.parsers.js37
-rw-r--r--test/eth.contract.js201
-rw-r--r--test/eth.methods.js1
-rw-r--r--test/event.js22
-rw-r--r--test/web3.methods.js3
6 files changed, 309 insertions, 4 deletions
diff --git a/test/abi.filters.js b/test/abi.filters.js
new file mode 100644
index 000000000..42385fd2a
--- /dev/null
+++ b/test/abi.filters.js
@@ -0,0 +1,49 @@
+var assert = require('assert');
+var abi = require('../lib/abi.js');
+
+describe('abi', function() {
+ it('should filter functions and events from input array properly', function () {
+
+ // given
+ var description = [{
+ "name": "test",
+ "type": "function",
+ "inputs": [{
+ "name": "a",
+ "type": "uint256"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "d",
+ "type": "uint256"
+ }
+ ],
+ }, {
+ "name": "test2",
+ "type": "event",
+ "inputs": [{
+ "name": "a",
+ "type": "uint256"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "d",
+ "type": "uint256"
+ }
+ ]
+ }];
+
+ // when
+ var events = abi.filterEvents(description);
+ var functions = abi.filterFunctions(description);
+
+ // then
+ assert.equal(events.length, 1);
+ assert.equal(events[0].name, 'test2');
+ assert.equal(functions.length, 1);
+ assert.equal(functions[0].name, 'test');
+
+ });
+});
diff --git a/test/abi.parsers.js b/test/abi.parsers.js
index 19fa1d4cf..12bccf5a5 100644
--- a/test/abi.parsers.js
+++ b/test/abi.parsers.js
@@ -5,6 +5,7 @@ var clone = function (object) { return JSON.parse(JSON.stringify(object)); };
var description = [{
"name": "test",
+ "type": "function",
"inputs": [{
"name": "a",
"type": "uint256"
@@ -339,10 +340,12 @@ describe('abi', function() {
// given
var d = [{
name: "test",
+ type: "function",
inputs: [{ type: "int" }],
outputs: [{ type: "int" }]
},{
name: "test2",
+ type: "function",
inputs: [{ type: "string" }],
outputs: [{ type: "string" }]
}];
@@ -775,10 +778,12 @@ describe('abi', function() {
// given
var d = [{
name: "test",
+ type: "function",
inputs: [{ type: "int" }],
outputs: [{ type: "int" }]
},{
name: "test2",
+ type: "function",
inputs: [{ type: "string" }],
outputs: [{ type: "string" }]
}];
@@ -823,6 +828,38 @@ describe('abi', function() {
});
+ it('should parse 0x value', function () {
+
+ // given
+ var d = clone(description);
+ d[0].outputs = [
+ { type: 'int' }
+ ];
+
+ // when
+ var parser = abi.outputParser(d);
+
+ // then
+ assert.equal(parser.test("0x")[0], 0);
+
+ });
+
+ it('should parse 0x value', function () {
+
+ // given
+ var d = clone(description);
+ d[0].outputs = [
+ { type: 'uint' }
+ ];
+
+ // when
+ var parser = abi.outputParser(d);
+
+ // then
+ assert.equal(parser.test("0x")[0], 0);
+
+ });
+
});
});
diff --git a/test/eth.contract.js b/test/eth.contract.js
new file mode 100644
index 000000000..1a92ec88f
--- /dev/null
+++ b/test/eth.contract.js
@@ -0,0 +1,201 @@
+var assert = require('assert');
+var contract = require('../lib/contract.js');
+
+describe('contract', function() {
+ it('should create simple contract with one method from abi with explicit type name', function () {
+
+ // given
+ var description = [{
+ "name": "test(uint256)",
+ "type": "function",
+ "inputs": [{
+ "name": "a",
+ "type": "uint256"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "d",
+ "type": "uint256"
+ }
+ ]
+ }];
+
+ // when
+ var con = contract(null, description);
+
+ // then
+ assert.equal('function', typeof con.test);
+ assert.equal('function', typeof con.test['uint256']);
+ });
+
+ it('should create simple contract with one method from abi with implicit type name', function () {
+
+ // given
+ var description = [{
+ "name": "test",
+ "type": "function",
+ "inputs": [{
+ "name": "a",
+ "type": "uint256"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "d",
+ "type": "uint256"
+ }
+ ]
+ }];
+
+ // when
+ var con = contract(null, description);
+
+ // then
+ assert.equal('function', typeof con.test);
+ assert.equal('function', typeof con.test['uint256']);
+ });
+
+ it('should create contract with multiple methods', function () {
+
+ // given
+ var description = [{
+ "name": "test",
+ "type": "function",
+ "inputs": [{
+ "name": "a",
+ "type": "uint256"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "d",
+ "type": "uint256"
+ }
+ ],
+ }, {
+ "name": "test2",
+ "type": "function",
+ "inputs": [{
+ "name": "a",
+ "type": "uint256"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "d",
+ "type": "uint256"
+ }
+ ]
+ }];
+
+ // when
+ var con = contract(null, description);
+
+ // then
+ assert.equal('function', typeof con.test);
+ assert.equal('function', typeof con.test['uint256']);
+ assert.equal('function', typeof con.test2);
+ assert.equal('function', typeof con.test2['uint256']);
+ });
+
+ it('should create contract with overloaded methods', function () {
+
+ // given
+ var description = [{
+ "name": "test",
+ "type": "function",
+ "inputs": [{
+ "name": "a",
+ "type": "uint256"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "d",
+ "type": "uint256"
+ }
+ ],
+ }, {
+ "name": "test",
+ "type": "function",
+ "inputs": [{
+ "name": "a",
+ "type": "string"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "d",
+ "type": "uint256"
+ }
+ ]
+ }];
+
+ // when
+ var con = contract(null, description);
+
+ // then
+ assert.equal('function', typeof con.test);
+ assert.equal('function', typeof con.test['uint256']);
+ assert.equal('function', typeof con.test['string']);
+ });
+
+ it('should create contract with no methods', function () {
+
+ // given
+ var description = [{
+ "name": "test(uint256)",
+ "inputs": [{
+ "name": "a",
+ "type": "uint256"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "d",
+ "type": "uint256"
+ }
+ ]
+ }];
+
+
+ // when
+ var con = contract(null, description);
+
+ // then
+ assert.equal('undefined', typeof con.test);
+
+ });
+
+ it('should create contract with one event', function () {
+
+ // given
+ var description = [{
+ "name": "test",
+ "type": "event",
+ "inputs": [{
+ "name": "a",
+ "type": "uint256"
+ }
+ ],
+ "outputs": [
+ {
+ "name": "d",
+ "type": "uint256"
+ }
+ ]
+ }];
+
+
+ // when
+ var con = contract(null, description);
+
+ // then
+ assert.equal('function', typeof con.test);
+ assert.equal('function', typeof con.test['uint256']);
+
+ });
+
+});
+
diff --git a/test/eth.methods.js b/test/eth.methods.js
index 002268565..7a031c4c8 100644
--- a/test/eth.methods.js
+++ b/test/eth.methods.js
@@ -24,7 +24,6 @@ describe('web3', function() {
u.propertyExists(web3.eth, 'listening');
u.propertyExists(web3.eth, 'mining');
u.propertyExists(web3.eth, 'gasPrice');
- u.propertyExists(web3.eth, 'account');
u.propertyExists(web3.eth, 'accounts');
u.propertyExists(web3.eth, 'peerCount');
u.propertyExists(web3.eth, 'defaultBlock');
diff --git a/test/event.js b/test/event.js
new file mode 100644
index 000000000..781f42e5e
--- /dev/null
+++ b/test/event.js
@@ -0,0 +1,22 @@
+var assert = require('assert');
+var event = require('../lib/event.js');
+
+describe('event', function () {
+ it('should create filter input object from given', function () {
+
+ // given
+ var address = '0x012345';
+ var signature = '0x987654';
+
+ // when
+ var impl = event(address, signature);
+ var result = impl();
+
+ // then
+ assert.equal(result.address, address);
+ assert.equal(result.topics.length, 1);
+ assert.equal(result.topics[0], signature);
+
+ });
+});
+
diff --git a/test/web3.methods.js b/test/web3.methods.js
index 1b5792110..d08495dd9 100644
--- a/test/web3.methods.js
+++ b/test/web3.methods.js
@@ -6,8 +6,5 @@ describe('web3', function() {
u.methodExists(web3, 'sha3');
u.methodExists(web3, 'toAscii');
u.methodExists(web3, 'fromAscii');
- u.methodExists(web3, 'toFixed');
- u.methodExists(web3, 'fromFixed');
- u.methodExists(web3, 'offset');
});