Browse Source

network: add failing tests for gamerscoin, viacoin and zetacoin

hk-custom-address
Daniel Cousens 10 years ago
parent
commit
4fca3ac196
  1. 223
      test/fixtures/network.json
  2. 36
      test/network.js

223
test/fixtures/network.json

@ -1,84 +1,151 @@
{ {
"valid": [ "valid": {
{ "constants": [
"description": "when txSize < 1kb", {
"network": "bitcoin", "network": "bitcoin",
"txSize": 1, "bip32": {
"fee": 10000 "private": "xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi",
}, "public": "xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8"
{
"description": "when txSize >= 1kb",
"network": "bitcoin",
"txSize": 1000,
"fee": 10000
},
{
"description": "rounding",
"network": "bitcoin",
"txSize": 2800,
"fee": 30000
},
{
"description": "when outputs.value > DUST_SOFT_LIMIT, feePerKb is used",
"network": "dogecoin",
"txSize": 1000,
"outputs": [
{
"value": 100000000
} }
], },
"fee": 100000000 {
}, "network": "testnet",
{ "bip32": {
"description": "when not every outputs.value > DUST_SOFT_LIMIT", "private": "tprv8ZgxMBicQKsPeDgjzdC36fs6bMjGApWDNLR9erAXMs5skhMv36j9MV5ecvfavji5khqjWaWSFhN3YcCUUdiKH6isR4Pwy3U5y5egddBr16m",
"network": "dogecoin", "public": "tpubD6NzVbkrYhZ4XgiXtGrdW5XDAPFCL9h7we1vwNCpn8tGbBcgfVYjXyhWo4E1xkh56hjod1RhGjxbaTLV3X4FyWuejifB9jusQ46QzG87VKp"
"txSize": 1000,
"outputs": [
{
"value": 99999999
},
{
"value": 99999999
} }
], },
"fee": 300000000 {
}, "network": "litecoin",
{ "bip32": {
"description": "rounding", "private": "Ltpv71G8qDifUiNetP6nmxPA5STrUVmv2J9YSmXajv8VsYBUyuPhvN9xCaQrfX2wo5xxJNtEazYCFRUu5FmokYMM79pcqz8pcdo4rNXAFPgyB4k",
"network": "dogecoin", "public": "Ltub2SSUS19CirucWFod2ZsYA2J4v4U76YiCXHdcQttnoiy5aGanFHCPDBX7utfG6f95u1cUbZJNafmvzNCzZZJTw1EmyFoL8u1gJbGM8ipu491"
"txSize": 2800,
"fee": 300000000
},
{
"description": "when outputs.value > DUST_SOFT_LIMIT, feePerKb is used",
"network": "litecoin",
"txSize": 1000,
"outputs": [
{
"value": 100000
} }
], },
"fee": 100000 {
}, "network": "dogecoin",
{ "bip32": {
"description": "when not every outputs.value > DUST_SOFT_LIMIT", "private": "dgpv51eADS3spNJh9Gjth94XcPwAczvQaDJs9rqx11kvxKs6r3Ek8AgERHhjLs6mzXQFHRzQqGwqdeoDkZmr8jQMBfi43b7sT3sx3cCSk5fGeUR",
"network": "litecoin", "public": "dgub8kXBZ7ymNWy2S8Q3jNgVjFUm5ZJ3QLLaSTdAA89ukSv7Q6MSXwE14b7Nv6eDpE9JJXinTKc8LeLVu19uDPrm5uJuhpKNzV2kAgncwo6bNpP"
"txSize": 1000,
"outputs": [
{
"value": 99999
},
{
"value": 99999
} }
], },
"fee": 300000 {
}, "network": "viacoin",
{ "bip32": {
"description": "rounding", "private": "xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi",
"network": "litecoin", "public": "xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8"
"txSize": 2800, }
"fee": 300000 },
} {
] "network": "viacointestnet",
"bip32": {
"private": "tprv8ZgxMBicQKsPeDgjzdC36fs6bMjGApWDNLR9erAXMs5skhMv36j9MV5ecvfavji5khqjWaWSFhN3YcCUUdiKH6isR4Pwy3U5y5egddBr16m",
"public": "tpubD6NzVbkrYhZ4XgiXtGrdW5XDAPFCL9h7we1vwNCpn8tGbBcgfVYjXyhWo4E1xkh56hjod1RhGjxbaTLV3X4FyWuejifB9jusQ46QzG87VKp"
}
},
{
"network": "gamerscoin",
"bip32": {
"private": "Ltpv71G8qDifUiNetP6nmxPA5STrUVmv2J9YSmXajv8VsYBUyuPhvN9xCaQrfX2wo5xxJNtEazYCFRUu5FmokYMM79pcqz8pcdo4rNXAFPgyB4k",
"public": "Ltub2SSUS19CirucWFod2ZsYA2J4v4U76YiCXHdcQttnoiy5aGanFHCPDBX7utfG6f95u1cUbZJNafmvzNCzZZJTw1EmyFoL8u1gJbGM8ipu491"
}
},
{
"network": "jumbucks",
"bip32": {
"private": "jprv5eCacBgN4Bz4zYxgVQ7RDt1a3eREhEaj8KjAcJ7YwogxGo2rmBF5kvAQS53JwZpo5wnUmJ9Q7kB6b2gQ1MzC6yaTc188hr6hXZ5t8Ruria1",
"public": "jpub1sBw1hDFtZYND339bReRb1xJbgFj6hJaVYemQgXAW9Dw9bN1JiZLJiUtHLgcTTEs1UgRGFAYm3XQPYsYJbpqj1aYPhrMsNcJHfgdAhvFZBB"
}
},
{
"network": "zetacoin",
"bip32": {
"private": "xprv9s21ZrQH143K3QTDL4LXw2F7HEK3wJUD2nW2nRk4stbPy6cq3jPPqjiChkVvvNKmPGJxWUtg6LnF5kejMRNNU3TGtRBeJgk33yuGBxrMPHi",
"public": "xpub661MyMwAqRbcFtXgS5sYJABqqG9YLmC4Q1Rdap9gSE8NqtwybGhePY2gZ29ESFjqJoCu1Rupje8YtGqsefD265TMg7usUDFdp6W1EGMcet8"
}
}
],
"estimateFee": [
{
"description": "when txSize < 1kb",
"network": "bitcoin",
"txSize": 1,
"fee": 10000
},
{
"description": "when txSize >= 1kb",
"network": "bitcoin",
"txSize": 1000,
"fee": 10000
},
{
"description": "rounding",
"network": "bitcoin",
"txSize": 2800,
"fee": 30000
},
{
"description": "when outputs.value > DUST_SOFT_LIMIT, feePerKb is used",
"network": "dogecoin",
"txSize": 1000,
"outputs": [
{
"value": 100000000
}
],
"fee": 100000000
},
{
"description": "when not every outputs.value > DUST_SOFT_LIMIT",
"network": "dogecoin",
"txSize": 1000,
"outputs": [
{
"value": 99999999
},
{
"value": 99999999
}
],
"fee": 300000000
},
{
"description": "rounding",
"network": "dogecoin",
"txSize": 2800,
"fee": 300000000
},
{
"description": "when outputs.value > DUST_SOFT_LIMIT, feePerKb is used",
"network": "litecoin",
"txSize": 1000,
"outputs": [
{
"value": 100000
}
],
"fee": 100000
},
{
"description": "when not every outputs.value > DUST_SOFT_LIMIT",
"network": "litecoin",
"txSize": 1000,
"outputs": [
{
"value": 99999
},
{
"value": 99999
}
],
"fee": 300000
},
{
"description": "rounding",
"network": "litecoin",
"txSize": 2800,
"fee": 300000
}
]
}
} }

36
test/network.js

@ -1,6 +1,8 @@
var assert = require('assert') var assert = require('assert')
var networks = require('../src/networks') var networks = require('../src/networks')
var sinon = require('sinon') var sinon = require('sinon')
var HDNode = require('../src/hdnode')
var Transaction = require('../src/transaction') var Transaction = require('../src/transaction')
var fixtures = require('./fixtures/network') var fixtures = require('./fixtures/network')
@ -15,19 +17,35 @@ describe('networks', function() {
Transaction.prototype.toBuffer.restore() Transaction.prototype.toBuffer.restore()
}) })
fixtures.valid.forEach(function(f) { describe('constants', function() {
describe(f.network + ' estimateFee', function() { fixtures.valid.constants.forEach(function(f) {
var network = networks[f.network] var network = networks[f.network]
it('calculates the fee correctly for ' + f.description, function() { Object.keys(f.bip32).forEach(function(name) {
var buffer = new Buffer(f.txSize) var extb58 = f.bip32[name]
txToBuffer.returns(buffer)
it('resolves ' + extb58 + ' to ' + f.network, function() {
assert.equal(HDNode.fromBase58(extb58).network, network)
})
})
})
})
describe('estimateFee', function() {
fixtures.valid.estimateFee.forEach(function(f) {
describe('(' + f.network + ')', function() {
var network = networks[f.network]
it('calculates the fee correctly for ' + f.description, function() {
var buffer = new Buffer(f.txSize)
txToBuffer.returns(buffer)
var estimateFee = network.estimateFee var estimateFee = network.estimateFee
var tx = new Transaction() var tx = new Transaction()
tx.outs = f.outputs || [] tx.outs = f.outputs || []
assert.equal(estimateFee(tx), f.fee) assert.equal(estimateFee(tx), f.fee)
})
}) })
}) })
}) })

Loading…
Cancel
Save