From 03faec9d41d631f9a4cc6bbe1e91e7cd1cf7b965 Mon Sep 17 00:00:00 2001
From: Marek Kotewicz <marek.kotewicz@gmail.com>
Date: Tue, 3 Feb 2015 15:08:19 +0100
Subject: event outputParser && tests

---
 test/event.inputParser.js  | 125 +++++++++++++++++++++++++++++++++++++++++++++
 test/event.js              | 124 --------------------------------------------
 test/event.outputParser.js |  81 +++++++++++++++++++++++++++++
 3 files changed, 206 insertions(+), 124 deletions(-)
 create mode 100644 test/event.inputParser.js
 delete mode 100644 test/event.js
 create mode 100644 test/event.outputParser.js

(limited to 'test')

diff --git a/test/event.inputParser.js b/test/event.inputParser.js
new file mode 100644
index 000000000..8f9790a2d
--- /dev/null
+++ b/test/event.inputParser.js
@@ -0,0 +1,125 @@
+var assert = require('assert');
+var event = require('../lib/event.js');
+var f = require('../lib/formatters.js');
+
+describe('event', function () {
+    describe('inputParser', function () {
+        it('should create basic filter input object', function () {
+            
+            // given
+            var address = '0x012345'; 
+            var signature = '0x987654';
+            var e = {
+                name: 'Event',
+                inputs: [{"name":"a","type":"uint256","indexed":true},{"name":"b","type":"hash256","indexed":false}]
+            };
+
+            // when
+            var impl = event.inputParser(address, signature, e);
+            var result = impl();
+
+            // then
+            assert.equal(result.address, address); 
+            assert.equal(result.topic.length, 1);
+            assert.equal(result.topic[0], signature);
+
+        });
+
+        it('should create filter input object with options', function () {
+            
+            // given
+            var address = '0x012345';
+            var signature = '0x987654';
+            var options = {
+                earliest: 1,
+                latest: 2,
+                offset: 3,
+                max: 4
+            };
+            var e = {
+                name: 'Event',
+                inputs: [{"name":"a","type":"uint256","indexed":true},{"name":"b","type":"hash256","indexed":false}]
+            };
+
+            // when
+            var impl = event.inputParser(address, signature, e); 
+            var result = impl({}, options);
+
+            // then
+            assert.equal(result.address, address);
+            assert.equal(result.topic.length, 1);
+            assert.equal(result.topic[0], signature);
+            assert.equal(result.earliest, options.earliest);
+            assert.equal(result.latest, options.latest);
+            assert.equal(result.offset, options.offset);
+            assert.equal(result.max, options.max);
+        
+        });
+
+        it('should create filter input object with indexed params', function () {
+        
+            // given
+            var address = '0x012345';
+            var signature = '0x987654';
+            var options = {
+                earliest: 1,
+                latest: 2,
+                offset: 3,
+                max: 4
+            };
+            var e = {
+                name: 'Event',
+                inputs: [{"name":"a","type":"uint256","indexed":true},{"name":"b","type":"hash256","indexed":false}]
+            };
+
+            // when
+            var impl = event.inputParser(address, signature, e); 
+            var result = impl({a: 4}, options);
+
+            // then
+            assert.equal(result.address, address);
+            assert.equal(result.topic.length, 2);
+            assert.equal(result.topic[0], signature);
+            assert.equal(result.topic[1], f.formatInputInt(4));
+            assert.equal(result.earliest, options.earliest);
+            assert.equal(result.latest, options.latest);
+            assert.equal(result.offset, options.offset);
+            assert.equal(result.max, options.max);
+
+        });
+
+        it('should create filter input object with an array of indexed params', function () {
+        
+            // given
+            var address = '0x012345';
+            var signature = '0x987654';
+            var options = {
+                earliest: 1,
+                latest: 2,
+                offset: 3,
+                max: 4
+            };
+            var e = {
+                name: 'Event',
+                inputs: [{"name":"a","type":"uint256","indexed":true},{"name":"b","type":"hash256","indexed":false}]
+            };
+
+            // when
+            var impl = event.inputParser(address, signature, e); 
+            var result = impl({a: [4, 69]}, options);
+
+            // then
+            assert.equal(result.address, address);
+            assert.equal(result.topic.length, 2);
+            assert.equal(result.topic[0], signature);
+            assert.equal(result.topic[1][0], f.formatInputInt(4));
+            assert.equal(result.topic[1][1], f.formatInputInt(69));
+            assert.equal(result.earliest, options.earliest);
+            assert.equal(result.latest, options.latest);
+            assert.equal(result.offset, options.offset);
+            assert.equal(result.max, options.max);
+
+        });
+    });
+});
+
diff --git a/test/event.js b/test/event.js
deleted file mode 100644
index 9edd93ae7..000000000
--- a/test/event.js
+++ /dev/null
@@ -1,124 +0,0 @@
-var assert = require('assert');
-var event = require('../lib/event.js');
-var f = require('../lib/formatters.js');
-
-describe('event', function () {
-    it('should create basic filter input object', function () {
-        
-        // given
-        var address = '0x012345'; 
-        var signature = '0x987654';
-        var e = {
-            name: 'Event',
-            inputs: [{"name":"a","type":"uint256","indexed":true},{"name":"b","type":"hash256","indexed":false}]
-        };
-
-        // when
-        var impl = event(address, signature, e);
-        var result = impl();
-
-        // then
-        assert.equal(result.address, address); 
-        assert.equal(result.topic.length, 1);
-        assert.equal(result.topic[0], signature);
-
-    });
-
-    it('should create filter input object with options', function () {
-        
-        // given
-        var address = '0x012345';
-        var signature = '0x987654';
-        var options = {
-            earliest: 1,
-            latest: 2,
-            offset: 3,
-            max: 4
-        };
-        var e = {
-            name: 'Event',
-            inputs: [{"name":"a","type":"uint256","indexed":true},{"name":"b","type":"hash256","indexed":false}]
-        };
-
-        // when
-        var impl = event(address, signature, e); 
-        var result = impl({}, options);
-
-        // then
-        assert.equal(result.address, address);
-        assert.equal(result.topic.length, 1);
-        assert.equal(result.topic[0], signature);
-        assert.equal(result.earliest, options.earliest);
-        assert.equal(result.latest, options.latest);
-        assert.equal(result.offset, options.offset);
-        assert.equal(result.max, options.max);
-    
-    });
-
-    it('should create filter input object with indexed params', function () {
-    
-        // given
-        var address = '0x012345';
-        var signature = '0x987654';
-        var options = {
-            earliest: 1,
-            latest: 2,
-            offset: 3,
-            max: 4
-        };
-        var e = {
-            name: 'Event',
-            inputs: [{"name":"a","type":"uint256","indexed":true},{"name":"b","type":"hash256","indexed":false}]
-        };
-
-        // when
-        var impl = event(address, signature, e); 
-        var result = impl({a: 4}, options);
-
-        // then
-        assert.equal(result.address, address);
-        assert.equal(result.topic.length, 2);
-        assert.equal(result.topic[0], signature);
-        assert.equal(result.topic[1], f.formatInputInt(4));
-        assert.equal(result.earliest, options.earliest);
-        assert.equal(result.latest, options.latest);
-        assert.equal(result.offset, options.offset);
-        assert.equal(result.max, options.max);
-
-    });
-
-    it('should create filter input object with an array of indexed params', function () {
-    
-        // given
-        var address = '0x012345';
-        var signature = '0x987654';
-        var options = {
-            earliest: 1,
-            latest: 2,
-            offset: 3,
-            max: 4
-        };
-        var e = {
-            name: 'Event',
-            inputs: [{"name":"a","type":"uint256","indexed":true},{"name":"b","type":"hash256","indexed":false}]
-        };
-
-        // when
-        var impl = event(address, signature, e); 
-        var result = impl({a: [4, 69]}, options);
-
-        // then
-        assert.equal(result.address, address);
-        assert.equal(result.topic.length, 2);
-        assert.equal(result.topic[0], signature);
-        assert.equal(result.topic[1][0], f.formatInputInt(4));
-        assert.equal(result.topic[1][1], f.formatInputInt(69));
-        assert.equal(result.earliest, options.earliest);
-        assert.equal(result.latest, options.latest);
-        assert.equal(result.offset, options.offset);
-        assert.equal(result.max, options.max);
-
-    });
-
-});
-
diff --git a/test/event.outputParser.js b/test/event.outputParser.js
new file mode 100644
index 000000000..22f4ed395
--- /dev/null
+++ b/test/event.outputParser.js
@@ -0,0 +1,81 @@
+var assert = require('assert');
+var event = require('../lib/event.js');
+
+describe('event', function () {
+    describe('outputParser', function () {
+        it('should parse basic event output object', function () {
+            
+            // given
+            var output = {
+                "address":"0x78dfc5983baecf65f73e3de3a96cee24e6b7981e",
+                "data":"0x000000000000000000000000000000000000000000000000000000000000004b",
+                "number":2,
+                "topic":[
+                    "0x6e61ef44ac2747ff8b84d353a908eb8bd5c3fb118334d57698c5cfc7041196ad",
+                    "0x0000000000000000000000000000000000000000000000000000000000000001"
+                ]
+            };
+
+            var e = {
+                name: 'Event',
+                inputs: [{"name":"a","type":"bool","indexed":true},{"name":"b","type":"uint256","indexed":false}]
+            };
+
+            // when 
+            var impl = event.outputParser(e);
+            var result = impl(output);
+
+            // then
+            assert.equal(result.event, 'Event');
+            assert.equal(result.number, 2);
+            assert.equal(Object.keys(result.args).length, 2);
+            assert.equal(result.args.a, true);
+            assert.equal(result.args.b, 75);
+        }); 
+
+        it('should parse event output object arguments in correct order', function () {
+            
+            // given
+            var output = {
+                "address":"0x78dfc5983baecf65f73e3de3a96cee24e6b7981e",
+                "data": "0x" + 
+                    "000000000000000000000000000000000000000000000000000000000000004b" + 
+                    "000000000000000000000000000000000000000000000000000000000000004c" +
+                    "0000000000000000000000000000000000000000000000000000000000000001",
+                "number":3,
+                "topic":[
+                    "0x6e61ef44ac2747ff8b84d353a908eb8bd5c3fb118334d57698c5cfc7041196ad",
+                    "0x0000000000000000000000000000000000000000000000000000000000000001",
+                    "0x0000000000000000000000000000000000000000000000000000000000000005"
+                ]
+            };
+            
+            var e = {
+                name: 'Event2',
+                inputs: [
+                    {"name":"a","type":"bool","indexed":true},
+                    {"name":"b","type":"int","indexed":false},
+                    {"name":"c","type":"int","indexed":false},
+                    {"name":"d","type":"int","indexed":true},
+                    {"name":"e","type":"bool","indexed":false}
+                ]
+            };
+            
+            // when 
+            var impl = event.outputParser(e);
+            var result = impl(output);
+            
+            // then
+            assert.equal(result.event, 'Event2');
+            assert.equal(result.number, 3);
+            assert.equal(Object.keys(result.args).length, 5);
+            assert.equal(result.args.a, true);
+            assert.equal(result.args.b, 75);
+            assert.equal(result.args.c, 76);
+            assert.equal(result.args.d, 5);
+            assert.equal(result.args.e, true);
+
+        });
+    });
+});
+
-- 
cgit v1.2.3