private TSource[] LazyToArray() { Debug.Assert(GetCount(onlyIfCheap: true) == -1); var builder = new LargeArrayBuilder <TSource>(initialize: true); if (!_appending) { builder.SlowAdd(_item); } builder.AddRange(_source); if (_appending) { builder.SlowAdd(_item); } return(builder.ToArray()); }
public void AddCountAndToArray(IEnumerable <T> seed) { var builder1 = new LargeArrayBuilder <T>(initialize: true); var builder2 = new LargeArrayBuilder <T>(initialize: true); int count = 0; foreach (T item in seed) { count++; builder1.Add(item); builder2.SlowAdd(item); // Verify SlowAdd has exactly the same effect as Add. Assert.Equal(count, builder1.Count); Assert.Equal(count, builder2.Count); Assert.Equal(seed.Take(count), builder1.ToArray()); Assert.Equal(seed.Take(count), builder2.ToArray()); } }