@@ -444,7 +444,8 @@ public partial record BasicEnum
444444 BasicDataClass U ,
445445 BasicDataStruct V ,
446446 BasicDataRecord W
447- ) > { }
447+ ) >
448+ { }
448449
449450 static readonly Gen < BasicEnum > GenBasicEnum = Gen . SelectMany < int , BasicEnum > (
450451 Gen . Int [ 0 , 7 ] ,
@@ -669,6 +670,7 @@ enum Banana
669670 PisangRaja ,
670671 }
671672
673+
672674 [ Fact ]
673675 public static void EnumSerializationWorks ( )
674676 {
@@ -820,4 +822,37 @@ [new BasicEnum.X(1), null],
820822 ) ;
821823#pragma warning restore CS8625 // Cannot convert null literal to non-nullable reference type.
822824 }
825+
826+ [ Type ]
827+ partial struct ContainsEnum
828+ {
829+ public Banana TheBanana ;
830+ public int BananaCount ;
831+ }
832+
833+ static readonly Gen < ( Banana , int ) > GenContainsEnum = Gen . Select ( Gen . Enum < Banana > ( ) , Gen . Int [ 0 , 3 ] ) ;
834+ static readonly Gen < ( ( Banana , int ) , ( Banana , int ) ) > GenTwoContainsEnum = Gen . Select ( GenContainsEnum , GenContainsEnum ) ;
835+
836+ [ Fact ]
837+ public static void GeneratedEnumEqualsWorks ( )
838+ {
839+ GenTwoContainsEnum . Sample ( example =>
840+ {
841+ var ( ( b1 , c1 ) , ( b2 , c2 ) ) = example ;
842+ var struct1 = new ContainsEnum { TheBanana = b1 , BananaCount = c1 } ;
843+ var struct2 = new ContainsEnum { TheBanana = b2 , BananaCount = c2 } ;
844+
845+ if ( ( b1 , c1 ) == ( b2 , c2 ) )
846+ {
847+ Assert . True ( struct1 . Equals ( struct2 ) ) ;
848+ Assert . Equal ( struct1 , struct2 ) ;
849+ }
850+ else
851+ {
852+ Assert . False ( struct1 . Equals ( struct2 ) ) ;
853+ Assert . NotEqual ( struct1 , struct2 ) ;
854+ }
855+
856+ } , iter : 10_000 ) ;
857+ }
823858}
0 commit comments