@@ -86,6 +86,119 @@ func assertEqualTaprootProof(t *testing.T, expected, actual *TaprootProof) {
8686 }
8787}
8888
89+ // assertEqualGroupKeyRevealV0 asserts that the expected and actual group key
90+ // reveal V0 are equal.
91+ func assertEqualGroupKeyRevealV0 (t * testing.T , expected ,
92+ actual asset.GroupKeyRevealV0 , expectedGenesisAssetID asset.ID ) {
93+
94+ t .Helper ()
95+
96+ require .Equal (t , expected .RawKey (), actual .RawKey ())
97+
98+ // Compare the tapscript root. Normalize nil to empty slice for
99+ // comparison.
100+ expectedRoot := expected .TapscriptRoot ()
101+ if expectedRoot == nil {
102+ expectedRoot = []byte {}
103+ }
104+
105+ actualRoot := actual .TapscriptRoot ()
106+ if actualRoot == nil {
107+ actualRoot = []byte {}
108+ }
109+
110+ require .Equal (t , expectedRoot , actualRoot )
111+
112+ // Assert that the asset group pub key is equal for the expected genesis
113+ // asset ID.
114+ expectedGroupPubKey , err := expected .GroupPubKey (expectedGenesisAssetID )
115+ require .NoError (t , err )
116+
117+ actualGroupPubKey , err := actual .GroupPubKey (expectedGenesisAssetID )
118+ require .NoError (t , err )
119+
120+ require .Equal (t , expectedGroupPubKey , actualGroupPubKey )
121+ }
122+
123+ // assertEqualGroupKeyRevealV1 asserts that the expected and actual group key
124+ // reveal V1 are equal.
125+ func assertEqualGroupKeyRevealV1 (t * testing.T , expected ,
126+ actual asset.GroupKeyRevealV1 , expectedGenesisAssetID asset.ID ) {
127+
128+ require .Equal (t , expected .RawKey (), actual .RawKey ())
129+
130+ // Compare the tapscript root. Normalize nil to empty slice for
131+ // comparison.
132+ expectedRoot := expected .TapscriptRoot ()
133+ if expectedRoot == nil {
134+ expectedRoot = []byte {}
135+ }
136+
137+ actualRoot := actual .TapscriptRoot ()
138+ if actualRoot == nil {
139+ actualRoot = []byte {}
140+ }
141+
142+ require .Equal (t , expectedRoot , actualRoot )
143+
144+ // Assert that the asset group pub key is equal for the expected genesis
145+ // asset ID.
146+ expectedGroupPubKey , err := expected .GroupPubKey (expectedGenesisAssetID )
147+ require .NoError (t , err )
148+
149+ actualGroupPubKey , err := actual .GroupPubKey (expectedGenesisAssetID )
150+ require .NoError (t , err )
151+
152+ require .Equal (t , expectedGroupPubKey , actualGroupPubKey )
153+
154+ // Compare the custom subtree root.
155+ require .Equal (
156+ t , expected .CustomSubtreeRoot (), actual .CustomSubtreeRoot (),
157+ )
158+ }
159+
160+ // assertEqualGroupKeyReveal asserts that the expected and actual group key
161+ // reveal are equal.
162+ func assertEqualGroupKeyReveal (t * testing.T , expected ,
163+ actual asset.GroupKeyReveal , expectedGenesisAssetID asset.ID ) {
164+
165+ t .Helper ()
166+
167+ // Handle nil cases.
168+ if expected == nil {
169+ require .Nil (t , actual )
170+ return
171+ }
172+ require .NotNil (t , actual )
173+
174+ // Dispatch to group key reveal version 0 assertion.
175+ if expectedV0 , ok := expected .(* asset.GroupKeyRevealV0 ); ok {
176+ // If expected is V0 then actual should be V0.
177+ actualV0 , actualOk := actual .(* asset.GroupKeyRevealV0 )
178+ require .True (t , actualOk )
179+
180+ assertEqualGroupKeyRevealV0 (
181+ t , * expectedV0 , * actualV0 , expectedGenesisAssetID ,
182+ )
183+ return
184+ }
185+
186+ // Dispatch to group key reveal version 1 assertion.
187+ if expectedV1 , ok := expected .(* asset.GroupKeyRevealV1 ); ok {
188+ // If expected is V1 then actual should be V1.
189+ actualV1 , actualOk := actual .(* asset.GroupKeyRevealV1 )
190+ require .True (t , actualOk )
191+
192+ assertEqualGroupKeyRevealV1 (
193+ t , * expectedV1 , * actualV1 , expectedGenesisAssetID ,
194+ )
195+ return
196+ }
197+
198+ // Unexpected group key reveal type.
199+ require .FailNow (t , "unexpected group key reveal type" )
200+ }
201+
89202func assertEqualProof (t * testing.T , expected , actual * Proof ) {
90203 t .Helper ()
91204
@@ -136,6 +249,11 @@ func assertEqualProof(t *testing.T, expected, actual *Proof) {
136249 }
137250
138251 require .Equal (t , expected .ChallengeWitness , actual .ChallengeWitness )
252+
253+ assertEqualGroupKeyReveal (
254+ t , expected .GroupKeyReveal , actual .GroupKeyReveal ,
255+ expected .Asset .Genesis .ID (),
256+ )
139257}
140258
141259func TestProofEncoding (t * testing.T ) {
0 commit comments