Skip to content

Commit a6bee82

Browse files
committed
Add descriptions to test cases
1 parent 62d4952 commit a6bee82

File tree

1 file changed

+35
-24
lines changed

1 file changed

+35
-24
lines changed

lightning/src/ln/interactivetxs.rs

Lines changed: 35 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -927,6 +927,7 @@ mod tests {
927927
}
928928

929929
struct TestSession {
930+
description: &'static str,
930931
inputs_a: Vec<(TxIn, TransactionU16LenLimited)>,
931932
outputs_a: Vec<TxOut>,
932933
inputs_b: Vec<(TxIn, TransactionU16LenLimited)>,
@@ -1016,7 +1017,12 @@ mod tests {
10161017
},
10171018
_ => ErrorCulprit::NodeA,
10181019
};
1019-
assert_eq!(Some((abort_reason, error_culprit)), session.expect_error);
1020+
assert_eq!(
1021+
Some((abort_reason, error_culprit)),
1022+
session.expect_error,
1023+
"Test: {}",
1024+
session.description
1025+
);
10201026
assert!(message_send_b.is_none());
10211027
return;
10221028
},
@@ -1035,7 +1041,12 @@ mod tests {
10351041
},
10361042
_ => ErrorCulprit::NodeB,
10371043
};
1038-
assert_eq!(Some((abort_reason, error_culprit)), session.expect_error);
1044+
assert_eq!(
1045+
Some((abort_reason, error_culprit)),
1046+
session.expect_error,
1047+
"Test: {}",
1048+
session.description
1049+
);
10391050
assert!(message_send_a.is_none());
10401051
return;
10411052
},
@@ -1154,56 +1165,55 @@ mod tests {
11541165

11551166
#[test]
11561167
fn test_interactive_tx_constructor() {
1157-
// No contributions.
11581168
do_test_interactive_tx_constructor(TestSession {
1169+
description: "No contributions",
11591170
inputs_a: vec![],
11601171
outputs_a: vec![],
11611172
inputs_b: vec![],
11621173
outputs_b: vec![],
11631174
expect_error: Some((AbortReason::InsufficientFees, ErrorCulprit::NodeA)),
11641175
});
1165-
// Single contribution, no initiator inputs.
11661176
do_test_interactive_tx_constructor(TestSession {
1177+
description: "Single contribution, no initiator inputs",
11671178
inputs_a: vec![],
11681179
outputs_a: generate_outputs(&[1_000_000]),
11691180
inputs_b: vec![],
11701181
outputs_b: vec![],
11711182
expect_error: Some((AbortReason::OutputsValueExceedsInputsValue, ErrorCulprit::NodeA)),
11721183
});
1173-
// Single contribution, no initiator outputs.
11741184
do_test_interactive_tx_constructor(TestSession {
1185+
description: "Single contribution, no initiator outputs",
11751186
inputs_a: generate_inputs(&[1_000_000]),
11761187
outputs_a: vec![],
11771188
inputs_b: vec![],
11781189
outputs_b: vec![],
11791190
expect_error: None,
11801191
});
1181-
// Single contribution, insufficient fees.
11821192
do_test_interactive_tx_constructor(TestSession {
1193+
description: "Single contribution, insufficient fees",
11831194
inputs_a: generate_inputs(&[1_000_000]),
11841195
outputs_a: generate_outputs(&[1_000_000]),
11851196
inputs_b: vec![],
11861197
outputs_b: vec![],
11871198
expect_error: Some((AbortReason::InsufficientFees, ErrorCulprit::NodeA)),
11881199
});
1189-
// Initiator contributes sufficient fees, but non-initiator does not.
11901200
do_test_interactive_tx_constructor(TestSession {
1201+
description: "Initiator contributes sufficient fees, but non-initiator does not",
11911202
inputs_a: generate_inputs(&[1_000_000]),
11921203
outputs_a: vec![],
11931204
inputs_b: generate_inputs(&[100_000]),
11941205
outputs_b: generate_outputs(&[100_000]),
11951206
expect_error: Some((AbortReason::InsufficientFees, ErrorCulprit::NodeB)),
11961207
});
1197-
// Multi-input-output contributions from both sides.
11981208
do_test_interactive_tx_constructor(TestSession {
1209+
description: "Multi-input-output contributions from both sides",
11991210
inputs_a: generate_inputs(&[1_000_000, 1_000_000]),
12001211
outputs_a: generate_outputs(&[1_000_000, 200_000]),
12011212
inputs_b: generate_inputs(&[1_000_000, 500_000]),
12021213
outputs_b: generate_outputs(&[1_000_000, 400_000]),
12031214
expect_error: None,
12041215
});
12051216

1206-
// Prevout from initiator is not a witness program
12071217
let non_segwit_output_tx = {
12081218
let mut tx = generate_tx(&[1_000_000]);
12091219
tx.output.push(TxOut {
@@ -1225,64 +1235,65 @@ mod tests {
12251235
..Default::default()
12261236
};
12271237
do_test_interactive_tx_constructor(TestSession {
1238+
description: "Prevout from initiator is not a witness program",
12281239
inputs_a: vec![(non_segwit_input, non_segwit_output_tx)],
12291240
outputs_a: vec![],
12301241
inputs_b: vec![],
12311242
outputs_b: vec![],
12321243
expect_error: Some((AbortReason::PrevTxOutInvalid, ErrorCulprit::NodeA)),
12331244
});
12341245

1235-
// Invalid input sequence from initiator.
12361246
let tx = TransactionU16LenLimited::new(generate_tx(&[1_000_000])).unwrap();
12371247
let invalid_sequence_input = TxIn {
12381248
previous_output: OutPoint { txid: tx.as_transaction().txid(), vout: 0 },
12391249
..Default::default()
12401250
};
12411251
do_test_interactive_tx_constructor(TestSession {
1252+
description: "Invalid input sequence from initiator",
12421253
inputs_a: vec![(invalid_sequence_input, tx.clone())],
12431254
outputs_a: generate_outputs(&[1_000_000]),
12441255
inputs_b: vec![],
12451256
outputs_b: vec![],
12461257
expect_error: Some((AbortReason::IncorrectInputSequenceValue, ErrorCulprit::NodeA)),
12471258
});
1248-
// Duplicate prevout from initiator.
12491259
let duplicate_input = TxIn {
12501260
previous_output: OutPoint { txid: tx.as_transaction().txid(), vout: 0 },
12511261
sequence: Sequence::ENABLE_RBF_NO_LOCKTIME,
12521262
..Default::default()
12531263
};
12541264
do_test_interactive_tx_constructor(TestSession {
1265+
description: "Duplicate prevout from initiator",
12551266
inputs_a: vec![(duplicate_input.clone(), tx.clone()), (duplicate_input, tx.clone())],
12561267
outputs_a: generate_outputs(&[1_000_000]),
12571268
inputs_b: vec![],
12581269
outputs_b: vec![],
12591270
expect_error: Some((AbortReason::PrevTxOutInvalid, ErrorCulprit::NodeB)),
12601271
});
1261-
// Non-initiator uses same prevout as initiator.
12621272
let duplicate_input = TxIn {
12631273
previous_output: OutPoint { txid: tx.as_transaction().txid(), vout: 0 },
12641274
sequence: Sequence::ENABLE_RBF_NO_LOCKTIME,
12651275
..Default::default()
12661276
};
12671277
do_test_interactive_tx_constructor(TestSession {
1278+
description: "Non-initiator uses same prevout as initiator",
12681279
inputs_a: vec![(duplicate_input.clone(), tx.clone())],
12691280
outputs_a: generate_outputs(&[1_000_000]),
12701281
inputs_b: vec![(duplicate_input.clone(), tx.clone())],
12711282
outputs_b: vec![],
12721283
expect_error: Some((AbortReason::PrevTxOutInvalid, ErrorCulprit::NodeA)),
12731284
});
1274-
// Initiator sends too many TxAddInputs
12751285
do_test_interactive_tx_constructor(TestSession {
1286+
description: "Initiator sends too many TxAddInputs",
12761287
inputs_a: generate_fixed_number_of_inputs(MAX_RECEIVED_TX_ADD_INPUT_COUNT + 1),
12771288
outputs_a: vec![],
12781289
inputs_b: vec![],
12791290
outputs_b: vec![],
12801291
expect_error: Some((AbortReason::ReceivedTooManyTxAddInputs, ErrorCulprit::NodeA)),
12811292
});
1282-
// Attempt to queue up two inputs with duplicate serial ids. We use a deliberately bad
1283-
// entropy source, `DuplicateEntropySource` to simulate this.
12841293
do_test_interactive_tx_constructor_with_entropy_source(
12851294
TestSession {
1295+
// We use a deliberately bad entropy source, `DuplicateEntropySource` to simulate this.
1296+
description: "Attempt to queue up two inputs with duplicate serial ids",
12861297
inputs_a: generate_fixed_number_of_inputs(2),
12871298
outputs_a: vec![],
12881299
inputs_b: vec![],
@@ -1291,42 +1302,42 @@ mod tests {
12911302
},
12921303
&DuplicateEntropySource,
12931304
);
1294-
// Initiator sends too many TxAddOutputs.
12951305
do_test_interactive_tx_constructor(TestSession {
1306+
description: "Initiator sends too many TxAddOutputs",
12961307
inputs_a: vec![],
12971308
outputs_a: generate_fixed_number_of_outputs(MAX_RECEIVED_TX_ADD_OUTPUT_COUNT + 1),
12981309
inputs_b: vec![],
12991310
outputs_b: vec![],
13001311
expect_error: Some((AbortReason::ReceivedTooManyTxAddOutputs, ErrorCulprit::NodeA)),
13011312
});
1302-
// Initiator sends an output below dust value.
13031313
do_test_interactive_tx_constructor(TestSession {
1314+
description: "Initiator sends an output below dust value",
13041315
inputs_a: vec![],
13051316
outputs_a: generate_outputs(&[1]),
13061317
inputs_b: vec![],
13071318
outputs_b: vec![],
13081319
expect_error: Some((AbortReason::BelowDustLimit, ErrorCulprit::NodeA)),
13091320
});
1310-
// Initiator sends an output above maximum sats allowed.
13111321
do_test_interactive_tx_constructor(TestSession {
1322+
description: "Initiator sends an output above maximum sats allowed",
13121323
inputs_a: vec![],
13131324
outputs_a: generate_outputs(&[TOTAL_BITCOIN_SUPPLY_SATOSHIS + 1]),
13141325
inputs_b: vec![],
13151326
outputs_b: vec![],
13161327
expect_error: Some((AbortReason::ExceededMaximumSatsAllowed, ErrorCulprit::NodeA)),
13171328
});
1318-
// Initiator sends an output without a witness program.
13191329
do_test_interactive_tx_constructor(TestSession {
1330+
description: "Initiator sends an output without a witness program",
13201331
inputs_a: vec![],
13211332
outputs_a: vec![generate_non_witness_output(1_000_000)],
13221333
inputs_b: vec![],
13231334
outputs_b: vec![],
13241335
expect_error: Some((AbortReason::InvalidOutputScript, ErrorCulprit::NodeA)),
13251336
});
1326-
// Attempt to queue up two outputs with duplicate serial ids. We use a deliberately bad
1327-
// entropy source, `DuplicateEntropySource` to simulate this.
13281337
do_test_interactive_tx_constructor_with_entropy_source(
13291338
TestSession {
1339+
// We use a deliberately bad entropy source, `DuplicateEntropySource` to simulate this.
1340+
description: "Attempt to queue up two outputs with duplicate serial ids",
13301341
inputs_a: vec![],
13311342
outputs_a: generate_fixed_number_of_outputs(2),
13321343
inputs_b: vec![],
@@ -1336,17 +1347,17 @@ mod tests {
13361347
&DuplicateEntropySource,
13371348
);
13381349

1339-
// Peer contributed more output value than inputs
13401350
do_test_interactive_tx_constructor(TestSession {
1351+
description: "Peer contributed more output value than inputs",
13411352
inputs_a: generate_inputs(&[100_000]),
13421353
outputs_a: generate_outputs(&[1_000_000]),
13431354
inputs_b: vec![],
13441355
outputs_b: vec![],
13451356
expect_error: Some((AbortReason::OutputsValueExceedsInputsValue, ErrorCulprit::NodeA)),
13461357
});
13471358

1348-
// Peer contributed more than allowed number of inputs.
13491359
do_test_interactive_tx_constructor(TestSession {
1360+
description: "Peer contributed more than allowed number of inputs",
13501361
inputs_a: generate_fixed_number_of_inputs(MAX_INPUTS_OUTPUTS_COUNT as u16 + 1),
13511362
outputs_a: vec![],
13521363
inputs_b: vec![],
@@ -1356,8 +1367,8 @@ mod tests {
13561367
ErrorCulprit::Indeterminate,
13571368
)),
13581369
});
1359-
// Peer contributed more than allowed number of outputs.
13601370
do_test_interactive_tx_constructor(TestSession {
1371+
description: "Peer contributed more than allowed number of outputs",
13611372
inputs_a: generate_inputs(&[TOTAL_BITCOIN_SUPPLY_SATOSHIS]),
13621373
outputs_a: generate_fixed_number_of_outputs(MAX_INPUTS_OUTPUTS_COUNT as u16 + 1),
13631374
inputs_b: vec![],

0 commit comments

Comments
 (0)