Skip to content

Commit

Permalink
Add tests for the seed scanner, and related fixes.
Browse files Browse the repository at this point in the history
  • Loading branch information
caedesvvv committed Oct 24, 2014
1 parent fc1ff80 commit 055db20
Show file tree
Hide file tree
Showing 2 changed files with 101 additions and 2 deletions.
4 changes: 2 additions & 2 deletions js/util/scanner.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ define(['bitcoinjs-lib'], function(Bitcoin) {

// Address scanner
function Scanner(client, identity, finishCb, updateCb, scanMain) {
this.addressVersion = identity.wallet.versions.address;
this.network = identity.wallet.network;
this.client = client;

var mpk = identity.wallet.mpk;
Expand Down Expand Up @@ -44,7 +44,7 @@ define(['bitcoinjs-lib'], function(Bitcoin) {
if (n >= 0) {
childKey = childKey.derive(n);
}
var address = childKey.pubKey.getAddress(Bitcoin.networks[identity.wallet.network]);
var address = childKey.pubKey.getAddress(Bitcoin.networks[this.network]);
return address.toString();
};

Expand Down
99 changes: 99 additions & 0 deletions test/unit/util/scannerSpec.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,103 @@

define(['util/scanner'], function(Scanner) {

var client = {fetch_history: function(address, height, cb) {
if(address==='1NmG1PMcwkz9UGpfu3Aa1hsGyKCApTjPvJ') {
cb(null, [1,2,3]);
} else {
cb(null, []);
}
}};
var identity = {
wallet: {
mpk: 'xpub693Ab9Kv7vQjSJ9fZLKAWjqPUEjSyM7LidCCZW8wGosvZKi3Pf2ijiGe1MDTBmQnpXU795HNb4ebuW95tbLNuAzXndALZpRkRaRCbXDhafA',
versions: {address: 0}
}
};

beforeEach(function(done) {
done();
});

describe('HD Scanner', function() {
it('is created properly', function() {
var updateCb = function() {};
var finishCb = function() {};
var scanner = new Scanner(client, identity, finishCb, updateCb);
expect(scanner.scanned).toBe(0);
expect(scanner.status).toBe('');
expect(scanner.used).toEqual([]);
});
it('sets margins', function() {
var updateCb = function() {};
var finishCb = function() {};
var scanner = new Scanner(client, identity, finishCb, updateCb);
scanner.setMargins(3, 10);
expect(scanner.pocketMargin).toBe(6);
expect(scanner.addressMargin).toBe(10);
expect(scanner.target).toBe(60);
});
it('gets address', function() {
var updateCb = function() {};
var finishCb = function() {};
var scanner = new Scanner(client, identity, finishCb, updateCb);
var address1 = scanner.getAddress(3, 3);
var address2 = scanner.getAddress(3, 4);
expect(address1).toBe('1HSa4TdZ2NDoTvDgB9y6xdY475y3n1qj4j');
expect(address2).toBe('1DC8C5oxnGiYQbjJ7h8kVmpYpCMJxnc5Mx');
});
it('gets address from cache', function() {
var updateCb = function() {};
var finishCb = function() {};
var scanner = new Scanner(client, identity, finishCb, updateCb);
expect(scanner.pocketCache[3]).toBeUndefined();
var address = scanner.getAddress(3, 2);
expect(address).toBe('1HiMmKbA16tGfoZo6rDg3UTvUJGwqY4ZVu');
expect(scanner.pocketCache[3]).toBeDefined();
address = scanner.getAddress(3, 2);
expect(address).toBe('1HiMmKbA16tGfoZo6rDg3UTvUJGwqY4ZVu');
});
it('scans address', function() {
var updateCalled = false;
var updateCb = function() {updateCalled=true};
var finishCb = function() {};
var scanner = new Scanner(client, identity, finishCb, updateCb);
var called = false;
scanner.scanAddress(3, 2, function() {called=true});
expect(called).toBe(true);
expect(updateCalled).toBe(true);
});
it('scans', function() {
var updateCalled = 0;
var finishCalled = false;
var updateCb = function() {updateCalled+=1;};
var finishCb = function() {finishCalled=true;};
var scanner = new Scanner(client, identity, finishCb, updateCb);
scanner.setMargins(2, 2);
scanner.scan();
expect(updateCalled).toBe(11);
expect(finishCalled).toBe(true);
expect(scanner.scanned).toBe(11);
expect(scanner.used).toEqual([[0,0]]);
});

it('scans with pocket master', function() {
var updateCalled = 0;
var finishCalled = false;
var updateCb = function() {updateCalled+=1;};
var finishCb = function() {finishCalled=true;};
var scanner = new Scanner(client, identity, finishCb, updateCb, true);
scanner.setMargins(2, 2);
scanner.scan();
expect(updateCalled).toBe(16);
expect(finishCalled).toBe(true);
expect(scanner.scanned).toBe(16);
expect(scanner.used).toEqual([[0,0]]);
});





});
});

0 comments on commit 055db20

Please sign in to comment.