public void AddAndRemovedEntriesFromDictionary() { var storage = new InMemoryStorageEngine(); var os = ObjectStore2.New(storage); var s = new CSet <Person>(); os.Roots.Entangle(s); var peter = new Person { Name = "Peter" }; var ole = new Person { Name = "Ole", Relationship = peter }; s.Add(peter); s.Add(ole); os.Persist(); os = ObjectStore2.Load(storage); s = os.Roots.Find <CSet <Person> >(); s.Count.ShouldBe(2); peter = s.Single(p => p.Name == "Peter"); ole = s.Single(p => p.Name == "Ole"); ole.Relationship.ShouldBe(peter); s.Remove(ole); os.Persist(); os = ObjectStore2.Load(storage); s = os.Roots.Find <CSet <Person> >(); s.Count.ShouldBe(1); peter = s.Single(p => p.Name == "Peter"); s.Add(peter); s.Count.ShouldBe(1); os.Persist(); os = ObjectStore2.Load(storage); s = os.Roots.Find <CSet <Person> >(); s.Count.ShouldBe(1); peter = s.Single(p => p.Name == "Peter"); s.Remove(peter); os.Persist(); os = ObjectStore2.Load(storage); s = os.Roots.Find <CSet <Person> >(); s.Count.ShouldBe(0); }
public void Operator(T next, Action <T> notify) { if (_set.Add(_selector(next))) { notify(next); } }
public CSet Union(CSet aSet) { CSet tempSet = new CSet(); foreach (Object hashObject in data.Keys) { tempSet.Add(this.data[hashObject]); } foreach (Object hashObject in aSet.data.Keys) { if (!(this.data.ContainsKey(hashObject))) { tempSet.Add(aSet.data[hashObject]); } } return(tempSet); }
static void Main() { CSet setA = new CSet(); CSet setB = new CSet(); setA.Add("milk"); setA.Add("eggs"); setA.Add("bacon"); setA.Add("cereal"); setB.Add("bacon"); setB.Add("eggs"); setB.Add("bread"); CSet setC = new CSet(); setC = setA.Union(setB); Console.WriteLine(); Console.WriteLine("A: " + setA.ToString()); Console.WriteLine("B: " + setB.ToString()); Console.WriteLine("A union B: " + setC.ToString()); setC = setA.Intersection(setB); Console.WriteLine("A intersect B: " + setC.ToString()); setC = setA.Difference(setB); Console.WriteLine("A diff B: " + setC.ToString()); setC = setB.Difference(setA); Console.WriteLine("B diff A: " + setC.ToString()); if (setB.isSubset(setA)) { Console.WriteLine("b is a subset of a"); } else { Console.WriteLine("b is not a subset of a"); } Console.ReadKey(); }
public CSet Difference(CSet aSet) { CSet tempSet = new CSet(); foreach (Object hashObject in data.Keys) { if (!(aSet.data.Contains(hashObject))) { tempSet.Add(data[hashObject]); } } return(tempSet); }
public CSet Intersection(CSet aSet) { CSet tempSet = new CSet(); foreach (Object hashObject in data.Keys) { if (aSet.data.Contains(hashObject)) { tempSet.Add(aSet.data[hashObject]); } } return(tempSet); }
static void Main() { CSet setA = new CSet(); CSet setB = new CSet(); setA.Add(1); setA.Add(2); setA.Add(3); setB.Add(2); setB.Add(3); CSet setC = new CSet(); setC = setA.Union(setB); Console.WriteLine(); Console.WriteLine(setA.ToString()); Console.WriteLine(setC.ToString()); setC = setA.Intersection(setB); Console.WriteLine(setC.ToString()); setC = setA.Difference(setB); Console.WriteLine(setC.ToString()); bool flag = setB.isSubset(setA); if (flag) { Console.WriteLine("b is a subset of a"); } else { Console.WriteLine("b is not a subset of a"); } Console.ReadKey(); }
public void EntangleAnonymously(object instance) => _anonymousRoots.Add(instance);
public void Entangle(object persistable) => _roots.Add(persistable);
//--------------------------------------------------------------------------------------------------------------------------------------------- static void Main(string[] args) { const int average = 6; CSet setA = new CSet(); CSet setB = new CSet(); for (int i = 0; i <= average; i++) { setA.Add(i); } for (int i = 5; i <= 10; i++) { setB.Add(i); } CSet.GetInfo(ref setA); Console.WriteLine(setA.ToString()); Console.WriteLine(); int c; CSet.GetCount(out c); Console.WriteLine($"Всего создано объектов: {c}"); Console.WriteLine(setA.ToStringEven()); Console.WriteLine(setA.ToStringUneven()); Console.WriteLine(setA.ToStringNegative()); Console.WriteLine(); CSet.GetInfo(ref setB); Console.WriteLine(setB.ToString()); CSet setC = setA.Union(setB); Console.WriteLine(); Console.WriteLine("множество A объединённо с множеством B: " + setC.ToString()); setC = setA.Intersection(setB); Console.WriteLine("пересечение множества A с множеством B: " + setC.ToString()); setC = setA.Difference(setB); Console.WriteLine("симметрическая разница множества A с множеством B: " + setC.ToString()); setC = setB.Difference(setA); Console.WriteLine("симметрическая разница множества B с множеством A: " + setC.ToString()); if (setB.isSubset(setA)) { Console.WriteLine("множество B является подмножеством множества A !"); } else { Console.WriteLine("множество B не является подмножеством множества A !"); } Console.WriteLine(new string('-', 20)); Console.WriteLine("Сравнение двух множеств..."); if (setA.Equals(setB)) { Console.WriteLine("Множество A равносильно множеству B"); } else { Console.WriteLine("Множество A не равносильно множеству B"); } Console.WriteLine($"\nХэш множества A: {setA.GetHashCode()} \nХэш множества B: {setB.GetHashCode()}"); // Проверка, является ли переменная setA типа CSet Console.WriteLine("\nПроверка, является ли переменная setA типа CSet..."); if (setA is CSet) { Console.WriteLine("Переменная setA имеет тип CSet"); } else { Console.WriteLine("Переменная setA не имеет тип CSet"); } Console.WriteLine(new string('-', 20)); var SET = new CSet("SET", 7); CSet.GetInfo(ref SET); Console.ReadKey(); }