@@ -1850,6 +1850,13 @@ public unsafe T RandGenBytes<T>(System.Random rand) where T : unmanaged
18501850 return t ;
18511851 }
18521852
1853+ // RandGenBytes<bool> yields bools whose byte is neither 0 nor 1, which IL2CPP on ARM64 can
1854+ // compare as unequal even though both print True.
1855+ public bool RandGenBool ( System . Random rand )
1856+ {
1857+ return rand . Next ( 2 ) == 1 ;
1858+ }
1859+
18531860 public FixedString32Bytes RandGenFixedString32 ( System . Random rand )
18541861 {
18551862 var s = new FixedString32Bytes ( ) ;
@@ -1917,6 +1924,11 @@ public string ArrayStr<T>(NativeArray<T> arr) where T : unmanaged
19171924 {
19181925 var idx = rand . Next ( changed2 . Length - 1 ) ;
19191926 var item = generator ( rand ) ;
1927+ // Ensures changed2 differs from original2 when its length matches original2.
1928+ while ( idx < original2 . Length && EqualityComparer < T > . Default . Equals ( item , original2 [ idx ] ) )
1929+ {
1930+ item = generator ( rand ) ;
1931+ }
19201932 changed2 [ idx ] = item ;
19211933 }
19221934
@@ -1997,7 +2009,7 @@ public void WhenSerializingAndDeserializingVeryLargeValueTypeNativeArrayNetworkV
19972009 }
19982010 else if ( testType == typeof ( bool ) )
19992011 {
2000- ( var original , var original2 , var changed , var changed2 ) = GetArarys ( ( rand ) => rand . Next ( 2 ) == 1 ) ;
2012+ ( var original , var original2 , var changed , var changed2 ) = GetArarys ( RandGenBool ) ;
20012013 TestValueTypeNativeArray ( original , changed ) ;
20022014 TestValueTypeNativeArray ( original2 , changed2 ) ;
20032015 }
@@ -2215,6 +2227,11 @@ public string DictionaryStr<TKey, TVal>(Dictionary<TKey, TVal> list)
22152227 {
22162228 var idx = rand . Next ( changed2 . Count - 1 ) ;
22172229 var item = generator ( rand ) ;
2230+ // Ensures changed2 differs from original2 when no elements are added or removed.
2231+ while ( EqualityComparer < T > . Default . Equals ( item , original2 [ idx ] ) )
2232+ {
2233+ item = generator ( rand ) ;
2234+ }
22182235 changed2 [ idx ] = item ;
22192236 }
22202237
@@ -2461,7 +2478,7 @@ public void WhenSerializingAndDeserializingVeryLargeListNetworkVariables_ValuesA
24612478 }
24622479 else if ( testType == typeof ( bool ) )
24632480 {
2464- ( var original , var original2 , var changed , var changed2 ) = GetLists ( RandGenBytes < bool > ) ;
2481+ ( var original , var original2 , var changed , var changed2 ) = GetLists ( RandGenBool ) ;
24652482 TestList ( original , changed ) ;
24662483 TestList ( original2 , changed2 ) ;
24672484 }
@@ -2657,7 +2674,7 @@ public void WhenSerializingAndDeserializingVeryLargeHashSetNetworkVariables_Valu
26572674 }
26582675 else if ( testType == typeof ( bool ) )
26592676 {
2660- ( var original , var original2 , var changed , var changed2 ) = GetHashSets ( RandGenBytes < bool > ) ;
2677+ ( var original , var original2 , var changed , var changed2 ) = GetHashSets ( RandGenBool ) ;
26612678 TestHashSet ( original , changed ) ;
26622679 TestHashSet ( original2 , changed2 ) ;
26632680 }
@@ -3010,27 +3027,27 @@ public void WhenSerializingAndDeserializingVeryLargeDictionaryNetworkVariables_V
30103027 {
30113028 if ( keyType == typeof ( byte ) )
30123029 {
3013- ( var original , var original2 , var changed , var changed2 ) = GetDictionaries ( RandGenBytes < byte > , RandGenBytes < bool > ) ;
3030+ ( var original , var original2 , var changed , var changed2 ) = GetDictionaries ( RandGenBytes < byte > , RandGenBool ) ;
30143031 TestDictionary ( original , changed ) ;
30153032 TestDictionary ( original2 , changed2 ) ;
30163033
30173034 }
30183035 else if ( keyType == typeof ( ulong ) )
30193036 {
3020- ( var original , var original2 , var changed , var changed2 ) = GetDictionaries ( RandGenBytes < ulong > , RandGenBytes < bool > ) ;
3037+ ( var original , var original2 , var changed , var changed2 ) = GetDictionaries ( RandGenBytes < ulong > , RandGenBool ) ;
30213038 TestDictionary ( original , changed ) ;
30223039 TestDictionary ( original2 , changed2 ) ;
30233040 }
30243041 else if ( keyType == typeof ( Vector2 ) )
30253042 {
3026- ( var original , var original2 , var changed , var changed2 ) = GetDictionaries ( ( rand ) => new Vector2 ( ( float ) rand . NextDouble ( ) , ( float ) rand . NextDouble ( ) ) , RandGenBytes < bool > ) ;
3043+ ( var original , var original2 , var changed , var changed2 ) = GetDictionaries ( ( rand ) => new Vector2 ( ( float ) rand . NextDouble ( ) , ( float ) rand . NextDouble ( ) ) , RandGenBool ) ;
30273044 TestDictionary ( original , changed ) ;
30283045 TestDictionary ( original2 , changed2 ) ;
30293046
30303047 }
30313048 else if ( keyType == typeof ( HashMapKeyClass ) )
30323049 {
3033- ( var original , var original2 , var changed , var changed2 ) = GetDictionaries ( ( rand ) => new HashMapKeyClass { Data = RandGenBytes < HashMapKeyStruct > ( rand ) } , RandGenBytes < bool > ) ;
3050+ ( var original , var original2 , var changed , var changed2 ) = GetDictionaries ( ( rand ) => new HashMapKeyClass { Data = RandGenBytes < HashMapKeyStruct > ( rand ) } , RandGenBool ) ;
30343051 TestDictionary ( original , changed ) ;
30353052 TestDictionary ( original2 , changed2 ) ;
30363053 }
@@ -3722,6 +3739,11 @@ public string NativeHashMapStr<TKey, TVal>(NativeHashMap<TKey, TVal> list)
37223739 {
37233740 var idx = rand . Next ( changed2 . Length - 1 ) ;
37243741 var item = generator ( rand ) ;
3742+ // Ensures changed2 differs from original2 when no elements are added or removed.
3743+ while ( EqualityComparer < T > . Default . Equals ( item , original2 [ idx ] ) )
3744+ {
3745+ item = generator ( rand ) ;
3746+ }
37253747 changed2 [ idx ] = item ;
37263748 }
37273749
@@ -3965,7 +3987,7 @@ public void WhenSerializingAndDeserializingVeryLargeValueTypeNativeListNetworkVa
39653987 }
39663988 else if ( testType == typeof ( bool ) )
39673989 {
3968- ( var original , var original2 , var changed , var changed2 ) = GetNativeLists ( RandGenBytes < bool > ) ;
3990+ ( var original , var original2 , var changed , var changed2 ) = GetNativeLists ( RandGenBool ) ;
39693991 TestValueTypeNativeList ( original , changed ) ;
39703992 TestValueTypeNativeList ( original2 , changed2 ) ;
39713993 }
@@ -4154,7 +4176,7 @@ public void WhenSerializingAndDeserializingVeryLargeValueTypeNativeHashSetNetwor
41544176 }
41554177 else if ( testType == typeof ( bool ) )
41564178 {
4157- ( var original , var original2 , var changed , var changed2 ) = GetNativeHashSets ( RandGenBytes < bool > ) ;
4179+ ( var original , var original2 , var changed , var changed2 ) = GetNativeHashSets ( RandGenBool ) ;
41584180 TestValueTypeNativeHashSet ( original , changed ) ;
41594181 TestValueTypeNativeHashSet ( original2 , changed2 ) ;
41604182 }
@@ -4500,27 +4522,27 @@ public void WhenSerializingAndDeserializingVeryLargeValueTypeNativeHashMapNetwor
45004522 {
45014523 if ( keyType == typeof ( byte ) )
45024524 {
4503- ( var original , var original2 , var changed , var changed2 ) = GetMaps ( RandGenBytes < byte > , RandGenBytes < bool > ) ;
4525+ ( var original , var original2 , var changed , var changed2 ) = GetMaps ( RandGenBytes < byte > , RandGenBool ) ;
45044526 TestValueTypeNativeHashMap ( original , changed ) ;
45054527 TestValueTypeNativeHashMap ( original2 , changed2 ) ;
45064528
45074529 }
45084530 else if ( keyType == typeof ( ulong ) )
45094531 {
4510- ( var original , var original2 , var changed , var changed2 ) = GetMaps ( RandGenBytes < ulong > , RandGenBytes < bool > ) ;
4532+ ( var original , var original2 , var changed , var changed2 ) = GetMaps ( RandGenBytes < ulong > , RandGenBool ) ;
45114533 TestValueTypeNativeHashMap ( original , changed ) ;
45124534 TestValueTypeNativeHashMap ( original2 , changed2 ) ;
45134535 }
45144536 else if ( keyType == typeof ( Vector2 ) )
45154537 {
4516- ( var original , var original2 , var changed , var changed2 ) = GetMaps ( ( rand ) => new Vector2 ( ( float ) rand . NextDouble ( ) , ( float ) rand . NextDouble ( ) ) , RandGenBytes < bool > ) ;
4538+ ( var original , var original2 , var changed , var changed2 ) = GetMaps ( ( rand ) => new Vector2 ( ( float ) rand . NextDouble ( ) , ( float ) rand . NextDouble ( ) ) , RandGenBool ) ;
45174539 TestValueTypeNativeHashMap ( original , changed ) ;
45184540 TestValueTypeNativeHashMap ( original2 , changed2 ) ;
45194541
45204542 }
45214543 else if ( keyType == typeof ( HashMapKeyStruct ) )
45224544 {
4523- ( var original , var original2 , var changed , var changed2 ) = GetMaps ( RandGenBytes < HashMapKeyStruct > , RandGenBytes < bool > ) ;
4545+ ( var original , var original2 , var changed , var changed2 ) = GetMaps ( RandGenBytes < HashMapKeyStruct > , RandGenBool ) ;
45244546 TestValueTypeNativeHashMap ( original , changed ) ;
45254547 TestValueTypeNativeHashMap ( original2 , changed2 ) ;
45264548 }
0 commit comments