public static IMultiMap <TKey, TVal> CompositeCtor <TKey, TVal>( MultiMapData <TKey, TVal> d) { var m = new CompositeMultiMap <TKey, TVal>(d.ComparerKey, d.ComparerValue); for (int i = 0; i < d.KeysInitial.Length; i++) { m.Add(d.KeysInitial[i], d.ValuesInitial[i]); } return(m); }
GetFixtureParams <TK, TV, TVCol, TCollection>( MultiMapData <TK, TV> data, string fixtureName) where TVCol : IEnumerable <TV> { return(MultiMapFixtureParamConstructor <TK, TV, TVCol, TCollection> .Construct( (d) => (TCollection)CompositeCtor(d), CtorVCol <TV, TVCol>, ComparerCol <TK, TV, TVCol>, data, Name, fixtureName)); }
ComparerCol <TK, TV, TVCol>(MultiMapData <TK, TV> d) where TVCol : IEnumerable <TV> => new CollectionEqualityComparer <TV, TVCol>(d.ComparerValue);
private static string Validate <TKey, TVal>( MultiMapData <TKey, TVal> d, string name) { string source = nameof(MultiMapDataSource) + "." + name; var sb = new StringBuilder(); NullGuard(sb, d.TestDataName, nameof(MapData <TKey, TVal> .TestDataName), source); NullGuard(sb, d.KeysInitial, nameof(MapData <TKey, TVal> .KeysInitial), source); NullGuard(sb, d.KeysToAdd, nameof(MapData <TKey, TVal> .KeysToAdd), source); NullGuard(sb, d.KeysExcluded, nameof(MapData <TKey, TVal> .KeysExcluded), source); NullGuard(sb, d.ValuesInitial, nameof(MapData <TKey, TVal> .ValuesInitial), source); NullGuard(sb, d.ValuesToAdd, nameof(MapData <TKey, TVal> .ValuesToAdd), source); NullGuard(sb, d.ValuesExcluded, nameof(MapData <TKey, TVal> .ValuesExcluded), source); HasDuplicatesThrow( sb, d.KeysInitial, nameof(MultiMapData <TKey, TVal> .KeysInitial), d.ComparerKey, source); HasDuplicatesThrow( sb, d.KeysToAdd, nameof(MultiMapData <TKey, TVal> .KeysToAdd), d.ComparerKey, source); HasDuplicatesThrow( sb, d.KeysExcluded, nameof(MultiMapData <TKey, TVal> .KeysExcluded), d.ComparerKey, source); LengthDiffersThrow( sb, d.KeysInitial, d.ValuesInitial, nameof(MultiMapData <TKey, TVal> .KeysInitial), nameof(MultiMapData <TKey, TVal> .ValuesInitial), source); LengthDiffersThrow( sb, d.KeysToAdd, d.ValuesToAdd, nameof(MultiMapData <TKey, TVal> .KeysToAdd), nameof(MultiMapData <TKey, TVal> .ValuesToAdd), source); LengthDiffersThrow( sb, d.KeysExcluded, d.ValuesExcluded, nameof(MultiMapData <TKey, TVal> .KeysExcluded), nameof(MultiMapData <TKey, TVal> .ValuesExcluded), source); HasOverlapThrow( sb, d.KeysInitial, d.KeysToAdd, nameof(MultiMapData <TKey, TVal> .KeysInitial), nameof(MultiMapData <TKey, TVal> .KeysToAdd), d.ComparerKey, source); HasOverlapThrow( sb, d.KeysInitial, d.KeysExcluded, nameof(MultiMapData <TKey, TVal> .KeysInitial), nameof(MultiMapData <TKey, TVal> .KeysExcluded), d.ComparerKey, source); HasValueCollectionOverlapThrow( sb, d.ValuesInitial, d.ValuesExcluded, nameof(MultiMapData <TKey, TVal> .ValuesInitial), nameof(MultiMapData <TKey, TVal> .ValuesExcluded), d.ComparerValue, source); BothHaveEmptyCollectionThrow( sb, d.ValuesInitial, d.ValuesExcluded, nameof(MultiMapData <TKey, TVal> .ValuesInitial), nameof(MultiMapData <TKey, TVal> .ValuesExcluded), source); return(sb.ToString()); }