Exemple #1
0
        /*void TestR3()
         * {
         *      //----------< Demonstrating adding and removing of elements >-----------
         *      "Demonstrating Requirement #3".title();
         *      WriteLine();
         *      "Adding <int, string> elements".title('-');
         *      DBElement<int, string> elem = new DBElement<int, string>();
         *      elem.name = "Element 1";
         *      elem.descr = "Test Element (int, string)";
         *      elem.timeStamp = DateTime.Now;
         *      elem.children.AddRange(new List<int> { 1, 2, 3 });
         *      elem.payload = "Element 1's payload. (string)";
         *      WriteLine(elem.showElement());
         *      bool p1 = db.insert(1, elem);
         *      WriteLine();
         *      DBElement<int, string> elem1 = new DBElement<int, string>();
         *      elem1.name = "Element 2";
         *      elem1.descr = "Again <int, string> but no children!";
         *      elem1.timeStamp = DateTime.Now;
         *      elem1.children.Clear();
         *      elem1.payload = "Element 2's payload. (string)";
         *      WriteLine(elem1.showElement());
         *      bool p2 = db.insert(2, elem1);
         *      WriteLine();
         *      DBElement<int, string> elem2 = new DBElement<int, string>();
         *      elem2.name = "Element 3";
         *      elem2.descr = "Test Element <int, string>. Different timeStamp.";
         *      elem2.children.AddRange(new List<int> { 1, 2, 3 });
         *      elem2.timeStamp = DateTime.UtcNow;
         *      elem2.payload = "Element 3's payload. (string)";
         *      WriteLine(elem2.showElement());
         *      WriteLine();
         *      bool p3 = db.insert(3, elem2);
         *      "Adding <string, List<string>> elements".title('-');
         *      DBElement<string, List<string>> newelem = new DBElement<string, List<string>>();
         *      newelem.name = "New elem";
         *      newelem.descr = "Element 4. <string, List<string>>";
         *      newelem.timeStamp = DateTime.Now;
         *      newelem.children.AddRange(new List<string> { "one", "two", "three" });
         *      newelem.payload = new List<string> { "one", "two", "three" };
         *      Write(newelem.showElement<string, List<string>, string>());
         *      bool p4 = dbLOS.insert("Four", newelem);
         *      Console.WriteLine("\n\nInserting elements... ");
         *      if (p1 && p2 && p3 && p4)
         *              Console.WriteLine("All inserts succeeded");
         *      else
         *              Console.WriteLine("\n\nAt Least one insert failed");
         *      "Database".title('-');
         *      db.show<int, DBElement<int, string>, string>();
         *      dbLOS.show<string, DBElement<string, List<string>>, List<string>, string>();
         *      WriteLine();
         *      "Removing elements".title();
         *      DBElement<int, string> pay = new DBElement<int, string>();
         *      db.remove(1, out pay);
         *      Console.Write("\n\nRemoved element: {0}", pay.name);
         *      WriteLine();
         *      db.remove(2, out pay);
         *      Console.Write("\n\nRemoved element: {0}", pay.name);
         *      WriteLine();
         *      db.remove(3, out pay);
         *      Console.Write("\n\nRemoved element: {0}", pay.name);
         *      WriteLine();
         *      "Database".title();
         *      db.show<int, DBElement<int, string>, string>();
         *      dbLOS.show<string, DBElement<string, List<string>>, List<string>, string>();
         *      WriteLine();
         * }*/
        void TestR4()
        {
            //----------< Demonstrating editing of items >-------------
            "Demonstrating Requirement #4".title();
            WriteLine();
            "Editing an item".title();
            "Old Database".title();
            db.show <int, DBElement <int, string>, string>();
            dbLOS.show <string, DBElement <string, List <string> >, List <string>, string>();
            WriteLine();
            DBElement <string, List <string> > editElement = new DBElement <string, List <string> >();

            dbLOS.getValue("Four", out editElement);
            editElement.name      = "Element 4 (edited)";
            editElement.descr     = "New description";
            editElement.timeStamp = DateTime.Now;
            editElement.children.Clear();
            editElement.children.Add("five");
            editElement.payload = new List <string> {
                "four", "five", "six"
            };
            editElement.payload.Add("eight");
            dbLOS.insert("Four", editElement);
            "New Database".title();
            db.show <int, DBElement <int, string>, string>();
            dbLOS.show <string, DBElement <string, List <string> >, List <string>, string>();
            WriteLine();
        }
        static void Main(string[] args)
        {
            Write("\n --- Test specific key query ---");
            Write("\n ---Database contents");
            DBElement <int, string> elem1 = new DBElement <int, string>();

            elem1.descr     = "payload desxription";
            elem1.name      = "element 1";
            elem1.timeStamp = DateTime.Now;
            elem1.payload   = "a payload";

            WriteLine();

            DBElement <int, string> elem2 = new DBElement <int, string>("Darth Vader", "Evil Overlord");

            elem2.descr     = "star war 2";
            elem2.name      = "element 2";
            elem2.timeStamp = new DateTime(2015, 9, 10, 12, 30, 1);
            elem2.payload   = "The Empire strikes back!";

            WriteLine();

            var elem3 = new DBElement <int, string>("Luke Skywalker", "Young HotShot");

            elem3.name      = "fight";
            elem3.descr     = "star war 3";
            elem3.timeStamp = new DateTime(2015, 10, 2, 8, 0, 0);
            elem3.children  = new List <int> {
                1, 2, 3
            };
            elem3.payload = "X-Wing fighter in swamp - Oh oh!";

            WriteLine();
            int        key    = 0;
            Func <int> keyGen = () => { ++key; return(key); };  // anonymous function to generate keys

            DBEngine <int, DBElement <int, string> > db = new DBEngine <int, DBElement <int, string> >();
            bool p1 = db.insert(keyGen(), elem1);
            bool p2 = db.insert(keyGen(), elem2);
            bool p3 = db.insert(keyGen(), elem3);

            db.show <int, DBElement <int, string>, string>();
            WriteLine();

            Write("\n --- Test creation of immutable database ---");
            Write("\n --- create database for elements which contain \"element\" in metadata ---");
            QueryEngine <int, string> query       = new QueryEngine <int, string>(db);
            Func <int, bool>          defineQuery = query.defineStringQuery("element");
            List <int> keyCollection;
            bool       result = query.processQuery(defineQuery, out keyCollection);
            immutableDB <int, DBElement <int, string> > imdb = new immutableDB <int, DBElement <int, string> >(db, keyCollection);

            imdb.ImmutableDB.showDB();
            WriteLine();
        }
Exemple #3
0
        // test write DBEngine<int,DBElement<int,string>> to xml
        static void TestWriteToXML()
        {
            Write("\n ---convert database content to XML ---");
            DBElement <int, string> elem1 = new DBElement <int, string>();

            elem1.descr     = "payload desxription";
            elem1.name      = "element 1";
            elem1.timeStamp = DateTime.Now;
            elem1.payload   = "a payload";

            WriteLine();

            DBElement <int, string> elem2 = new DBElement <int, string>("Darth Vader", "Evil Overlord");

            elem2.descr     = "star war 2";
            elem2.name      = "element 2";
            elem2.timeStamp = new DateTime(2015, 9, 10, 12, 30, 1);
            elem2.payload   = "The Empire strikes back!";

            WriteLine();

            var elem3 = new DBElement <int, string>("Luke Skywalker", "Young HotShot");

            elem3.name      = "element 3";
            elem3.descr     = "star war 3";
            elem3.timeStamp = new DateTime(2015, 10, 2, 8, 0, 0);
            elem3.children  = new List <int> {
                1, 2, 3
            };
            elem3.payload = "X-Wing fighter in swamp - Oh oh!";

            WriteLine();
            int        key    = 0;
            Func <int> keyGen = () => { ++key; return(key); };  // anonymous function to generate keys

            DBEngine <int, DBElement <int, string> > db = new DBEngine <int, DBElement <int, string> >();
            bool p1 = db.insert(keyGen(), elem1);
            bool p2 = db.insert(keyGen(), elem2);
            bool p3 = db.insert(keyGen(), elem3);

            db.show <int, DBElement <int, string>, string>();
            WriteLine();
            IntAndString test = new IntAndString(db);

            test.writeToXML("DatabaseContent.xml");
            Write("\n XML file has been created in ./bin/Debug");
        }
Exemple #4
0
        static void Main(string[] args)
        {
            "Testing DBExtensions Package".title('=');
            WriteLine();

            Write("\n --- Test DBElement<int,string> ---");
            DBElement <int, string> elem1 = new DBElement <int, string>();

            elem1.payload = "a payload";
            Write(elem1.showElement <int, string>());

            DBEngine <int, DBElement <int, string> > dbs = new DBEngine <int, DBElement <int, string> >();

            dbs.insert(1, elem1);
            dbs.show <int, DBElement <int, string>, string>();
            WriteLine();

            Write("\n --- Test DBElement<string,List<string>> ---");
            DBElement <string, List <string> > newelem1 = new DBElement <string, List <string> >();

            newelem1.name     = "newelem1";
            newelem1.descr    = "test new type";
            newelem1.children = new List <string> {
                "Key1", "Key2"
            };
            newelem1.payload = new List <string> {
                "one", "two", "three"
            };
            Write(newelem1.showElement <string, List <string>, string>());

            DBEngine <string, DBElement <string, List <string> > > dbe = new DBEngine <string, DBElement <string, List <string> > >();

            dbe.insert("key1", newelem1);
            dbe.show <string, DBElement <string, List <string> >, List <string>, string>();

            Write("\n\n");
        }
Exemple #5
0
        static void Main(string[] args)
        {
            "Testing DBEngine Package".title('=');
            WriteLine();

            Write("\n --- Test DBElement<int,string> ---");
            DBElement <int, string> elem1 = new DBElement <int, string>();

            elem1.payload = "a payload";
            Write(elem1.showElement <int, string>());
            WriteLine();

            DBElement <int, string> elem2 = new DBElement <int, string>("Darth Vader", "Evil Overlord");

            elem2.payload = "The Empire strikes back!";
            Write(elem2.showElement <int, string>());
            WriteLine();

            var elem3 = new DBElement <int, string>("Luke Skywalker", "Young HotShot");

            elem3.children.AddRange(new List <int> {
                1, 5, 23
            });
            elem3.payload = "X-Wing fighter in swamp - Oh oh!";
            Write(elem3.showElement <int, string>());
            WriteLine();

            Write("\n --- Test DBEngine<int,DBElement<int,string>> ---");

            int        key    = 0;
            Func <int> keyGen = () => { ++key; return(key); };  // anonymous function to generate keys

            DBEngine <int, DBElement <int, string> > db = new DBEngine <int, DBElement <int, string> >();
            bool p1 = db.insert(keyGen(), elem1);
            bool p2 = db.insert(keyGen(), elem2);
            bool p3 = db.insert(keyGen(), elem3);

            if (p1 && p2 && p3)
            {
                Write("\n  all inserts succeeded");
            }
            else
            {
                Write("\n  at least one insert failed");
            }
            db.show <int, DBElement <int, string>, string>();
            WriteLine();

            Write("\n --- Test DBElement<string,List<string>> ---");
            DBElement <string, List <string> > newelem1 = new DBElement <string, List <string> >();

            newelem1.name    = "newelem1";
            newelem1.descr   = "test new type";
            newelem1.payload = new List <string> {
                "one", "two", "three"
            };
            Write(newelem1.showElement <string, List <string> >());
            WriteLine();

            Write("\n --- Test DBElement<string,List<string>> ---");
            DBElement <string, List <string> > newerelem1 = new DBElement <string, List <string> >();

            newerelem1.name    = "newerelem1";
            newerelem1.descr   = "better formatting";
            newerelem1.payload = new List <string> {
                "alpha", "beta", "gamma"
            };
            newerelem1.payload.Add("delta");
            newerelem1.payload.Add("epsilon");
            Write(newerelem1.showElement <string, List <string>, string>());
            WriteLine();

            DBElement <string, List <string> > newerelem2 = new DBElement <string, List <string> >();

            newerelem2.name  = "newerelem2";
            newerelem2.descr = "better formatting";
            newerelem1.children.AddRange(new[] { "first", "second" });
            newerelem2.payload = new List <string> {
                "a", "b", "c"
            };
            newerelem2.payload.Add("d");
            newerelem2.payload.Add("e");
            Write(newerelem2.showElement <string, List <string>, string>());
            WriteLine();

            Write("\n --- Test DBEngine<string,DBElement<string,List<string>>> ---");

            int           seed    = 0;
            string        skey    = seed.ToString();
            Func <string> skeyGen = () =>
            {
                ++seed;
                skey = "string" + seed.ToString();
                skey = skey.GetHashCode().ToString();
                return(skey);
            };

            DBEngine <string, DBElement <string, List <string> > > newdb = new DBEngine <string, DBElement <string, List <string> > >();

            newdb.insert(skeyGen(), newerelem1);
            newdb.insert(skeyGen(), newerelem2);
            newdb.show <string, DBElement <string, List <string> >, List <string>, string>();
            WriteLine();

            "testing edits".title();
            db.show <int, DBElement <int, string>, string>();
            DBElement <int, string> editElement = new DBElement <int, string>();

            db.getValue(1, out editElement);
            editElement.showElement <int, string>();
            editElement.name  = "editedName";
            editElement.descr = "editedDescription";
            db.show <int, DBElement <int, string>, string>();
            WriteLine();
            Write("\n\n");

            "testing removal".title();
            db.show <int, DBElement <int, string>, string>();
            DBElement <int, string> pay = new DBElement <int, string>();

            db.remove(1, out pay);
            Console.Write("\n\nRemoved element: {0}", pay.name);
            WriteLine();
            newdb.show <string, DBElement <string, List <string> >, List <string>, string>();
            db.show <int, DBElement <int, string>, string>();
            Write("\n\n");
        }
Exemple #6
0
        private string pathnameLOS = "";    // they can be reused later.
        static void Main(string[] args)
        {
            PersistEngine      pe  = new PersistEngine();
            TEST_PERSISTENGINE pet = new TEST_PERSISTENGINE();
            DBEngine <int, DBElement <int, string> > db = new DBEngine <int, DBElement <int, string> >();
            DBEngine <string, DBElement <string, List <string> > > dbLOS = new DBEngine <string, DBElement <string, List <string> > >();
            DBElement <int, string>            elem    = new DBElement <int, string>();
            DBElement <string, List <string> > elemLOS = new DBElement <string, List <string> >();

            //Adding DBElement<int, string>
            elem.name      = "name";
            elem.descr     = "descr";
            elem.timeStamp = DateTime.Now;
            elem.children.AddRange(new List <int>()
            {
                1, 2, 3
            });
            elem.payload = "hello";
            db.insert(0, elem);
            DBElement <int, string> elem1 = new DBElement <int, string>();

            elem1.name  = "name1";
            elem1.descr = "descr1";
            elem1.children.AddRange(new List <int>()
            {
                1, 2, 3
            });
            elem1.timeStamp = DateTime.Now;
            elem1.payload   = "hello1";
            db.insert(1, elem1);
            //Adding DBElement<string, List<string>>
            elemLOS.name    = "name2";
            elemLOS.descr   = "descr2";
            elem.timeStamp  = DateTime.Now;
            elemLOS.payload = new List <string>()
            {
                "hello", "world"
            };
            dbLOS.insert("Two", elemLOS);
            elemLOS           = new DBElement <string, List <string> >();
            elemLOS.name      = "name3";
            elemLOS.descr     = "descr3";
            elemLOS.timeStamp = DateTime.Now;
            elemLOS.children.AddRange(new List <string>()
            {
                "One", "Two", "Three"
            });
            elemLOS.payload = new List <string>()
            {
                "fee", "foo", "bar"
            };
            dbLOS.insert("Three", elemLOS);
            pe.XMLWrite(db, out pet.pathname);
            pe.XMLWriteLOS(dbLOS, out pet.pathnameLOS);
            WriteLine("\n{0}", XDocument.Load(pet.pathname).ToString());
            WriteLine("\n{0}", XDocument.Load(pet.pathnameLOS).ToString());
            pe.XMLRestore("../../xmlRestore.xml", db);
            db.show <int, DBElement <int, string>, string>();
            pe.XMLRestoreLOS("../../xmlRestoreLOS.xml", dbLOS);
            dbLOS.show <string, DBElement <string, List <string> >, List <string>, string>();
        }
 public static void showEnumerableDB(this DBEngine <string, DBElement <string, List <string> > > db)
 {
     db.show <string, DBElement <string, List <string> >, List <string>, string>();
 }
 public static void showDB(this DBEngine <int, DBElement <int, string> > db)
 {
     db.show <int, DBElement <int, string>, string>();
 }
        static void Main(string[] args)
        {
            Write("\n --- Test specific key query ---");
            Write("\n ---Database contents");

            DBElement <int, string> elem1 = new DBElement <int, string>();

            elem1.descr     = "payload desxription";
            elem1.name      = "element 1";
            elem1.timeStamp = DateTime.Now;
            elem1.payload   = "a payload";

            WriteLine();

            DBElement <int, string> elem2 = new DBElement <int, string>("Darth Vader", "Evil Overlord");

            elem2.descr     = "star war 2";
            elem2.name      = "element 2";
            elem2.timeStamp = new DateTime(2015, 9, 10, 12, 30, 1);
            elem2.payload   = "The Empire strikes back!";

            WriteLine();

            var elem3 = new DBElement <int, string>("Luke Skywalker", "Young HotShot");

            elem3.name      = "element 3";
            elem3.descr     = "star war 3";
            elem3.timeStamp = new DateTime(2015, 10, 2, 8, 0, 0);
            elem3.children  = new List <int> {
                1, 2, 3
            };
            elem3.payload = "X-Wing fighter in swamp - Oh oh!";

            WriteLine();
            int        key    = 0;
            Func <int> keyGen = () => { ++key; return(key); };  // anonymous function to generate keys

            DBEngine <int, DBElement <int, string> > db = new DBEngine <int, DBElement <int, string> >();
            bool p1 = db.insert(keyGen(), elem1);
            bool p2 = db.insert(keyGen(), elem2);
            bool p3 = db.insert(keyGen(), elem3);

            db.show <int, DBElement <int, string>, string>();
            QueryEngine <int, string> QETest = new QueryEngine <int, string>(db);

            WriteLine();

            Write("\n --- Query element which key=2");
            QueryEngine <int, string> query = new QueryEngine <int, string>(db);
            DBElement <int, string>   elem;
            bool valQuery = query.KeyQuery(2, out elem);

            if (valQuery)
            {
                Write("\n  This element exist");
            }
            Write(elem.showElement <int, string>());
            WriteLine();

            Write("\n --- Test queries for children of a specified key ---");
            Write("\n --- Query for children of element which key=3 ---");
            List <int> children;
            bool       childQuery = query.queryChildren(3, out children);

            if (childQuery)
            {
                Write("\n  This element has child");
            }
            foreach (var child in children)
            {
                Write("\n Key of child: {0}", child.ToString());
            }
            WriteLine();

            Write("\n --- Test all keys that contain a specified string in their metadata section---");
            Write("\n --- query for \"star war\" in metadata, return keys ---");

            Func <int, bool> stringTest = QETest.defineStringQuery("star war");
            List <int>       keyCollection;
            bool             stringQuery = QETest.processQuery(stringTest, out keyCollection);

            foreach (var k in keyCollection)
            {
                Write("\n Key: {0}", k.ToString());
            }
            WriteLine();

            WriteLine("\n --- Test query according to a specified time-date interval ---");
            DateTime         time1 = new DateTime(2015, 10, 1, 0, 0, 0);
            DateTime         time2 = new DateTime(2015, 10, 2, 11, 0, 0);
            List <int>       timeCollection;
            Func <int, bool> timeTest   = QETest.defineTimeQuery(time1, time2);
            bool             timeResult = QETest.processQuery(timeTest, out timeCollection);

            foreach (var k in timeCollection)
            {
                WriteLine("key in specific time interval: {0}", k.ToString());
            }
            WriteLine();
            WriteLine("--- When time is not provided ---");
            DateTime time3 = new DateTime();

            timeTest = QETest.defineTimeQuery(time1, time3);
            bool timeQuery2 = QETest.processQuery(timeTest, out timeCollection);

            foreach (var k in timeCollection)
            {
                WriteLine("key in specific time interval: {0}", k.ToString());
            }
            WriteLine();
        }
Exemple #10
0
 void TestR3()
 {
     //----------< Demonstrating adding and removing of elements >-----------
     "Demonstrating Requirement #3".title();
     WriteLine();
     "Adding <int, string> elements".title('-');
     DBElement<int, string> elem = new DBElement<int, string>();
     elem.name = "Element 1";
     elem.descr = "Test Element (int, string)";
     elem.timeStamp = DateTime.Now;
     elem.children.AddRange(new List<int> { 1, 2, 3 });
     elem.payload = "Element 1's payload. (string)";
     WriteLine(elem.showElement());
     bool p1 = db.insert(1, elem);
     WriteLine();
     DBElement<int, string> elem1 = new DBElement<int, string>();
     elem1.name = "Element 2";
     elem1.descr = "Again <int, string> but no children!";
     elem1.timeStamp = DateTime.Now;
     elem1.children.Clear();
     elem1.payload = "Element 2's payload. (string)";
     WriteLine(elem1.showElement());
     bool p2 = db.insert(2, elem1);
     WriteLine();
     DBElement<int, string> elem2 = new DBElement<int, string>();
     elem2.name = "Element 3";
     elem2.descr = "Test Element <int, string>. Different timeStamp.";
     elem2.children.AddRange(new List<int> { 1, 2, 3 });
     elem2.timeStamp = DateTime.UtcNow;
     elem2.payload = "Element 3's payload. (string)";
     WriteLine(elem2.showElement());
     WriteLine();
     bool p3 = db.insert(3, elem2);
     "Adding <string, List<string>> elements".title('-');
     DBElement<string, List<string>> newelem = new DBElement<string, List<string>>();
     newelem.name = "New elem";
     newelem.descr = "Element 4. <string, List<string>>";
     newelem.timeStamp = DateTime.Now;
     newelem.children.AddRange(new List<string> { "one", "two", "three" });
     newelem.payload = new List<string> { "one", "two", "three" };
     Write(newelem.showElement<string, List<string>, string>());
     bool p4 = dbLOS.insert("Four", newelem);
     Console.WriteLine("\n\nInserting elements... ");
     if (p1 && p2 && p3 && p4)
         Console.WriteLine("All inserts succeeded");
     else
         Console.WriteLine("\n\nAt Least one insert failed");
     "Database".title('-');
     db.show<int, DBElement<int, string>, string>();
     dbLOS.show<string, DBElement<string, List<string>>, List<string>, string>();
     WriteLine();
     "Removing elements".title();
     DBElement<int, string> pay = new DBElement<int, string>();
     db.remove(1, out pay);
     Console.Write("\n\nRemoved element: {0}", pay.name);
     WriteLine();
     db.remove(2, out pay);
     Console.Write("\n\nRemoved element: {0}", pay.name);
     WriteLine();
     db.remove(3, out pay);
     Console.Write("\n\nRemoved element: {0}", pay.name);
     WriteLine();
     "Database".title();
     db.show<int, DBElement<int, string>, string>();
     dbLOS.show<string, DBElement<string, List<string>>, List<string>, string>();
     WriteLine();
 }