public void CanEnumerateListWhileSomethingChangesIt() { var list = new SlowImmutableList<int>(new[] { 1, 2, 3, 4 }); var enumerator = list.GetEnumerator(); enumerator.MoveNext().ShouldBe(true); var list2 = list.Add(1); Should.NotThrow(() => enumerator.MoveNext().ShouldBe(true)); }
public void RemoveDoesNotAffectOriginalList() { var list = new SlowImmutableList<int>(new[] { 1, 2, 3, 4 }); var list2 = list.Remove(1); list2.Count.ShouldBe(3); list2.ShouldNotContain(1); list.Count.ShouldBe(4); list.ShouldContain(1); }
public void AddDoesNotAffectOriginalList() { var list = new SlowImmutableList<int>(); var list2 = list.Add(1); list2.Count.ShouldBe(1); list2.ShouldContain(1); list.Count.ShouldBe(0); list.ShouldNotContain(1); }