Пример #1
0
        private void EnumeratorTest(IIndexedVector <string, VectorMember <string> > vector)
        {
            int i = 0;

            foreach (var item in vector)
            {
                Assert.AreEqual(item.Key, i.ToString());
                Assert.AreEqual(item.Value.Key, i.ToString());
                i++;
            }

            var keys = new HashSet <string>(this.stringKeys);

            Assert.AreEqual(vector.Count, keys.Count);
            foreach (string key in keys)
            {
                Assert.IsTrue(vector.ContainsKey(key));
            }

            foreach (var kvp in vector)
            {
                Assert.IsTrue(vector.ContainsKey(kvp.Key));
                Assert.IsTrue(vector.TryGetValue(kvp.Key, out var value));
                Assert.AreEqual(kvp.Key, value.Key);

                keys.Remove(value.Key);
            }

            Assert.AreEqual(0, keys.Count);
        }
Пример #2
0
    public FlatSharpAttributes(IIndexedVector <string, Schema.KeyValue>?attrs)
    {
        this.parsed        = new();
        this.rawAttributes = attrs ?? new IndexedVector <string, Schema.KeyValue>();

        foreach (var unsupported in MetadataKeys.UnsupportedStandardAttributes)
        {
            if (this.rawAttributes.ContainsKey(unsupported))
            {
                ErrorContext.Current.RegisterError($"FlatSharp does not support the '{unsupported}' attribute.");
            }
        }
    }
Пример #3
0
    public static IIndexedVector <TKey, TValue>?Clone <TKey, TValue>(IIndexedVector <TKey, TValue>?source, Func <TValue, TValue> cloneItem)
        where TKey : notnull
        where TValue : class
    {
        if (source is null)
        {
            return(null);
        }

        IndexedVector <TKey, TValue> vector = new IndexedVector <TKey, TValue>(source.Count);

        foreach (var pair in source)
        {
            var item = cloneItem(pair.Value);
            vector.Add(item);
        }

        return(vector);
    }
Пример #4
0
 public static IIndexedVector <TKey, TValue> Clone <TKey, TValue>(
     this IIndexedVector <TKey, TValue> source,
     Func <TValue, TValue> valueClone) where TValue : class
 {
     return(new IndexedVector <TKey, TValue>(source.Select(x => valueClone(x.Value)), source.Count, mutable: false));
 }