@@ -108,11 +108,30 @@ class MockedDescriptorConverter {
108
108
MockedDescriptorConverter MOCKED_DESC_CONVERTER;
109
109
110
110
/* * Test a successfully parsed descriptor. */
111
- static void TestDescriptor (const Descriptor& desc)
111
+ static void TestDescriptor (const Descriptor& desc, FlatSigningProvider& sig_provider, std::string& dummy )
112
112
{
113
- ( void )desc. ToString ();
113
+ // Trivial helpers.
114
114
(void )desc.IsRange ();
115
115
(void )desc.IsSolvable ();
116
+ (void )desc.IsSingleType ();
117
+ (void )desc.GetOutputType ();
118
+
119
+ // Serialization to string representation.
120
+ (void )desc.ToString ();
121
+ (void )desc.ToPrivateString (sig_provider, dummy);
122
+ (void )desc.ToNormalizedString (sig_provider, dummy);
123
+
124
+ // Serialization to Script.
125
+ DescriptorCache cache;
126
+ std::vector<CScript> out_scripts;
127
+ (void )desc.Expand (0 , sig_provider, out_scripts, sig_provider, &cache);
128
+ (void )desc.ExpandPrivate (0 , sig_provider, sig_provider);
129
+ (void )desc.ExpandFromCache (0 , cache, out_scripts, sig_provider);
130
+
131
+ // If we could serialize to script we must be able to infer using the same provider.
132
+ if (!out_scripts.empty ()) {
133
+ assert (InferDescriptor (out_scripts.back (), sig_provider));
134
+ }
116
135
}
117
136
118
137
void initialize_descriptor_parse ()
@@ -134,7 +153,7 @@ FUZZ_TARGET(mocked_descriptor_parse, .init = initialize_mocked_descriptor_parse)
134
153
FlatSigningProvider signing_provider;
135
154
std::string error;
136
155
const auto desc = Parse (*descriptor, signing_provider, error);
137
- if (desc) TestDescriptor (*desc);
156
+ if (desc) TestDescriptor (*desc, signing_provider, error );
138
157
}
139
158
}
140
159
@@ -145,6 +164,6 @@ FUZZ_TARGET(descriptor_parse, .init = initialize_descriptor_parse)
145
164
std::string error;
146
165
for (const bool require_checksum : {true , false }) {
147
166
const auto desc = Parse (descriptor, signing_provider, error, require_checksum);
148
- if (desc) TestDescriptor (*desc);
167
+ if (desc) TestDescriptor (*desc, signing_provider, error );
149
168
}
150
169
}
0 commit comments