@@ -93,6 +93,82 @@ public void Generate_ThrowOnInvalidType()
9393 Assert . Throws < InvalidOperationException > ( ( ) => FastDataGenerator . Generate ( [ DateTime . Now , DateTime . UtcNow ] , new FastDataConfig ( StructureType . Array ) , new DummyGenerator ( ) ) ) ;
9494 }
9595
96+ [ Fact ]
97+ public void Generate_Overloads_String_Work ( )
98+ {
99+ string [ ] keys = [ "a" , "b" , "c" ] ;
100+ int [ ] values = [ 1 , 2 , 3 ] ;
101+
102+ FastDataConfig config = new FastDataConfig ( StructureType . Array ) ;
103+ config . DeduplicationMode = DeduplicationMode . Disabled ;
104+
105+ ContextCaptureGenerator generator = new ContextCaptureGenerator ( ) ;
106+ FastDataGenerator . Generate ( ( ReadOnlyMemory < string > ) keys , config , generator ) ;
107+ AssertKeysOnly ( generator , keys ) ;
108+
109+ generator = new ContextCaptureGenerator ( ) ;
110+ FastDataGenerator . Generate ( keys , config , generator ) ;
111+ AssertKeysOnly ( generator , keys ) ;
112+
113+ generator = new ContextCaptureGenerator ( ) ;
114+ FastDataGenerator . Generate < string > ( ( ReadOnlyMemory < string > ) keys , config , generator ) ;
115+ AssertKeysOnly ( generator , keys ) ;
116+
117+ generator = new ContextCaptureGenerator ( ) ;
118+ FastDataGenerator . GenerateKeyed ( ( ReadOnlyMemory < string > ) keys , ( ReadOnlyMemory < int > ) values , config , generator ) ;
119+ AssertKeysAndValues ( generator , keys , values ) ;
120+
121+ generator = new ContextCaptureGenerator ( ) ;
122+ FastDataGenerator . GenerateKeyed ( keys , values , config , generator ) ;
123+ AssertKeysAndValues ( generator , keys , values ) ;
124+
125+ generator = new ContextCaptureGenerator ( ) ;
126+ FastDataGenerator . GenerateKeyed < string , int > ( ( ReadOnlyMemory < string > ) keys , ( ReadOnlyMemory < int > ) values , config , generator ) ;
127+ AssertKeysAndValues ( generator , keys , values ) ;
128+
129+ generator = new ContextCaptureGenerator ( ) ;
130+ FastDataGenerator . GenerateKeyed ( keys , values , config , generator ) ;
131+ AssertKeysAndValues ( generator , keys , values ) ;
132+ }
133+
134+ [ Fact ]
135+ public void Generate_Overloads_Int32_Work ( )
136+ {
137+ int [ ] keys = [ 1 , 2 , 3 ] ;
138+ string [ ] values = [ "v1" , "v2" , "v3" ] ;
139+
140+ FastDataConfig config = new FastDataConfig ( StructureType . Array ) ;
141+ config . DeduplicationMode = DeduplicationMode . Disabled ;
142+
143+ ContextCaptureGenerator generator = new ContextCaptureGenerator ( ) ;
144+ FastDataGenerator . Generate ( ( ReadOnlyMemory < int > ) keys , config , generator ) ;
145+ AssertKeysOnly ( generator , keys ) ;
146+
147+ generator = new ContextCaptureGenerator ( ) ;
148+ FastDataGenerator . Generate ( keys , config , generator ) ;
149+ AssertKeysOnly ( generator , keys ) ;
150+
151+ generator = new ContextCaptureGenerator ( ) ;
152+ FastDataGenerator . Generate < int > ( ( ReadOnlyMemory < int > ) keys , config , generator ) ;
153+ AssertKeysOnly ( generator , keys ) ;
154+
155+ generator = new ContextCaptureGenerator ( ) ;
156+ FastDataGenerator . GenerateKeyed ( ( ReadOnlyMemory < int > ) keys , ( ReadOnlyMemory < string > ) values , config , generator ) ;
157+ AssertKeysAndValues ( generator , keys , values ) ;
158+
159+ generator = new ContextCaptureGenerator ( ) ;
160+ FastDataGenerator . GenerateKeyed ( keys , values , config , generator ) ;
161+ AssertKeysAndValues ( generator , keys , values ) ;
162+
163+ generator = new ContextCaptureGenerator ( ) ;
164+ FastDataGenerator . GenerateKeyed < int , string > ( ( ReadOnlyMemory < int > ) keys , ( ReadOnlyMemory < string > ) values , config , generator ) ;
165+ AssertKeysAndValues ( generator , keys , values ) ;
166+
167+ generator = new ContextCaptureGenerator ( ) ;
168+ FastDataGenerator . GenerateKeyed < int , string > ( keys , values , config , generator ) ;
169+ AssertKeysAndValues ( generator , keys , values ) ;
170+ }
171+
96172 [ Fact ]
97173 public void GenerateKeyed_HashTablePerfect_ReordersValuesToMatchSlots ( )
98174 {
@@ -208,4 +284,18 @@ public string Generate<TKey, TValue>(GeneratorConfig<TKey> genCfg, IContext<TVal
208284 return string . Empty ;
209285 }
210286 }
211- }
287+
288+ private static void AssertKeysOnly < TKey > ( ContextCaptureGenerator generator , ReadOnlySpan < TKey > keys )
289+ {
290+ ArrayContext < TKey , byte > ctx = Assert . IsType < ArrayContext < TKey , byte > > ( generator . Context ) ;
291+ Assert . True ( ctx . Values . IsEmpty ) ;
292+ Assert . True ( ctx . Keys . Span . SequenceEqual ( keys ) ) ;
293+ }
294+
295+ private static void AssertKeysAndValues < TKey , TValue > ( ContextCaptureGenerator generator , ReadOnlySpan < TKey > keys , ReadOnlySpan < TValue > values )
296+ {
297+ ArrayContext < TKey , TValue > ctx = Assert . IsType < ArrayContext < TKey , TValue > > ( generator . Context ) ;
298+ Assert . True ( ctx . Keys . Span . SequenceEqual ( keys ) ) ;
299+ Assert . True ( ctx . Values . Span . SequenceEqual ( values ) ) ;
300+ }
301+ }
0 commit comments