/*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(); }
// 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"); }
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"); }
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"); }
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(); }
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(); }