UT: Test offer counts.

This commit is contained in:
Arthur Britto
2012-12-14 21:21:27 -08:00
parent 12a4ce88ec
commit fd0bd1433f
3 changed files with 83 additions and 1 deletions

View File

@@ -622,7 +622,6 @@ Remote.prototype.request_ledger_entry = function (type) {
// console.log('request_ledger_entry: caught'); // console.log('request_ledger_entry: caught');
if (self._ledger_hash) { if (self._ledger_hash) {
// A specific ledger is requested. // A specific ledger is requested.
@@ -913,6 +912,19 @@ Remote.prototype.request_account_balance = function (account, current) {
}); });
}; };
// Return a request to emit the owner count.
Remote.prototype.request_owner_count = function (account, current) {
var request = this.request_ledger_entry('account_root');
return request
.account_root(account)
.ledger_choose(current)
.on('success', function (message) {
// If the caller also waits for 'success', they might run before this.
request.emit('owner_count', message.node.OwnerCount);
});
};
// Return the next account sequence if possible. // Return the next account sequence if possible.
// <-- undefined or Sequence // <-- undefined or Sequence
Remote.prototype.account_seq = function (account, advance) { Remote.prototype.account_seq = function (account, advance) {

View File

@@ -15,6 +15,7 @@ buster.testRunner.timeout = 5000;
buster.testCase("Offer tests", { buster.testCase("Offer tests", {
'setUp' : testutils.build_setup(), 'setUp' : testutils.build_setup(),
// 'setUp' : testutils.build_setup({ verbose: true }),
'tearDown' : testutils.build_teardown(), 'tearDown' : testutils.build_teardown(),
"offer create then cancel in one ledger" : "offer create then cancel in one ledger" :
@@ -344,6 +345,11 @@ buster.testCase("Offer tests", {
testutils.create_accounts(self.remote, "root", "10000.0", ["alice", "bob", "mtgox"], callback); testutils.create_accounts(self.remote, "root", "10000.0", ["alice", "bob", "mtgox"], callback);
}, },
function (callback) {
self.what = "Owner count undefined.";
testutils.verify_owner_count(self.remote, "bob", undefined, callback);
},
function (callback) { function (callback) {
self.what = "Set limits."; self.what = "Set limits.";
@@ -354,6 +360,16 @@ buster.testCase("Offer tests", {
}, },
callback); callback);
}, },
function (callback) {
self.what = "Owner counts after trust.";
testutils.verify_owner_counts(self.remote,
{
"alice" : 1,
"bob" : 1,
},
callback);
},
function (callback) { function (callback) {
self.what = "Distribute funds."; self.what = "Distribute funds.";
@@ -376,6 +392,16 @@ buster.testCase("Offer tests", {
}) })
.submit(); .submit();
}, },
function (callback) {
self.what = "Owner counts after offer create.";
testutils.verify_owner_counts(self.remote,
{
"alice" : 1,
"bob" : 2,
},
callback);
},
function (callback) { function (callback) {
self.what = "Verify offer balance."; self.what = "Verify offer balance.";
@@ -409,6 +435,16 @@ buster.testCase("Offer tests", {
testutils.verify_offer_not_found(self.remote, "bob", seq, callback); testutils.verify_offer_not_found(self.remote, "bob", seq, callback);
}, },
function (callback) {
self.what = "Owner counts after consumed.";
testutils.verify_owner_counts(self.remote,
{
"alice" : 1,
"bob" : 1,
},
callback);
},
], function (error) { ], function (error) {
buster.refute(error, self.what); buster.refute(error, self.what);
done(); done();

View File

@@ -138,6 +138,8 @@ var build_teardown = function (host) {
var create_accounts = function (remote, src, amount, accounts, callback) { var create_accounts = function (remote, src, amount, accounts, callback) {
assert(5 === arguments.length); assert(5 === arguments.length);
remote.set_account_seq(src, 1);
async.forEach(accounts, function (account, callback) { async.forEach(accounts, function (account, callback) {
// Cache the seq as 1. // Cache the seq as 1.
// Otherwise, when other operations attempt to opperate async against the account they may get confused. // Otherwise, when other operations attempt to opperate async against the account they may get confused.
@@ -364,6 +366,36 @@ var verify_offer_not_found = function (remote, owner, seq, callback) {
.request(); .request();
}; };
var verify_owner_count = function (remote, account, value, callback) {
assert(4 === arguments.length);
remote.request_owner_count(account, 'CURRENT')
.once('owner_count', function (owner_count) {
if (owner_count !== value)
console.log("owner_count: %s/%d", owner_count, value);
callback(owner_count !== value);
})
.request();
};
var verify_owner_counts = function (remote, counts, callback) {
var tests = [];
for (var src in counts) {
tests.push( { "source" : src, "count" : counts[src] } );
}
async.every(tests,
function (check, callback) {
verify_owner_count(remote, check.source, check.count,
function (mismatch) { callback(!mismatch); });
},
function (every) {
callback(!every);
});
};
exports.account_dump = account_dump; exports.account_dump = account_dump;
exports.build_setup = build_setup; exports.build_setup = build_setup;
@@ -378,5 +410,7 @@ exports.verify_balance = verify_balance;
exports.verify_balances = verify_balances; exports.verify_balances = verify_balances;
exports.verify_offer = verify_offer; exports.verify_offer = verify_offer;
exports.verify_offer_not_found = verify_offer_not_found; exports.verify_offer_not_found = verify_offer_not_found;
exports.verify_owner_count = verify_owner_count;
exports.verify_owner_counts = verify_owner_counts;
// vim:sw=2:sts=2:ts=8:et // vim:sw=2:sts=2:ts=8:et