@@ -13,16 +13,32 @@ import {
1313
1414describe ( 'ECash Utils Tests' , ( ) => {
1515 describe ( 'isValidECashAddress' , ( ) => {
16- it ( 'should validate correct eCash address' , ( ) => {
16+ it ( 'should validate correct eCash address with prefix ' , ( ) => {
1717 const validAddress = 'ecash:qq42tdgdvx5np0pgpjd9x9jupkaugmdw7sjp5dqa63' ;
1818 expect ( isValidECashAddress ( validAddress ) ) . toBe ( true ) ;
1919 } ) ;
2020
21- it ( 'should validate correct eCash address without prefix' , ( ) => {
21+ it ( 'should validate correct eCash address without prefix (default ecash) ' , ( ) => {
2222 const validAddress = 'qq42tdgdvx5np0pgpjd9x9jupkaugmdw7sjp5dqa63' ;
2323 expect ( isValidECashAddress ( validAddress ) ) . toBe ( true ) ;
2424 } ) ;
2525
26+ it ( 'should validate correct ectest address without prefix' , ( ) => {
27+ const validAddress = 'qz5fdmzx8cdqspevemxe20z94y6689zhdqm5xdfvsm' ;
28+ expect ( isValidECashAddress ( validAddress , 'ectest' ) ) . toBe ( true ) ;
29+ } ) ;
30+
31+ it ( 'should reject ecash address when ectest prefix is expected' , ( ) => {
32+ const validEcashAddress =
33+ 'ecash:qq42tdgdvx5np0pgpjd9x9jupkaugmdw7sjp5dqa63' ;
34+ expect ( isValidECashAddress ( validEcashAddress , 'ectest' ) ) . toBe ( false ) ;
35+ } ) ;
36+
37+ it ( 'should reject ectest address when ecash prefix is expected' , ( ) => {
38+ const ectestAddress = 'ectest:qq42tdgdvx5np0pgpjd9x9jupkaugmdw7sjp5dqa63' ;
39+ expect ( isValidECashAddress ( ectestAddress , 'ecash' ) ) . toBe ( false ) ;
40+ } ) ;
41+
2642 it ( 'should reject invalid eCash address' , ( ) => {
2743 const invalidAddress = 'invalid_address_123' ;
2844 expect ( isValidECashAddress ( invalidAddress ) ) . toBe ( false ) ;
@@ -31,6 +47,12 @@ describe('ECash Utils Tests', () => {
3147 it ( 'should reject empty string' , ( ) => {
3248 expect ( isValidECashAddress ( '' ) ) . toBe ( false ) ;
3349 } ) ;
50+
51+ it ( 'should use ecash as default prefix' , ( ) => {
52+ const validAddress = 'ecash:qq42tdgdvx5np0pgpjd9x9jupkaugmdw7sjp5dqa63' ;
53+ expect ( isValidECashAddress ( validAddress ) ) . toBe ( true ) ;
54+ expect ( isValidECashAddress ( validAddress , 'ecash' ) ) . toBe ( true ) ;
55+ } ) ;
3456 } ) ;
3557
3658 describe ( 'scriptToAddress' , ( ) => {
@@ -124,7 +146,11 @@ describe('ECash Utils Tests', () => {
124146 } ,
125147 ] ;
126148 const normalizedAddress = scriptToAddress ( outputs [ 0 ] . outputScript ) ;
127- const value = calculateTransactionValue ( outputs , normalizedAddress , true ) ;
149+ const value = calculateTransactionValue (
150+ outputs ,
151+ [ normalizedAddress ] ,
152+ true ,
153+ ) ;
128154 expect ( value ) . to . equal ( '1000' ) ;
129155 } ) ;
130156
@@ -142,7 +168,7 @@ describe('ECash Utils Tests', () => {
142168 const normalizedAddress = scriptToAddress ( outputs [ 0 ] . outputScript ) ;
143169 const value = calculateTransactionValue (
144170 outputs ,
145- normalizedAddress ,
171+ [ normalizedAddress ] ,
146172 false ,
147173 ) ;
148174 expect ( value ) . to . equal ( '2000' ) ;
@@ -157,7 +183,7 @@ describe('ECash Utils Tests', () => {
157183 ] ;
158184 const value = calculateTransactionValue (
159185 outputs ,
160- 'nonexistent_address' ,
186+ [ 'nonexistent_address' ] ,
161187 true ,
162188 ) ;
163189 expect ( value ) . to . equal ( '0' ) ;
@@ -207,15 +233,16 @@ describe('ECash Utils Tests', () => {
207233 ] ,
208234 outputs : [
209235 {
210- outputScript : '76a914b9b67dd5f6b3f3b4f7c8d9e0f1a2b3c4d5e6f788ac ' ,
236+ outputScript : '76a9142aa5b50d61a930bc280c9a53165c0dbbc46daef488ac ' ,
211237 sats : 1000 ,
212238 } ,
213239 ] ,
214240 } ;
241+ // The owned address matches the output script above
215242 const normalizedAddress = 'qq42tdgdvx5np0pgpjd9x9jupkaugmdw7sjp5dqa63' ;
216243 const { fromAddress, toAddress } = getTransactionAddresses (
217244 tx ,
218- normalizedAddress ,
245+ [ normalizedAddress ] ,
219246 true ,
220247 false ,
221248 ) ;
@@ -232,19 +259,20 @@ describe('ECash Utils Tests', () => {
232259 ] ,
233260 outputs : [
234261 {
235- outputScript : '76a914b9b67dd5f6b3f3b4f7c8d9e0f1a2b3c4d5e6f788ac ' ,
262+ outputScript : '76a9142aa5b50d61a930bc280c9a53165c0dbbc46daef488ac ' ,
236263 sats : 1000 ,
237264 } ,
238265 {
239- outputScript : '76a914c0c78ee6f7c4f4c5f8d9e0f1a2b3c4d5e6f788ac ' ,
266+ outputScript : '76a914b9b67dd5f6b3f3b4f7c8d9e0f1a2b3c4d5e6f788ac ' ,
240267 sats : 2000 ,
241268 } ,
242269 ] ,
243270 } ;
244- const normalizedAddress = scriptToAddress ( tx . outputs [ 0 ] . outputScript ) ;
271+ // owned address is the first output (change), recipient is the second
272+ const normalizedAddress = 'qq42tdgdvx5np0pgpjd9x9jupkaugmdw7sjp5dqa63' ;
245273 const { fromAddress, toAddress } = getTransactionAddresses (
246274 tx ,
247- normalizedAddress ,
275+ [ normalizedAddress ] ,
248276 false ,
249277 true ,
250278 ) ;
@@ -260,7 +288,7 @@ describe('ECash Utils Tests', () => {
260288 } ;
261289 const { fromAddress, toAddress } = getTransactionAddresses (
262290 tx ,
263- 'someaddress' ,
291+ [ 'someaddress' ] ,
264292 false ,
265293 false ,
266294 ) ;
0 commit comments