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);
        }
Example #2
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);
            }
Example #4
0
    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();
        }