@@ -1796,6 +1796,13 @@ public unsafe T RandGenBytes<T>(System.Random rand) where T : unmanaged
17961796 return t ;
17971797 }
17981798
1799+ // RandGenBytes<bool> yields bools whose byte is neither 0 nor 1, which IL2CPP on ARM64 can
1800+ // compare as unequal even though both print True.
1801+ public bool RandGenBool ( System . Random rand )
1802+ {
1803+ return rand . Next ( 2 ) == 1 ;
1804+ }
1805+
17991806 public FixedString32Bytes RandGenFixedString32 ( System . Random rand )
18001807 {
18011808 var s = new FixedString32Bytes ( ) ;
@@ -1863,6 +1870,11 @@ public string ArrayStr<T>(NativeArray<T> arr) where T : unmanaged
18631870 {
18641871 var idx = rand . Next ( changed2 . Length - 1 ) ;
18651872 var item = generator ( rand ) ;
1873+ // Ensures changed2 differs from original2 when its length matches original2.
1874+ while ( idx < original2 . Length && EqualityComparer < T > . Default . Equals ( item , original2 [ idx ] ) )
1875+ {
1876+ item = generator ( rand ) ;
1877+ }
18661878 changed2 [ idx ] = item ;
18671879 }
18681880
@@ -1940,7 +1952,7 @@ public void WhenSerializingAndDeserializingVeryLargeValueTypeNativeArrayNetworkV
19401952 }
19411953 else if ( testType == typeof ( bool ) )
19421954 {
1943- ( var original , var original2 , var changed , var changed2 ) = GetArarys ( ( rand ) => rand . Next ( 2 ) == 1 ) ;
1955+ ( var original , var original2 , var changed , var changed2 ) = GetArarys ( RandGenBool ) ;
19441956 TestValueTypeNativeArray ( original , changed ) ;
19451957 TestValueTypeNativeArray ( original2 , changed2 ) ;
19461958 }
@@ -2158,6 +2170,11 @@ public string DictionaryStr<TKey, TVal>(Dictionary<TKey, TVal> list)
21582170 {
21592171 var idx = rand . Next ( changed2 . Count - 1 ) ;
21602172 var item = generator ( rand ) ;
2173+ // Ensures changed2 differs from original2 when no elements are added or removed.
2174+ while ( EqualityComparer < T > . Default . Equals ( item , original2 [ idx ] ) )
2175+ {
2176+ item = generator ( rand ) ;
2177+ }
21612178 changed2 [ idx ] = item ;
21622179 }
21632180
@@ -2401,7 +2418,7 @@ public void WhenSerializingAndDeserializingVeryLargeListNetworkVariables_ValuesA
24012418 }
24022419 else if ( testType == typeof ( bool ) )
24032420 {
2404- ( var original , var original2 , var changed , var changed2 ) = GetLists ( RandGenBytes < bool > ) ;
2421+ ( var original , var original2 , var changed , var changed2 ) = GetLists ( RandGenBool ) ;
24052422 TestList ( original , changed ) ;
24062423 TestList ( original2 , changed2 ) ;
24072424 }
@@ -2594,7 +2611,7 @@ public void WhenSerializingAndDeserializingVeryLargeHashSetNetworkVariables_Valu
25942611 }
25952612 else if ( testType == typeof ( bool ) )
25962613 {
2597- ( var original , var original2 , var changed , var changed2 ) = GetHashSets ( RandGenBytes < bool > ) ;
2614+ ( var original , var original2 , var changed , var changed2 ) = GetHashSets ( RandGenBool ) ;
25982615 TestHashSet ( original , changed ) ;
25992616 TestHashSet ( original2 , changed2 ) ;
26002617 }
@@ -2944,27 +2961,27 @@ public void WhenSerializingAndDeserializingVeryLargeDictionaryNetworkVariables_V
29442961 {
29452962 if ( keyType == typeof ( byte ) )
29462963 {
2947- ( var original , var original2 , var changed , var changed2 ) = GetDictionaries ( RandGenBytes < byte > , RandGenBytes < bool > ) ;
2964+ ( var original , var original2 , var changed , var changed2 ) = GetDictionaries ( RandGenBytes < byte > , RandGenBool ) ;
29482965 TestDictionary ( original , changed ) ;
29492966 TestDictionary ( original2 , changed2 ) ;
29502967
29512968 }
29522969 else if ( keyType == typeof ( ulong ) )
29532970 {
2954- ( var original , var original2 , var changed , var changed2 ) = GetDictionaries ( RandGenBytes < ulong > , RandGenBytes < bool > ) ;
2971+ ( var original , var original2 , var changed , var changed2 ) = GetDictionaries ( RandGenBytes < ulong > , RandGenBool ) ;
29552972 TestDictionary ( original , changed ) ;
29562973 TestDictionary ( original2 , changed2 ) ;
29572974 }
29582975 else if ( keyType == typeof ( Vector2 ) )
29592976 {
2960- ( var original , var original2 , var changed , var changed2 ) = GetDictionaries ( ( rand ) => new Vector2 ( ( float ) rand . NextDouble ( ) , ( float ) rand . NextDouble ( ) ) , RandGenBytes < bool > ) ;
2977+ ( var original , var original2 , var changed , var changed2 ) = GetDictionaries ( ( rand ) => new Vector2 ( ( float ) rand . NextDouble ( ) , ( float ) rand . NextDouble ( ) ) , RandGenBool ) ;
29612978 TestDictionary ( original , changed ) ;
29622979 TestDictionary ( original2 , changed2 ) ;
29632980
29642981 }
29652982 else if ( keyType == typeof ( HashMapKeyClass ) )
29662983 {
2967- ( var original , var original2 , var changed , var changed2 ) = GetDictionaries ( ( rand ) => new HashMapKeyClass { Data = RandGenBytes < HashMapKeyStruct > ( rand ) } , RandGenBytes < bool > ) ;
2984+ ( var original , var original2 , var changed , var changed2 ) = GetDictionaries ( ( rand ) => new HashMapKeyClass { Data = RandGenBytes < HashMapKeyStruct > ( rand ) } , RandGenBool ) ;
29682985 TestDictionary ( original , changed ) ;
29692986 TestDictionary ( original2 , changed2 ) ;
29702987 }
@@ -3656,6 +3673,11 @@ public string NativeHashMapStr<TKey, TVal>(NativeHashMap<TKey, TVal> list)
36563673 {
36573674 var idx = rand . Next ( changed2 . Length - 1 ) ;
36583675 var item = generator ( rand ) ;
3676+ // Ensures changed2 differs from original2 when no elements are added or removed.
3677+ while ( EqualityComparer < T > . Default . Equals ( item , original2 [ idx ] ) )
3678+ {
3679+ item = generator ( rand ) ;
3680+ }
36593681 changed2 [ idx ] = item ;
36603682 }
36613683
@@ -3899,7 +3921,7 @@ public void WhenSerializingAndDeserializingVeryLargeValueTypeNativeListNetworkVa
38993921 }
39003922 else if ( testType == typeof ( bool ) )
39013923 {
3902- ( var original , var original2 , var changed , var changed2 ) = GetNativeLists ( RandGenBytes < bool > ) ;
3924+ ( var original , var original2 , var changed , var changed2 ) = GetNativeLists ( RandGenBool ) ;
39033925 TestValueTypeNativeList ( original , changed ) ;
39043926 TestValueTypeNativeList ( original2 , changed2 ) ;
39053927 }
@@ -4088,7 +4110,7 @@ public void WhenSerializingAndDeserializingVeryLargeValueTypeNativeHashSetNetwor
40884110 }
40894111 else if ( testType == typeof ( bool ) )
40904112 {
4091- ( var original , var original2 , var changed , var changed2 ) = GetNativeHashSets ( RandGenBytes < bool > ) ;
4113+ ( var original , var original2 , var changed , var changed2 ) = GetNativeHashSets ( RandGenBool ) ;
40924114 TestValueTypeNativeHashSet ( original , changed ) ;
40934115 TestValueTypeNativeHashSet ( original2 , changed2 ) ;
40944116 }
@@ -4434,27 +4456,27 @@ public void WhenSerializingAndDeserializingVeryLargeValueTypeNativeHashMapNetwor
44344456 {
44354457 if ( keyType == typeof ( byte ) )
44364458 {
4437- ( var original , var original2 , var changed , var changed2 ) = GetMaps ( RandGenBytes < byte > , RandGenBytes < bool > ) ;
4459+ ( var original , var original2 , var changed , var changed2 ) = GetMaps ( RandGenBytes < byte > , RandGenBool ) ;
44384460 TestValueTypeNativeHashMap ( original , changed ) ;
44394461 TestValueTypeNativeHashMap ( original2 , changed2 ) ;
44404462
44414463 }
44424464 else if ( keyType == typeof ( ulong ) )
44434465 {
4444- ( var original , var original2 , var changed , var changed2 ) = GetMaps ( RandGenBytes < ulong > , RandGenBytes < bool > ) ;
4466+ ( var original , var original2 , var changed , var changed2 ) = GetMaps ( RandGenBytes < ulong > , RandGenBool ) ;
44454467 TestValueTypeNativeHashMap ( original , changed ) ;
44464468 TestValueTypeNativeHashMap ( original2 , changed2 ) ;
44474469 }
44484470 else if ( keyType == typeof ( Vector2 ) )
44494471 {
4450- ( var original , var original2 , var changed , var changed2 ) = GetMaps ( ( rand ) => new Vector2 ( ( float ) rand . NextDouble ( ) , ( float ) rand . NextDouble ( ) ) , RandGenBytes < bool > ) ;
4472+ ( var original , var original2 , var changed , var changed2 ) = GetMaps ( ( rand ) => new Vector2 ( ( float ) rand . NextDouble ( ) , ( float ) rand . NextDouble ( ) ) , RandGenBool ) ;
44514473 TestValueTypeNativeHashMap ( original , changed ) ;
44524474 TestValueTypeNativeHashMap ( original2 , changed2 ) ;
44534475
44544476 }
44554477 else if ( keyType == typeof ( HashMapKeyStruct ) )
44564478 {
4457- ( var original , var original2 , var changed , var changed2 ) = GetMaps ( RandGenBytes < HashMapKeyStruct > , RandGenBytes < bool > ) ;
4479+ ( var original , var original2 , var changed , var changed2 ) = GetMaps ( RandGenBytes < HashMapKeyStruct > , RandGenBool ) ;
44584480 TestValueTypeNativeHashMap ( original , changed ) ;
44594481 TestValueTypeNativeHashMap ( original2 , changed2 ) ;
44604482 }
0 commit comments