@btc-vision/transaction 1.7.6 → 1.7.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/browser/_version.d.ts +1 -0
- package/browser/chain/ChainData.d.ts +4 -0
- package/browser/{src/deterministic → deterministic}/DeterministicMap.d.ts +3 -3
- package/browser/deterministic/FastMap.d.ts +24 -0
- package/browser/{src/epoch → epoch}/interfaces/IChallengeSolution.d.ts +4 -4
- package/browser/{src/generators → generators}/Features.d.ts +6 -1
- package/browser/{src/generators → generators}/Generator.d.ts +1 -0
- package/browser/generators/MLDSAData.d.ts +15 -0
- package/browser/index.js +1 -1
- package/browser/{src/keypair → keypair}/Address.d.ts +9 -3
- package/browser/{src/keypair → keypair}/MessageSigner.d.ts +9 -0
- package/browser/{src/opnet.d.ts → opnet.d.ts} +2 -1
- package/browser/{src/transaction → transaction}/browser/Web3Provider.d.ts +15 -4
- package/browser/transaction/browser/types/OPWallet.d.ts +6 -0
- package/browser/{src/transaction → transaction}/builders/CustomScriptTransaction.d.ts +1 -0
- package/browser/{src/transaction → transaction}/builders/DeploymentTransaction.d.ts +1 -0
- package/browser/{src/transaction → transaction}/builders/TransactionBuilder.d.ts +4 -0
- package/browser/{src/transaction → transaction}/interfaces/ITransactionParameters.d.ts +3 -0
- package/browser/{src/transaction → transaction}/shared/TweakedTransaction.d.ts +6 -0
- package/browser/{src/utxo → utxo}/OPNetLimitedProvider.d.ts +1 -0
- package/build/_version.d.ts +1 -1
- package/build/_version.js +1 -1
- package/build/chain/ChainData.d.ts +4 -0
- package/build/chain/ChainData.js +20 -0
- package/build/deterministic/AddressMap.js +2 -2
- package/build/deterministic/DeterministicMap.d.ts +3 -3
- package/build/deterministic/DeterministicMap.js +2 -2
- package/build/deterministic/FastMap.d.ts +24 -0
- package/build/deterministic/{Map.js → FastMap.js} +22 -28
- package/build/epoch/ChallengeSolution.js +4 -4
- package/build/epoch/interfaces/IChallengeSolution.d.ts +4 -4
- package/build/generators/Features.d.ts +6 -1
- package/build/generators/Features.js +1 -0
- package/build/generators/Generator.d.ts +1 -0
- package/build/generators/Generator.js +24 -2
- package/build/generators/MLDSAData.d.ts +15 -0
- package/build/generators/MLDSAData.js +19 -0
- package/build/generators/builders/CalldataGenerator.js +1 -1
- package/build/generators/builders/DeploymentGenerator.js +1 -1
- package/build/generators/builders/P2WDAGenerator.js +1 -1
- package/build/keypair/Address.d.ts +9 -3
- package/build/keypair/Address.js +63 -38
- package/build/keypair/MessageSigner.d.ts +9 -0
- package/build/keypair/MessageSigner.js +101 -3
- package/build/opnet.d.ts +2 -1
- package/build/opnet.js +2 -1
- package/build/transaction/TransactionFactory.js +3 -0
- package/build/transaction/browser/Web3Provider.d.ts +15 -4
- package/build/transaction/browser/types/OPWallet.d.ts +2 -10
- package/build/transaction/browser/types/OPWallet.js +4 -2
- package/build/transaction/builders/CustomScriptTransaction.d.ts +1 -0
- package/build/transaction/builders/CustomScriptTransaction.js +3 -0
- package/build/transaction/builders/DeploymentTransaction.d.ts +1 -0
- package/build/transaction/builders/DeploymentTransaction.js +26 -1
- package/build/transaction/builders/InteractionTransaction.js +14 -1
- package/build/transaction/builders/InteractionTransactionP2WDA.js +14 -1
- package/build/transaction/builders/TransactionBuilder.d.ts +4 -0
- package/build/transaction/builders/TransactionBuilder.js +77 -0
- package/build/transaction/interfaces/ITransactionParameters.d.ts +3 -0
- package/build/transaction/shared/P2TR_MS.js +1 -0
- package/build/transaction/shared/TweakedTransaction.d.ts +6 -0
- package/build/transaction/shared/TweakedTransaction.js +19 -0
- package/build/utxo/OPNetLimitedProvider.d.ts +1 -0
- package/build/utxo/OPNetLimitedProvider.js +11 -1
- package/eslint.config.js +2 -1
- package/package.json +1 -1
- package/src/_version.ts +1 -1
- package/src/chain/ChainData.ts +32 -0
- package/src/deterministic/AddressMap.ts +3 -3
- package/src/deterministic/DeterministicMap.ts +9 -6
- package/src/deterministic/{Map.ts → FastMap.ts} +46 -33
- package/src/epoch/ChallengeSolution.ts +4 -4
- package/src/epoch/interfaces/IChallengeSolution.ts +4 -4
- package/src/generators/Features.ts +8 -2
- package/src/generators/Generator.ts +35 -2
- package/src/generators/MLDSAData.ts +30 -0
- package/src/generators/builders/CalldataGenerator.ts +1 -1
- package/src/generators/builders/DeploymentGenerator.ts +2 -1
- package/src/generators/builders/LegacyCalldataGenerator.ts +1 -0
- package/src/generators/builders/P2WDAGenerator.ts +5 -1
- package/src/keypair/Address.ts +78 -38
- package/src/keypair/MessageSigner.ts +214 -15
- package/src/opnet.ts +3 -1
- package/src/transaction/TransactionFactory.ts +3 -0
- package/src/transaction/browser/Web3Provider.ts +64 -4
- package/src/transaction/browser/types/OPWallet.ts +6 -53
- package/src/transaction/builders/CustomScriptTransaction.ts +4 -0
- package/src/transaction/builders/DeploymentTransaction.ts +36 -8
- package/src/transaction/builders/InteractionTransaction.ts +17 -7
- package/src/transaction/builders/InteractionTransactionP2WDA.ts +17 -7
- package/src/transaction/builders/TransactionBuilder.ts +107 -0
- package/src/transaction/interfaces/ITransactionParameters.ts +12 -0
- package/src/transaction/shared/P2TR_MS.ts +1 -0
- package/src/transaction/shared/TweakedTransaction.ts +35 -0
- package/src/utxo/OPNetLimitedProvider.ts +19 -2
- package/test/address.test.ts +18 -20
- package/test/addressmap.test.ts +783 -0
- package/test/addressverificator-mldsa.test.ts +40 -16
- package/test/fastmap-setall.test.ts +143 -0
- package/test/fastmap.test.ts +917 -0
- package/test/messagesigner-mldsa.test.ts +50 -50
- package/test/messagesigner-schnorr.test.ts +40 -40
- package/test/old/FastBigIntMap.ts +132 -0
- package/test/oldfastmap.test.ts +917 -0
- package/tsconfig.webpack.json +2 -6
- package/webpack.config.js +1 -1
- package/browser/src/_version.d.ts +0 -1
- package/browser/src/deterministic/Map.d.ts +0 -19
- package/browser/src/transaction/browser/types/OPWallet.d.ts +0 -14
- package/browser/test/address.test.d.ts +0 -1
- package/browser/test/addressverificator-mldsa.test.d.ts +0 -1
- package/browser/test/derivePath.test.d.ts +0 -1
- package/browser/test/messagesigner-mldsa.test.d.ts +0 -1
- package/browser/test/messagesigner-schnorr.test.d.ts +0 -1
- package/browser/test/network-awareness.test.d.ts +0 -1
- package/build/deterministic/Map.d.ts +0 -19
- /package/browser/{src/abi → abi}/ABICoder.d.ts +0 -0
- /package/browser/{src/buffer → buffer}/BinaryReader.d.ts +0 -0
- /package/browser/{src/buffer → buffer}/BinaryWriter.d.ts +0 -0
- /package/browser/{src/bytecode → bytecode}/Compressor.d.ts +0 -0
- /package/browser/{src/consensus → consensus}/Consensus.d.ts +0 -0
- /package/browser/{src/consensus → consensus}/ConsensusConfig.d.ts +0 -0
- /package/browser/{src/consensus → consensus}/metadata/RoswellConsensus.d.ts +0 -0
- /package/browser/{src/crypto → crypto}/crypto-browser.d.ts +0 -0
- /package/browser/{src/crypto → crypto}/crypto.d.ts +0 -0
- /package/browser/{src/deterministic → deterministic}/AddressMap.d.ts +0 -0
- /package/browser/{src/deterministic → deterministic}/AddressSet.d.ts +0 -0
- /package/browser/{src/deterministic → deterministic}/CustomMap.d.ts +0 -0
- /package/browser/{src/deterministic → deterministic}/DeterministicSet.d.ts +0 -0
- /package/browser/{src/epoch → epoch}/ChallengeSolution.d.ts +0 -0
- /package/browser/{src/epoch → epoch}/validator/EpochValidator.d.ts +0 -0
- /package/browser/{src/event → event}/NetEvent.d.ts +0 -0
- /package/browser/{src/generators → generators}/AddressGenerator.d.ts +0 -0
- /package/browser/{src/generators → generators}/builders/CalldataGenerator.d.ts +0 -0
- /package/browser/{src/generators → generators}/builders/CustomGenerator.d.ts +0 -0
- /package/browser/{src/generators → generators}/builders/DeploymentGenerator.d.ts +0 -0
- /package/browser/{src/generators → generators}/builders/LegacyCalldataGenerator.d.ts +0 -0
- /package/browser/{src/generators → generators}/builders/MultiSignGenerator.d.ts +0 -0
- /package/browser/{src/generators → generators}/builders/P2WDAGenerator.d.ts +0 -0
- /package/browser/{src/index.d.ts → index.d.ts} +0 -0
- /package/browser/{src/keypair → keypair}/AddressVerificator.d.ts +0 -0
- /package/browser/{src/keypair → keypair}/EcKeyPair.d.ts +0 -0
- /package/browser/{src/keypair → keypair}/Secp256k1PointDeriver.d.ts +0 -0
- /package/browser/{src/keypair → keypair}/Wallet.d.ts +0 -0
- /package/browser/{src/keypair → keypair}/interfaces/IWallet.d.ts +0 -0
- /package/browser/{src/metadata → metadata}/ContractBaseMetadata.d.ts +0 -0
- /package/browser/{src/metadata → metadata}/tokens.d.ts +0 -0
- /package/browser/{src/mnemonic → mnemonic}/BIPStandard.d.ts +0 -0
- /package/browser/{src/mnemonic → mnemonic}/Mnemonic.d.ts +0 -0
- /package/browser/{src/mnemonic → mnemonic}/MnemonicStrength.d.ts +0 -0
- /package/browser/{src/network → network}/ChainId.d.ts +0 -0
- /package/browser/{src/p2wda → p2wda}/P2WDADetector.d.ts +0 -0
- /package/browser/{src/signer → signer}/SignerUtils.d.ts +0 -0
- /package/browser/{src/signer → signer}/TweakedSigner.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/ContractAddress.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/TransactionFactory.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/browser/BrowserSignerBase.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/browser/extensions/UnisatSigner.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/browser/extensions/XverseSigner.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/browser/types/Unisat.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/browser/types/Xverse.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/builders/CancelTransaction.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/builders/ChallengeSolutionTransaction.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/builders/FundingTransaction.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/builders/InteractionTransaction.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/builders/InteractionTransactionP2WDA.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/builders/MultiSignTransaction.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/builders/SharedInteractionTransaction.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/enums/TransactionType.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/interfaces/Tap.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/mineable/IP2WSHAddress.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/mineable/TimelockGenerator.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/processor/PsbtTransaction.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/psbt/PSBTTypes.d.ts +0 -0
- /package/browser/{src/transaction → transaction}/shared/P2TR_MS.d.ts +0 -0
- /package/browser/{src/utils → utils}/BitcoinUtils.d.ts +0 -0
- /package/browser/{src/utils → utils}/BufferHelper.d.ts +0 -0
- /package/browser/{src/utils → utils}/StringToBuffer.d.ts +0 -0
- /package/browser/{src/utils → utils}/lengths.d.ts +0 -0
- /package/browser/{src/utils → utils}/types.d.ts +0 -0
- /package/browser/{src/utxo → utxo}/interfaces/BroadcastResponse.d.ts +0 -0
- /package/browser/{src/utxo → utxo}/interfaces/IUTXO.d.ts +0 -0
- /package/browser/{src/verification → verification}/TapscriptVerificator.d.ts +0 -0
|
@@ -204,9 +204,12 @@ describe('AddressVerificator ML-DSA Support', () => {
|
|
|
204
204
|
const wallet = mnemonic.derive(0);
|
|
205
205
|
const p2opAddress = wallet.address.p2op(networks.bitcoin);
|
|
206
206
|
|
|
207
|
-
const
|
|
207
|
+
const isValidLegacyPublicKey = AddressVerificator.isValidP2OPAddress(
|
|
208
|
+
p2opAddress,
|
|
209
|
+
networks.bitcoin,
|
|
210
|
+
);
|
|
208
211
|
|
|
209
|
-
expect(
|
|
212
|
+
expect(isValidLegacyPublicKey).toBe(true);
|
|
210
213
|
});
|
|
211
214
|
|
|
212
215
|
it('should validate testnet P2OP address', () => {
|
|
@@ -219,9 +222,12 @@ describe('AddressVerificator ML-DSA Support', () => {
|
|
|
219
222
|
const wallet = mnemonic.derive(0);
|
|
220
223
|
const p2opAddress = wallet.address.p2op(networks.testnet);
|
|
221
224
|
|
|
222
|
-
const
|
|
225
|
+
const isValidLegacyPublicKey = AddressVerificator.isValidP2OPAddress(
|
|
226
|
+
p2opAddress,
|
|
227
|
+
networks.testnet,
|
|
228
|
+
);
|
|
223
229
|
|
|
224
|
-
expect(
|
|
230
|
+
expect(isValidLegacyPublicKey).toBe(true);
|
|
225
231
|
});
|
|
226
232
|
|
|
227
233
|
it('should validate regtest P2OP address', () => {
|
|
@@ -234,9 +240,12 @@ describe('AddressVerificator ML-DSA Support', () => {
|
|
|
234
240
|
const wallet = mnemonic.derive(0);
|
|
235
241
|
const p2opAddress = wallet.address.p2op(networks.regtest);
|
|
236
242
|
|
|
237
|
-
const
|
|
243
|
+
const isValidLegacyPublicKey = AddressVerificator.isValidP2OPAddress(
|
|
244
|
+
p2opAddress,
|
|
245
|
+
networks.regtest,
|
|
246
|
+
);
|
|
238
247
|
|
|
239
|
-
expect(
|
|
248
|
+
expect(isValidLegacyPublicKey).toBe(true);
|
|
240
249
|
});
|
|
241
250
|
|
|
242
251
|
it('should reject P2TR address as P2OP', () => {
|
|
@@ -249,9 +258,12 @@ describe('AddressVerificator ML-DSA Support', () => {
|
|
|
249
258
|
const wallet = mnemonic.derive(0);
|
|
250
259
|
const p2trAddress = wallet.p2tr;
|
|
251
260
|
|
|
252
|
-
const
|
|
261
|
+
const isValidLegacyPublicKey = AddressVerificator.isValidP2OPAddress(
|
|
262
|
+
p2trAddress,
|
|
263
|
+
networks.bitcoin,
|
|
264
|
+
);
|
|
253
265
|
|
|
254
|
-
expect(
|
|
266
|
+
expect(isValidLegacyPublicKey).toBe(false);
|
|
255
267
|
});
|
|
256
268
|
|
|
257
269
|
it('should reject P2WPKH address as P2OP', () => {
|
|
@@ -264,22 +276,31 @@ describe('AddressVerificator ML-DSA Support', () => {
|
|
|
264
276
|
const wallet = mnemonic.derive(0);
|
|
265
277
|
const p2wpkhAddress = wallet.p2wpkh;
|
|
266
278
|
|
|
267
|
-
const
|
|
279
|
+
const isValidLegacyPublicKey = AddressVerificator.isValidP2OPAddress(
|
|
280
|
+
p2wpkhAddress,
|
|
281
|
+
networks.bitcoin,
|
|
282
|
+
);
|
|
268
283
|
|
|
269
|
-
expect(
|
|
284
|
+
expect(isValidLegacyPublicKey).toBe(false);
|
|
270
285
|
});
|
|
271
286
|
|
|
272
287
|
it('should reject invalid address string', () => {
|
|
273
288
|
const invalidAddress = 'not a valid address';
|
|
274
|
-
const
|
|
289
|
+
const isValidLegacyPublicKey = AddressVerificator.isValidP2OPAddress(
|
|
290
|
+
invalidAddress,
|
|
291
|
+
networks.bitcoin,
|
|
292
|
+
);
|
|
275
293
|
|
|
276
|
-
expect(
|
|
294
|
+
expect(isValidLegacyPublicKey).toBe(false);
|
|
277
295
|
});
|
|
278
296
|
|
|
279
297
|
it('should reject empty string', () => {
|
|
280
|
-
const
|
|
298
|
+
const isValidLegacyPublicKey = AddressVerificator.isValidP2OPAddress(
|
|
299
|
+
'',
|
|
300
|
+
networks.bitcoin,
|
|
301
|
+
);
|
|
281
302
|
|
|
282
|
-
expect(
|
|
303
|
+
expect(isValidLegacyPublicKey).toBe(false);
|
|
283
304
|
});
|
|
284
305
|
|
|
285
306
|
it('should reject address on wrong network', () => {
|
|
@@ -293,9 +314,12 @@ describe('AddressVerificator ML-DSA Support', () => {
|
|
|
293
314
|
const p2opAddress = wallet.address.p2op(networks.bitcoin);
|
|
294
315
|
|
|
295
316
|
// Try to validate mainnet address on testnet
|
|
296
|
-
const
|
|
317
|
+
const isValidLegacyPublicKey = AddressVerificator.isValidP2OPAddress(
|
|
318
|
+
p2opAddress,
|
|
319
|
+
networks.testnet,
|
|
320
|
+
);
|
|
297
321
|
|
|
298
|
-
expect(
|
|
322
|
+
expect(isValidLegacyPublicKey).toBe(false);
|
|
299
323
|
});
|
|
300
324
|
});
|
|
301
325
|
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { FastBigIntMap } from './old/FastBigIntMap.js';
|
|
3
|
+
import { FastMap } from '../src';
|
|
4
|
+
|
|
5
|
+
describe('setAll bug', () => {
|
|
6
|
+
describe('FastBigIntMap (original - correct behavior)', () => {
|
|
7
|
+
it('should replace all entries, not merge', () => {
|
|
8
|
+
const map1 = new FastBigIntMap([
|
|
9
|
+
[1n, 100n],
|
|
10
|
+
[2n, 200n],
|
|
11
|
+
]);
|
|
12
|
+
|
|
13
|
+
const map2 = new FastBigIntMap([
|
|
14
|
+
[3n, 300n],
|
|
15
|
+
[4n, 400n],
|
|
16
|
+
]);
|
|
17
|
+
|
|
18
|
+
// setAll should REPLACE, not merge
|
|
19
|
+
map2.setAll(map1);
|
|
20
|
+
|
|
21
|
+
// Should have entries from map1 only
|
|
22
|
+
expect(map2.size).toBe(2);
|
|
23
|
+
expect(map2.get(1n)).toBe(100n);
|
|
24
|
+
expect(map2.get(2n)).toBe(200n);
|
|
25
|
+
|
|
26
|
+
// Old entries should be GONE
|
|
27
|
+
expect(map2.has(3n)).toBe(false);
|
|
28
|
+
expect(map2.has(4n)).toBe(false);
|
|
29
|
+
expect(map2.get(3n)).toBeUndefined();
|
|
30
|
+
expect(map2.get(4n)).toBeUndefined();
|
|
31
|
+
});
|
|
32
|
+
});
|
|
33
|
+
|
|
34
|
+
describe('FastMap (replacement - should match original behavior)', () => {
|
|
35
|
+
it('should replace all entries, not merge', () => {
|
|
36
|
+
const map1 = new FastMap<bigint, bigint>([
|
|
37
|
+
[1n, 100n],
|
|
38
|
+
[2n, 200n],
|
|
39
|
+
]);
|
|
40
|
+
|
|
41
|
+
const map2 = new FastMap<bigint, bigint>([
|
|
42
|
+
[3n, 300n],
|
|
43
|
+
[4n, 400n],
|
|
44
|
+
]);
|
|
45
|
+
|
|
46
|
+
// setAll should REPLACE, not merge
|
|
47
|
+
map2.setAll(map1);
|
|
48
|
+
|
|
49
|
+
// Should have entries from map1 only
|
|
50
|
+
expect(map2.size).toBe(2);
|
|
51
|
+
expect(map2.get(1n)).toBe(100n);
|
|
52
|
+
expect(map2.get(2n)).toBe(200n);
|
|
53
|
+
|
|
54
|
+
// Old entries should be GONE
|
|
55
|
+
expect(map2.has(3n)).toBe(false);
|
|
56
|
+
expect(map2.has(4n)).toBe(false);
|
|
57
|
+
expect(map2.get(3n)).toBeUndefined();
|
|
58
|
+
expect(map2.get(4n)).toBeUndefined();
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
it('should not leak old keys in iteration', () => {
|
|
62
|
+
const map1 = new FastMap<bigint, bigint>([[1n, 100n]]);
|
|
63
|
+
|
|
64
|
+
const map2 = new FastMap<bigint, bigint>([
|
|
65
|
+
[2n, 200n],
|
|
66
|
+
[3n, 300n],
|
|
67
|
+
]);
|
|
68
|
+
|
|
69
|
+
map2.setAll(map1);
|
|
70
|
+
|
|
71
|
+
const keys = [...map2.keys()];
|
|
72
|
+
const values = [...map2.values()];
|
|
73
|
+
const entries = [...map2.entries()];
|
|
74
|
+
|
|
75
|
+
expect(keys).toEqual([1n]);
|
|
76
|
+
expect(values).toEqual([100n]);
|
|
77
|
+
expect(entries).toEqual([[1n, 100n]]);
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
it('should handle overlapping keys correctly', () => {
|
|
81
|
+
const map1 = new FastMap<bigint, bigint>([
|
|
82
|
+
[1n, 100n],
|
|
83
|
+
[2n, 200n],
|
|
84
|
+
]);
|
|
85
|
+
|
|
86
|
+
const map2 = new FastMap<bigint, bigint>([
|
|
87
|
+
[2n, 999n], // overlapping key
|
|
88
|
+
[3n, 300n],
|
|
89
|
+
]);
|
|
90
|
+
|
|
91
|
+
map2.setAll(map1);
|
|
92
|
+
|
|
93
|
+
// Should have map1's values, including overwriting the overlapping key
|
|
94
|
+
expect(map2.size).toBe(2);
|
|
95
|
+
expect(map2.get(1n)).toBe(100n);
|
|
96
|
+
expect(map2.get(2n)).toBe(200n); // map1's value, not 999n
|
|
97
|
+
|
|
98
|
+
// 3n should be gone
|
|
99
|
+
expect(map2.has(3n)).toBe(false);
|
|
100
|
+
});
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
describe('behavior parity', () => {
|
|
104
|
+
it('FastMap.setAll should behave identically to FastBigIntMap.setAll', () => {
|
|
105
|
+
// Setup identical scenarios
|
|
106
|
+
const oldMap1 = new FastBigIntMap([
|
|
107
|
+
[1n, 10n],
|
|
108
|
+
[2n, 20n],
|
|
109
|
+
]);
|
|
110
|
+
const oldMap2 = new FastBigIntMap([
|
|
111
|
+
[3n, 30n],
|
|
112
|
+
[4n, 40n],
|
|
113
|
+
[5n, 50n],
|
|
114
|
+
]);
|
|
115
|
+
|
|
116
|
+
const newMap1 = new FastMap<bigint, bigint>([
|
|
117
|
+
[1n, 10n],
|
|
118
|
+
[2n, 20n],
|
|
119
|
+
]);
|
|
120
|
+
const newMap2 = new FastMap<bigint, bigint>([
|
|
121
|
+
[3n, 30n],
|
|
122
|
+
[4n, 40n],
|
|
123
|
+
[5n, 50n],
|
|
124
|
+
]);
|
|
125
|
+
|
|
126
|
+
// Perform setAll on both
|
|
127
|
+
oldMap2.setAll(oldMap1);
|
|
128
|
+
newMap2.setAll(newMap1);
|
|
129
|
+
|
|
130
|
+
// Compare sizes
|
|
131
|
+
expect(newMap2.size).toBe(oldMap2.size);
|
|
132
|
+
|
|
133
|
+
// Compare keys
|
|
134
|
+
expect([...newMap2.keys()]).toEqual([...oldMap2.keys()]);
|
|
135
|
+
|
|
136
|
+
// Compare values
|
|
137
|
+
expect([...newMap2.values()]).toEqual([...oldMap2.values()]);
|
|
138
|
+
|
|
139
|
+
// Compare entries
|
|
140
|
+
expect([...newMap2.entries()]).toEqual([...oldMap2.entries()]);
|
|
141
|
+
});
|
|
142
|
+
});
|
|
143
|
+
});
|