@@ -744,136 +744,151 @@ func TestBlake2b224_ToPlutusData(t *testing.T) {
744744 }
745745}
746746
747+ var certificateTypeTests = []struct {
748+ name string
749+ cert Certificate
750+ expected uint
751+ }{
752+ {
753+ "StakeRegistration" ,
754+ & StakeRegistrationCertificate {
755+ CertType : uint (CertificateTypeStakeRegistration ),
756+ },
757+ uint (CertificateTypeStakeRegistration ),
758+ },
759+ {
760+ "StakeDeregistration" ,
761+ & StakeDeregistrationCertificate {
762+ CertType : uint (CertificateTypeStakeDeregistration ),
763+ },
764+ uint (CertificateTypeStakeDeregistration ),
765+ },
766+ {
767+ "StakeDelegation" ,
768+ & StakeDelegationCertificate {
769+ CertType : uint (CertificateTypeStakeDelegation ),
770+ },
771+ uint (CertificateTypeStakeDelegation ),
772+ },
773+ {
774+ "PoolRegistration" ,
775+ & PoolRegistrationCertificate {
776+ CertType : uint (CertificateTypePoolRegistration ),
777+ },
778+ uint (CertificateTypePoolRegistration ),
779+ },
780+ {
781+ "PoolRetirement" ,
782+ & PoolRetirementCertificate {
783+ CertType : uint (CertificateTypePoolRetirement ),
784+ },
785+ uint (CertificateTypePoolRetirement ),
786+ },
787+ {
788+ "GenesisKeyDelegation" ,
789+ & GenesisKeyDelegationCertificate {
790+ CertType : uint (CertificateTypeGenesisKeyDelegation ),
791+ },
792+ uint (CertificateTypeGenesisKeyDelegation ),
793+ },
794+ {
795+ "MoveInstantaneousRewards" ,
796+ & MoveInstantaneousRewardsCertificate {
797+ CertType : uint (CertificateTypeMoveInstantaneousRewards ),
798+ },
799+ uint (CertificateTypeMoveInstantaneousRewards ),
800+ },
801+ {
802+ "Registration" ,
803+ & RegistrationCertificate {
804+ CertType : uint (CertificateTypeRegistration ),
805+ },
806+ uint (CertificateTypeRegistration ),
807+ },
808+ {
809+ "Deregistration" ,
810+ & DeregistrationCertificate {
811+ CertType : uint (CertificateTypeDeregistration ),
812+ },
813+ uint (CertificateTypeDeregistration ),
814+ },
815+ {
816+ "VoteDelegation" ,
817+ & VoteDelegationCertificate {
818+ CertType : uint (CertificateTypeVoteDelegation ),
819+ },
820+ uint (CertificateTypeVoteDelegation ),
821+ },
822+ {
823+ "StakeVoteDelegation" ,
824+ & StakeVoteDelegationCertificate {
825+ CertType : uint (CertificateTypeStakeVoteDelegation ),
826+ },
827+ uint (CertificateTypeStakeVoteDelegation ),
828+ },
829+ {
830+ "StakeRegistrationDelegation" ,
831+ & StakeRegistrationDelegationCertificate {
832+ CertType : uint (CertificateTypeStakeRegistrationDelegation ),
833+ },
834+ uint (CertificateTypeStakeRegistrationDelegation ),
835+ },
836+ {
837+ "VoteRegistrationDelegation" ,
838+ & VoteRegistrationDelegationCertificate {
839+ CertType : uint (CertificateTypeVoteRegistrationDelegation ),
840+ },
841+ uint (CertificateTypeVoteRegistrationDelegation ),
842+ },
843+ {
844+ "StakeVoteRegistrationDelegation" ,
845+ & StakeVoteRegistrationDelegationCertificate {
846+ CertType : uint (CertificateTypeStakeVoteRegistrationDelegation ),
847+ },
848+ uint (CertificateTypeStakeVoteRegistrationDelegation ),
849+ },
850+ {
851+ "AuthCommitteeHot" ,
852+ & AuthCommitteeHotCertificate {
853+ CertType : uint (CertificateTypeAuthCommitteeHot ),
854+ },
855+ uint (CertificateTypeAuthCommitteeHot ),
856+ },
857+ {
858+ "ResignCommitteeCold" ,
859+ & ResignCommitteeColdCertificate {
860+ CertType : uint (CertificateTypeResignCommitteeCold ),
861+ },
862+ uint (CertificateTypeResignCommitteeCold ),
863+ },
864+ {
865+ "RegistrationDrep" ,
866+ & RegistrationDrepCertificate {
867+ CertType : uint (CertificateTypeRegistrationDrep ),
868+ },
869+ uint (CertificateTypeRegistrationDrep ),
870+ },
871+ {
872+ "DeregistrationDrep" ,
873+ & DeregistrationDrepCertificate {
874+ CertType : uint (CertificateTypeDeregistrationDrep ),
875+ },
876+ uint (CertificateTypeDeregistrationDrep ),
877+ },
878+ {
879+ "UpdateDrep" ,
880+ & UpdateDrepCertificate {CertType : uint (CertificateTypeUpdateDrep )},
881+ uint (CertificateTypeUpdateDrep ),
882+ },
883+ {
884+ "LeiosEb" ,
885+ & LeiosEbCertificate {},
886+ uint (CertificateTypeLeiosEb ),
887+ },
888+ }
889+
747890func TestCertificateTypeMethods (t * testing.T ) {
748- tests := []struct {
749- name string
750- cert Certificate
751- expected uint
752- }{
753- {
754- "StakeRegistration" ,
755- & StakeRegistrationCertificate {
756- CertType : uint (CertificateTypeStakeRegistration ),
757- },
758- uint (CertificateTypeStakeRegistration ),
759- },
760- {
761- "StakeDeregistration" ,
762- & StakeDeregistrationCertificate {
763- CertType : uint (CertificateTypeStakeDeregistration ),
764- },
765- uint (CertificateTypeStakeDeregistration ),
766- },
767- {
768- "StakeDelegation" ,
769- & StakeDelegationCertificate {
770- CertType : uint (CertificateTypeStakeDelegation ),
771- },
772- uint (CertificateTypeStakeDelegation ),
773- },
774- {
775- "PoolRegistration" ,
776- & PoolRegistrationCertificate {
777- CertType : uint (CertificateTypePoolRegistration ),
778- },
779- uint (CertificateTypePoolRegistration ),
780- },
781- {
782- "PoolRetirement" ,
783- & PoolRetirementCertificate {CertType : uint (CertificateTypePoolRetirement )},
784- uint (CertificateTypePoolRetirement ),
785- },
786- {
787- "GenesisKeyDelegation" ,
788- & GenesisKeyDelegationCertificate {
789- CertType : uint (CertificateTypeGenesisKeyDelegation ),
790- },
791- uint (CertificateTypeGenesisKeyDelegation ),
792- },
793- {
794- "MoveInstantaneousRewards" ,
795- & MoveInstantaneousRewardsCertificate {
796- CertType : uint (CertificateTypeMoveInstantaneousRewards ),
797- },
798- uint (CertificateTypeMoveInstantaneousRewards ),
799- },
800- {
801- "Registration" ,
802- & RegistrationCertificate {CertType : uint (CertificateTypeRegistration )},
803- uint (CertificateTypeRegistration ),
804- },
805- {
806- "Deregistration" ,
807- & DeregistrationCertificate {CertType : uint (CertificateTypeDeregistration )},
808- uint (CertificateTypeDeregistration ),
809- },
810- {
811- "VoteDelegation" ,
812- & VoteDelegationCertificate {CertType : uint (CertificateTypeVoteDelegation )},
813- uint (CertificateTypeVoteDelegation ),
814- },
815- {
816- "StakeVoteDelegation" ,
817- & StakeVoteDelegationCertificate {
818- CertType : uint (CertificateTypeStakeVoteDelegation ),
819- },
820- uint (CertificateTypeStakeVoteDelegation ),
821- },
822- {
823- "StakeRegistrationDelegation" ,
824- & StakeRegistrationDelegationCertificate {
825- CertType : uint (CertificateTypeStakeRegistrationDelegation ),
826- },
827- uint (CertificateTypeStakeRegistrationDelegation ),
828- },
829- {
830- "VoteRegistrationDelegation" ,
831- & VoteRegistrationDelegationCertificate {
832- CertType : uint (CertificateTypeVoteRegistrationDelegation ),
833- },
834- uint (CertificateTypeVoteRegistrationDelegation ),
835- },
836- {
837- "StakeVoteRegistrationDelegation" ,
838- & StakeVoteRegistrationDelegationCertificate {
839- CertType : uint (CertificateTypeStakeVoteRegistrationDelegation ),
840- },
841- uint (CertificateTypeStakeVoteRegistrationDelegation ),
842- },
843- {
844- "AuthCommitteeHot" ,
845- & AuthCommitteeHotCertificate {
846- CertType : uint (CertificateTypeAuthCommitteeHot ),
847- },
848- uint (CertificateTypeAuthCommitteeHot ),
849- },
850- {
851- "ResignCommitteeCold" ,
852- & ResignCommitteeColdCertificate {
853- CertType : uint (CertificateTypeResignCommitteeCold ),
854- },
855- uint (CertificateTypeResignCommitteeCold ),
856- },
857- {
858- "RegistrationDrep" ,
859- & RegistrationDrepCertificate {
860- CertType : uint (CertificateTypeRegistrationDrep ),
861- },
862- uint (CertificateTypeRegistrationDrep ),
863- },
864- {
865- "DeregistrationDrep" ,
866- & DeregistrationDrepCertificate {
867- CertType : uint (CertificateTypeDeregistrationDrep ),
868- },
869- uint (CertificateTypeDeregistrationDrep ),
870- },
871- {
872- "UpdateDrep" ,
873- & UpdateDrepCertificate {CertType : uint (CertificateTypeUpdateDrep )},
874- uint (CertificateTypeUpdateDrep ),
875- },
876- }
891+ tests := certificateTypeTests
877892
878893 for _ , tt := range tests {
879894 t .Run (tt .name , func (t * testing.T ) {
@@ -889,3 +904,53 @@ func TestCertificateTypeMethods(t *testing.T) {
889904 })
890905 }
891906}
907+
908+ // TestCertificateTypeCoverage ensures all CertificateType constants are tested
909+ func TestCertificateTypeCoverage (t * testing.T ) {
910+ // Get all CertificateType constants via reflection
911+ certTypeType := reflect .TypeOf (CertificateTypeStakeRegistration )
912+ if certTypeType .Kind () != reflect .Uint {
913+ t .Fatalf ("CertificateType is not uint, got %s" , certTypeType .Kind ())
914+ }
915+
916+ // Collect all constants from the test table
917+ testedTypes := make (map [uint ]bool )
918+ for _ , tt := range certificateTypeTests {
919+ testedTypes [tt .expected ] = true
920+ }
921+
922+ // Check that we have at least one test for each known certificate type constant
923+ // This is a best-effort check - if new constants are added, this test will need updating
924+ expectedTypes := map [uint ]string {
925+ uint (CertificateTypeStakeRegistration ): "CertificateTypeStakeRegistration" ,
926+ uint (CertificateTypeStakeDeregistration ): "CertificateTypeStakeDeregistration" ,
927+ uint (CertificateTypeStakeDelegation ): "CertificateTypeStakeDelegation" ,
928+ uint (CertificateTypePoolRegistration ): "CertificateTypePoolRegistration" ,
929+ uint (CertificateTypePoolRetirement ): "CertificateTypePoolRetirement" ,
930+ uint (CertificateTypeGenesisKeyDelegation ): "CertificateTypeGenesisKeyDelegation" ,
931+ uint (CertificateTypeMoveInstantaneousRewards ): "CertificateTypeMoveInstantaneousRewards" ,
932+ uint (CertificateTypeRegistration ): "CertificateTypeRegistration" ,
933+ uint (CertificateTypeDeregistration ): "CertificateTypeDeregistration" ,
934+ uint (CertificateTypeVoteDelegation ): "CertificateTypeVoteDelegation" ,
935+ uint (CertificateTypeStakeVoteDelegation ): "CertificateTypeStakeVoteDelegation" ,
936+ uint (CertificateTypeStakeRegistrationDelegation ): "CertificateTypeStakeRegistrationDelegation" ,
937+ uint (CertificateTypeVoteRegistrationDelegation ): "CertificateTypeVoteRegistrationDelegation" ,
938+ uint (CertificateTypeStakeVoteRegistrationDelegation ): "CertificateTypeStakeVoteRegistrationDelegation" ,
939+ uint (CertificateTypeAuthCommitteeHot ): "CertificateTypeAuthCommitteeHot" ,
940+ uint (CertificateTypeResignCommitteeCold ): "CertificateTypeResignCommitteeCold" ,
941+ uint (CertificateTypeRegistrationDrep ): "CertificateTypeRegistrationDrep" ,
942+ uint (CertificateTypeDeregistrationDrep ): "CertificateTypeDeregistrationDrep" ,
943+ uint (CertificateTypeUpdateDrep ): "CertificateTypeUpdateDrep" ,
944+ uint (CertificateTypeLeiosEb ): "CertificateTypeLeiosEb" ,
945+ }
946+
947+ for certType , name := range expectedTypes {
948+ if ! testedTypes [certType ] {
949+ t .Errorf (
950+ "Certificate type %s (value %d) is not covered by TestCertificateTypeMethods" ,
951+ name ,
952+ certType ,
953+ )
954+ }
955+ }
956+ }
0 commit comments