Skip to content

Commit 4e7edec

Browse files
committed
splice: A splice-script test that tests complex corner cases
A test that puts some advanced and complex scripts into the parser and validates the results that come out.
1 parent 2c79e61 commit 4e7edec

File tree

2 files changed

+297
-0
lines changed

2 files changed

+297
-0
lines changed

common/test/Makefile

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,22 @@ common/test/run-version: \
105105
wire/towire.o
106106

107107

108+
common/test/run-splice_script: \
109+
common/amount.o \
110+
common/node_id.o \
111+
common/bech32.o \
112+
common/splice_script.o \
113+
common/type_to_string.o \
114+
common/json_stream.o \
115+
common/json_filter.o \
116+
common/json_parse.o \
117+
common/json_parse_simple.o \
118+
common/wireaddr.o \
119+
common/base32.o \
120+
wire/fromwire.o \
121+
wire/towire.o
122+
123+
108124
common/test/run-trace: \
109125
common/amount.o \
110126
common/memleak.o \

common/test/run-splice_script.c

Lines changed: 281 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,281 @@
1+
#include "config.h"
2+
#include "../version.c"
3+
#include <bitcoin/chainparams.h>
4+
#include <common/setup.h>
5+
#include <common/splice_script.h>
6+
#include <common/json_command.h>
7+
#include <assert.h>
8+
#include <stdio.h>
9+
#include <ccan/json_out/json_out.h>
10+
/* Include the C files directly. */
11+
#include <ccan/json_out/json_out.c>
12+
13+
struct command_result *command_fail(struct command *cmd, enum jsonrpc_errcode code, const char *fmt, ...)
14+
{ fprintf(stderr, "command_fail called!\n"); abort(); }
15+
16+
struct json_filter **command_filter_ptr(struct command *cmd)
17+
{ fprintf(stderr, "command_filter_ptr called!\n"); abort(); }
18+
19+
const char *mvt_tag_str(enum mvt_tag tag UNNEEDED)
20+
{ fprintf(stderr, "mvt_tag_str called!\n"); abort(); }
21+
22+
int main(int argc, char *argv[])
23+
{
24+
size_t len;
25+
const char *str;
26+
struct splice_script_error *error;
27+
struct splice_script_result **result, **final;
28+
jsmntok_t *toks;
29+
30+
common_setup(argv[0]);
31+
32+
struct splice_script_chan channels[] =
33+
{
34+
{ /* A */
35+
.node_id = { .k = { 0x03, 0x99, 0x06, 0x9f, 0x16, 0x93, 0xfd, 0x89, 0xa4, 0x53, 0xf0, 0xca, 0xf0, 0x3e, 0xe3, 0x6b, 0x6f, 0x6c, 0x8a, 0xba, 0xa7, 0xef, 0x77, 0x8d, 0x3e, 0x2b, 0xcc, 0x7c, 0x2b, 0x44, 0x12, 0x01, 0x00 } },
36+
.chan_id = { .id = { 0xf5, 0x69, 0x9c, 0x3d, 0x53, 0x02, 0xe4, 0x48, 0x6c, 0x83, 0xef, 0x9d, 0x0f, 0x2d, 0x12, 0xa9, 0x69, 0xab, 0x41, 0xcc, 0xc9, 0x30, 0x1b, 0xd0, 0x42, 0xc5, 0x07, 0x60, 0xa8, 0x7b, 0x27, 0x00 } },
37+
},
38+
{ /* B */
39+
.node_id = { .k = { 0x03, 0x93, 0x06, 0x9f, 0x16, 0x93, 0xfd, 0x89, 0xa4, 0x53, 0xf0, 0xca, 0xf0, 0x3e, 0xe3, 0x6b, 0x6f, 0x6c, 0x8a, 0xba, 0xa7, 0xef, 0x77, 0x8d, 0x3e, 0x2b, 0xcc, 0x7c, 0x2b, 0x44, 0x12, 0x01, 0x01 } },
40+
.chan_id = { .id = { 0xf5, 0x69, 0x9c, 0x3d, 0x53, 0x02, 0xe4, 0x48, 0x6c, 0x83, 0xef, 0x9d, 0x0f, 0x2d, 0x12, 0xa9, 0x69, 0xab, 0x41, 0xcc, 0xc9, 0x30, 0x1b, 0xd0, 0x42, 0xc5, 0x07, 0x60, 0xa8, 0x7b, 0x27, 0x01 } },
41+
},
42+
{ /* C */
43+
.node_id = { .k = { 0x03, 0x93, 0x06, 0x9f, 0x16, 0x93, 0xfd, 0x89, 0xa4, 0x53, 0xf0, 0xca, 0xf0, 0x3e, 0xe3, 0x6b, 0x6f, 0x6c, 0x8a, 0xba, 0xa7, 0xef, 0x77, 0x8d, 0x3e, 0x2b, 0xcc, 0x7c, 0x2b, 0x44, 0x12, 0x01, 0x01 } },
44+
.chan_id = { .id = { 0xf5, 0x69, 0x9c, 0x3d, 0x53, 0x02, 0xe4, 0x48, 0x6c, 0x83, 0xef, 0x9d, 0x0f, 0x2d, 0x12, 0xa9, 0x69, 0xab, 0x41, 0xcc, 0xc9, 0x30, 0x1b, 0xd0, 0x42, 0xc5, 0x07, 0x60, 0xa8, 0x7b, 0x27, 0x02 } },
45+
},
46+
{ /* D */
47+
.node_id = { .k = { 0x03, 0x93, 0x06, 0x9f, 0x16, 0x93, 0xfd, 0x89, 0xa4, 0x53, 0xf0, 0xca, 0xf0, 0x3e, 0xe3, 0x6b, 0x6f, 0x6c, 0x8a, 0xba, 0xa7, 0xef, 0x77, 0x8d, 0x3e, 0x2b, 0xcc, 0x7c, 0x2b, 0x44, 0x12, 0x01, 0x01 } },
48+
.chan_id = { .id = { 0xf5, 0x69, 0x9c, 0x3d, 0x53, 0x02, 0xe4, 0x48, 0x6c, 0x83, 0xef, 0x9d, 0x0f, 0x2d, 0x12, 0xa9, 0x69, 0xab, 0x41, 0xcc, 0xc9, 0x30, 0x1b, 0xd0, 0x42, 0xc5, 0x07, 0x60, 0xa8, 0x7b, 0x27, 0x03 } },
49+
},
50+
{ /* E */
51+
.node_id = { .k = { 0x03, 0x93, 0x06, 0x9f, 0x16, 0x93, 0xfd, 0x89, 0xa4, 0x53, 0xf0, 0xca, 0xf0, 0x3e, 0xe3, 0x6b, 0x6f, 0x6c, 0x8a, 0xba, 0xa7, 0xef, 0x77, 0x8d, 0x3e, 0x2b, 0xcc, 0x7c, 0x2b, 0x44, 0x12, 0x01, 0x01 } },
52+
.chan_id = { .id = { 0xf5, 0x69, 0x9c, 0x3d, 0x53, 0x02, 0xe4, 0x48, 0x6c, 0x83, 0xef, 0x9d, 0x0f, 0x2d, 0x12, 0xa9, 0x69, 0xab, 0x41, 0xcc, 0xc9, 0x30, 0x1b, 0xd0, 0x42, 0xc5, 0x07, 0x60, 0xa8, 0x7b, 0x27, 0x04 } },
53+
},
54+
{ /* F */
55+
.node_id = { .k = { 0x03, 0x93, 0x06, 0x9f, 0x16, 0x93, 0xfd, 0x89, 0xa4, 0x53, 0xf0, 0xca, 0xf0, 0x3e, 0xe3, 0x6b, 0x6f, 0x6c, 0x8a, 0xba, 0xa7, 0xef, 0x77, 0x8d, 0x3e, 0x2b, 0xcc, 0x7c, 0x2b, 0x44, 0x12, 0x01, 0x01 } },
56+
.chan_id = { .id = { 0xf5, 0x69, 0x9c, 0x3d, 0x53, 0x02, 0xe4, 0x48, 0x6c, 0x83, 0xef, 0x9d, 0x0f, 0x2d, 0x12, 0xa9, 0x69, 0xab, 0x41, 0xcc, 0xc9, 0x30, 0x1b, 0xd0, 0x42, 0xc5, 0x07, 0x60, 0xa8, 0x7b, 0x27, 0x05 } },
57+
},
58+
{ /* G */
59+
.node_id = { .k = { 0x03, 0x94, 0x06, 0x9f, 0x16, 0x93, 0xfd, 0x89, 0xa4, 0x53, 0xf0, 0xca, 0xf0, 0x3e, 0xe3, 0x6b, 0x6f, 0x6c, 0x8a, 0xba, 0xa7, 0xef, 0x77, 0x8d, 0x3e, 0x2b, 0xcc, 0x7c, 0x2b, 0x44, 0x12, 0x01, 0x01 } },
60+
.chan_id = { .id = { 0xf5, 0x69, 0x9c, 0x3d, 0x53, 0x02, 0xe4, 0x48, 0x6c, 0x83, 0xef, 0x9d, 0x0f, 0x2d, 0x12, 0xa9, 0x69, 0xab, 0x41, 0xcc, 0xc9, 0x30, 0x1b, 0xd0, 0x42, 0xc5, 0x07, 0x60, 0xa8, 0x7b, 0x27, 0x06 } },
61+
},
62+
{ /* H */
63+
.node_id = { .k = { 0x03, 0x94, 0x06, 0x9f, 0x16, 0x93, 0xfd, 0x89, 0xa4, 0x53, 0xf0, 0xca, 0xf0, 0x3e, 0xe3, 0x6b, 0x6f, 0x6c, 0x8a, 0xba, 0xa7, 0xef, 0x77, 0x8d, 0x3e, 0x2b, 0xcc, 0x7c, 0x2b, 0x44, 0x12, 0x01, 0x01 } },
64+
.chan_id = { .id = { 0xf4, 0x69, 0x9c, 0x3d, 0x53, 0x02, 0xe4, 0x48, 0x6c, 0x83, 0xef, 0x9d, 0x0f, 0x2d, 0x12, 0xa9, 0x69, 0xab, 0x41, 0xcc, 0xc9, 0x30, 0x1b, 0xd0, 0x42, 0xc5, 0x07, 0x60, 0xa8, 0x7b, 0x27, 0x00 } },
65+
},
66+
{ /* I */
67+
.node_id = { .k = { 0x03, 0x94, 0x06, 0x9f, 0x16, 0x93, 0xfd, 0x89, 0xa4, 0x53, 0xf0, 0xca, 0xf0, 0x3e, 0xe3, 0x6b, 0x6f, 0x6c, 0x8a, 0xba, 0xa7, 0xef, 0x77, 0x8d, 0x3e, 0x2b, 0xcc, 0x7c, 0x2b, 0x44, 0x12, 0x01, 0x02 } },
68+
.chan_id = { .id = { 0xff, 0xff, 0xff, 0xff, 0x53, 0x02, 0xe4, 0x48, 0x6c, 0x83, 0xef, 0x9d, 0x0f, 0x2d, 0x12, 0xa9, 0x69, 0xab, 0x41, 0xcc, 0xc9, 0x30, 0x1b, 0xd0, 0x42, 0xc5, 0x07, 0x60, 0xa8, 0x7b, 0x27, 0x00 } },
69+
},
70+
{ /* J */
71+
.node_id = { .k = { 0x03, 0x94, 0x06, 0x9f, 0x16, 0x93, 0xfd, 0x89, 0xa4, 0x53, 0xf0, 0xca, 0xf0, 0x3e, 0xe3, 0x6b, 0x6f, 0x6c, 0x8a, 0xba, 0xa7, 0xef, 0x77, 0x8d, 0x3e, 0x2b, 0xcc, 0x7c, 0x2b, 0x44, 0x12, 0x01, 0x03 } },
72+
.chan_id = { .id = { 0xee, 0xee, 0xee, 0xee, 0x53, 0x02, 0xe4, 0x48, 0x6c, 0x83, 0xef, 0x9d, 0x0f, 0x2d, 0x12, 0xa9, 0x69, 0xab, 0x41, 0xcc, 0xc9, 0x30, 0x1b, 0xd0, 0x42, 0xc5, 0x07, 0x60, 0xa8, 0x7b, 0x27, 0x00 } },
73+
},
74+
{ /* K */
75+
.node_id = { .k = { 0x03, 0x94, 0x06, 0x9f, 0x16, 0x93, 0xfd, 0x89, 0xa4, 0x53, 0xf0, 0xca, 0xf0, 0x3e, 0xe3, 0x6b, 0x6f, 0x6c, 0x8a, 0xba, 0xa7, 0xef, 0x77, 0x8d, 0x3e, 0x2b, 0xcc, 0x7c, 0x2b, 0x44, 0x12, 0x01, 0x03 } },
76+
.chan_id = { .id = { 0xee, 0xee, 0xee, 0xee, 0x53, 0x02, 0xe4, 0x48, 0x6c, 0x83, 0xef, 0x9d, 0x0f, 0x2d, 0x12, 0xa9, 0x69, 0xab, 0x41, 0xcc, 0xc9, 0x30, 0x1b, 0xd0, 0x42, 0xc5, 0x07, 0x60, 0xa8, 0x7b, 0x27, 0x01 } },
77+
},
78+
{ /* L */
79+
.node_id = { .k = { 0x03, 0x94, 0x06, 0x9f, 0x16, 0x93, 0xfd, 0x89, 0xa4, 0x53, 0xf0, 0xca, 0xf0, 0x3e, 0xe3, 0x6b, 0x6f, 0x6c, 0x8a, 0xba, 0xa7, 0xef, 0x77, 0x8d, 0x3e, 0x2b, 0xcc, 0x7c, 0x2b, 0x44, 0x12, 0x01, 0x04 } },
80+
.chan_id = { .id = { 0xee, 0xee, 0xee, 0xee, 0x53, 0x02, 0xe4, 0x48, 0x6c, 0x83, 0xef, 0x9d, 0x0f, 0x2d, 0x12, 0xa9, 0x69, 0xab, 0x41, 0xcc, 0xc9, 0x30, 0x1b, 0xd0, 0x42, 0xc5, 0x07, 0x60, 0xa8, 0x7b, 0x27, 0x02 } },
81+
},
82+
};
83+
84+
const char *script = ""
85+
"0->0399:0->3M;\n" /* A */
86+
"3M->bcrt1pp5ygqjg0q3mmv8ng8ceu59kl5a3etlf2vvryvnnyumvdyr8a77tqx507vk;\n"
87+
"wallet->1M;\n"
88+
"0->f4699c->3M;\n" /* H */
89+
"0->0393069f1693fd89a453f0caf03ee36b6f6c8abaa7ef778d3e2bcc7c2b44120101:0->*;\n" /* B */
90+
"0->0393069f1693fd89a453f0caf03ee36b6f6c8abaa7ef778d3e2bcc7c2b44120101:?->12M;\n" /* C */
91+
"0->03930:*->*\n" /* D, E, F */
92+
"|4.91M@2%->*:?;\n" /* G */
93+
"25%|100K->*:?;\n" /* I */
94+
"10%->*:*;\n"; /* J, K, L */
95+
96+
chainparams = chainparams_for_network("regtest");
97+
98+
error = parse_splice_script(tmpctx, script, channels,
99+
sizeof(channels) / sizeof(channels[0]),
100+
&result);
101+
102+
if (error) {
103+
printf("%s\n", splice_script_compiler_error(tmpctx, script,
104+
error));
105+
abort();
106+
}
107+
108+
struct json_stream *js = new_json_stream(tmpctx, NULL, NULL);
109+
110+
splice_to_json(tmpctx, result, js);
111+
112+
str = json_out_contents(js->jout, &len);
113+
114+
assert(str);
115+
116+
toks = json_parse_simple(tmpctx, str, len);
117+
118+
assert(toks);
119+
120+
assert(json_to_splice(tmpctx, str, toks, &final));
121+
122+
assert(tal_count(final) == 15);
123+
int i = 0;
124+
125+
assert(amount_sat_eq(final[i]->lease_sat, AMOUNT_SAT(0)));
126+
assert(final[i]->lease_max_ppm == 0);
127+
assert(amount_sat_eq(final[i]->in_sat, AMOUNT_SAT(0)));
128+
assert(final[i]->in_ppm == 0);
129+
assert(channel_id_eq(final[i]->channel_id, &channels[0].chan_id));
130+
assert(final[i]->bitcoin_address == 0);
131+
assert(final[i]->onchain_wallet == 0);
132+
assert(amount_sat_eq(final[i]->out_sat, AMOUNT_SAT(3000000)));
133+
assert(final[i]->out_ppm == 0);
134+
i++;
135+
assert(amount_sat_eq(final[i]->lease_sat, AMOUNT_SAT(0)));
136+
assert(final[i]->lease_max_ppm == 0);
137+
assert(amount_sat_eq(final[i]->in_sat, AMOUNT_SAT(3000000)));
138+
assert(final[i]->in_ppm == 0);
139+
assert(final[i]->channel_id == 0);
140+
assert(strcmp(final[i]->bitcoin_address, "bcrt1pp5ygqjg0q3mmv8ng8ceu59kl5a3etlf2vvryvnnyumvdyr8a77tqx507vk") == 0);
141+
assert(final[i]->onchain_wallet == 0);
142+
assert(amount_sat_eq(final[i]->out_sat, AMOUNT_SAT(0)));
143+
assert(final[i]->out_ppm == 0);
144+
i++;
145+
assert(amount_sat_eq(final[i]->lease_sat, AMOUNT_SAT(0)));
146+
assert(final[i]->lease_max_ppm == 0);
147+
assert(amount_sat_eq(final[i]->in_sat, AMOUNT_SAT(0)));
148+
assert(final[i]->in_ppm == 0);
149+
assert(final[i]->channel_id == 0);
150+
assert(final[i]->bitcoin_address == 0);
151+
assert(final[i]->onchain_wallet == 1);
152+
assert(amount_sat_eq(final[i]->out_sat, AMOUNT_SAT(1000000)));
153+
assert(final[i]->out_ppm == 0);
154+
i++;
155+
assert(amount_sat_eq(final[i]->lease_sat, AMOUNT_SAT(0)));
156+
assert(final[i]->lease_max_ppm == 0);
157+
assert(amount_sat_eq(final[i]->in_sat, AMOUNT_SAT(0)));
158+
assert(final[i]->in_ppm == 0);
159+
assert(channel_id_eq(final[i]->channel_id, &channels[7].chan_id));
160+
assert(final[i]->bitcoin_address == 0);
161+
assert(final[i]->onchain_wallet == 0);
162+
assert(amount_sat_eq(final[i]->out_sat, AMOUNT_SAT(3000000)));
163+
assert(final[i]->out_ppm == 0);
164+
i++;
165+
assert(amount_sat_eq(final[i]->lease_sat, AMOUNT_SAT(0)));
166+
assert(final[i]->lease_max_ppm == 0);
167+
assert(amount_sat_eq(final[i]->in_sat, AMOUNT_SAT(0)));
168+
assert(final[i]->in_ppm == 0);
169+
assert(channel_id_eq(final[i]->channel_id, &channels[1].chan_id));
170+
assert(final[i]->bitcoin_address == 0);
171+
assert(final[i]->onchain_wallet == 0);
172+
assert(amount_sat_eq(final[i]->out_sat, AMOUNT_SAT(0)));
173+
assert(final[i]->out_ppm == 1000000);
174+
i++;
175+
assert(amount_sat_eq(final[i]->lease_sat, AMOUNT_SAT(0)));
176+
assert(final[i]->lease_max_ppm == 0);
177+
assert(amount_sat_eq(final[i]->in_sat, AMOUNT_SAT(0)));
178+
assert(final[i]->in_ppm == 0);
179+
assert(channel_id_eq(final[i]->channel_id, &channels[2].chan_id));
180+
assert(final[i]->bitcoin_address == 0);
181+
assert(final[i]->onchain_wallet == 0);
182+
assert(amount_sat_eq(final[i]->out_sat, AMOUNT_SAT(12000000)));
183+
assert(final[i]->out_ppm == 0);
184+
i++;
185+
assert(amount_sat_eq(final[i]->lease_sat, AMOUNT_SAT(0)));
186+
assert(final[i]->lease_max_ppm == 0);
187+
assert(amount_sat_eq(final[i]->in_sat, AMOUNT_SAT(0)));
188+
assert(final[i]->in_ppm == 0);
189+
assert(channel_id_eq(final[i]->channel_id, &channels[3].chan_id));
190+
assert(final[i]->bitcoin_address == 0);
191+
assert(final[i]->onchain_wallet == 0);
192+
assert(amount_sat_eq(final[i]->out_sat, AMOUNT_SAT(0)));
193+
assert(final[i]->out_ppm == 1000000);
194+
i++;
195+
assert(amount_sat_eq(final[i]->lease_sat, AMOUNT_SAT(0)));
196+
assert(final[i]->lease_max_ppm == 0);
197+
assert(amount_sat_eq(final[i]->in_sat, AMOUNT_SAT(0)));
198+
assert(final[i]->in_ppm == 0);
199+
assert(channel_id_eq(final[i]->channel_id, &channels[4].chan_id));
200+
assert(final[i]->bitcoin_address == 0);
201+
assert(final[i]->onchain_wallet == 0);
202+
assert(amount_sat_eq(final[i]->out_sat, AMOUNT_SAT(0)));
203+
assert(final[i]->out_ppm == 1000000);
204+
i++;
205+
assert(amount_sat_eq(final[i]->lease_sat, AMOUNT_SAT(0)));
206+
assert(final[i]->lease_max_ppm == 0);
207+
assert(amount_sat_eq(final[i]->in_sat, AMOUNT_SAT(0)));
208+
assert(final[i]->in_ppm == 0);
209+
assert(channel_id_eq(final[i]->channel_id, &channels[5].chan_id));
210+
assert(final[i]->bitcoin_address == 0);
211+
assert(final[i]->onchain_wallet == 0);
212+
assert(amount_sat_eq(final[i]->out_sat, AMOUNT_SAT(0)));
213+
assert(final[i]->out_ppm == 1000000);
214+
i++;
215+
assert(amount_sat_eq(final[i]->lease_sat, AMOUNT_SAT(4910000)));
216+
assert(final[i]->lease_max_ppm == 20000);
217+
assert(amount_sat_eq(final[i]->in_sat, AMOUNT_SAT(0)));
218+
assert(final[i]->in_ppm == 0);
219+
assert(channel_id_eq(final[i]->channel_id, &channels[6].chan_id));
220+
assert(final[i]->bitcoin_address == 0);
221+
assert(final[i]->onchain_wallet == 0);
222+
assert(amount_sat_eq(final[i]->out_sat, AMOUNT_SAT(0)));
223+
assert(final[i]->out_ppm == 0);
224+
i++;
225+
assert(amount_sat_eq(final[i]->lease_sat, AMOUNT_SAT(100000)));
226+
assert(final[i]->lease_max_ppm == 0);
227+
assert(amount_sat_eq(final[i]->in_sat, AMOUNT_SAT(0)));
228+
assert(final[i]->in_ppm == 250000);
229+
assert(channel_id_eq(final[i]->channel_id, &channels[8].chan_id));
230+
assert(final[i]->bitcoin_address == 0);
231+
assert(final[i]->onchain_wallet == 0);
232+
assert(amount_sat_eq(final[i]->out_sat, AMOUNT_SAT(0)));
233+
assert(final[i]->out_ppm == 0);
234+
i++;
235+
assert(amount_sat_eq(final[i]->lease_sat, AMOUNT_SAT(0)));
236+
assert(final[i]->lease_max_ppm == 0);
237+
assert(amount_sat_eq(final[i]->in_sat, AMOUNT_SAT(0)));
238+
assert(final[i]->in_ppm == 33333);
239+
assert(channel_id_eq(final[i]->channel_id, &channels[9].chan_id));
240+
assert(final[i]->bitcoin_address == 0);
241+
assert(final[i]->onchain_wallet == 0);
242+
assert(amount_sat_eq(final[i]->out_sat, AMOUNT_SAT(0)));
243+
assert(final[i]->out_ppm == 0);
244+
i++;
245+
assert(amount_sat_eq(final[i]->lease_sat, AMOUNT_SAT(0)));
246+
assert(final[i]->lease_max_ppm == 0);
247+
assert(amount_sat_eq(final[i]->in_sat, AMOUNT_SAT(0)));
248+
assert(final[i]->in_ppm == 33333);
249+
assert(channel_id_eq(final[i]->channel_id, &channels[10].chan_id));
250+
assert(final[i]->bitcoin_address == 0);
251+
assert(final[i]->onchain_wallet == 0);
252+
assert(amount_sat_eq(final[i]->out_sat, AMOUNT_SAT(0)));
253+
assert(final[i]->out_ppm == 0);
254+
i++;
255+
assert(amount_sat_eq(final[i]->lease_sat, AMOUNT_SAT(0)));
256+
assert(final[i]->lease_max_ppm == 0);
257+
assert(amount_sat_eq(final[i]->in_sat, AMOUNT_SAT(0)));
258+
assert(final[i]->in_ppm == 33333);
259+
assert(channel_id_eq(final[i]->channel_id, &channels[11].chan_id));
260+
assert(final[i]->bitcoin_address == 0);
261+
assert(final[i]->onchain_wallet == 0);
262+
assert(amount_sat_eq(final[i]->out_sat, AMOUNT_SAT(0)));
263+
assert(final[i]->out_ppm == 0);
264+
i++;
265+
assert(amount_sat_eq(final[i]->lease_sat, AMOUNT_SAT(0)));
266+
assert(final[i]->lease_max_ppm == 0);
267+
assert(amount_sat_eq(final[i]->in_sat, AMOUNT_SAT(0)));
268+
assert(final[i]->in_ppm == 650001);
269+
assert(final[i]->channel_id == 0);
270+
assert(final[i]->bitcoin_address == 0);
271+
assert(final[i]->onchain_wallet == 1);
272+
assert(amount_sat_eq(final[i]->out_sat, AMOUNT_SAT(0)));
273+
assert(final[i]->out_ppm == 0);
274+
i++;
275+
276+
assert(i == tal_count(final));
277+
278+
common_shutdown();
279+
280+
return 0;
281+
}

0 commit comments

Comments
 (0)