//----< write enumerable db elements out to Console >-------------- public static void showEnumerable <Key, Value, Data, T>(this DBEngine <Key, Value> db) where Data : IEnumerable <T> { foreach (Key key in db.Keys()) { Value value; db.getValue(key, out value); DBElement <Key, Data> elem = value as DBElement <Key, Data>; Write("\n\n -- key = {0} --", key); Write(elem.showEnumerableElement <Key, Data, T>()); } }
static void Main(string[] args) { "Testing DBEngine Package".title('=');; WriteLine(); "Test db of scalar elements".title(); WriteLine(); DBElement <int, string> elem1 = new DBElement <int, string>(); elem1.payload = "a payload"; DBElement <int, string> elem2 = new DBElement <int, string>("Darth Vader", "Evil Overlord"); elem2.payload = "The Empire strikes back!"; var elem3 = new DBElement <int, string>("Luke Skywalker", "Young HotShot"); elem3.payload = "X-Wing fighter in swamp - Oh oh!"; if (verbose) { Write("\n --- Test DBElement<int,string> ---"); WriteLine(); elem1.showElement(); WriteLine(); elem2.showElement(); WriteLine(); elem3.showElement(); WriteLine(); /* ElementFormatter is not ready for prime time yet */ //Write(ElementFormatter.formatElement(elem1.showElement<int, string>(), false)); } Write("\n --- Test DBEngine<int,DBElement<int,string>> ---"); WriteLine(); int key = 0; Func <int> keyGen = () => { ++key; return(key); }; 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.showDB(); WriteLine(); "Test db of enumerable elements".title(); WriteLine(); 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" }; 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"); DBElement <string, List <string> > newerelem2 = new DBElement <string, List <string> >(); newerelem2.name = "newerelem2"; newerelem2.descr = "better formatting"; newerelem2.children.AddRange(new List <string> { "first", "second" }); newerelem2.payload = new List <string> { "a", "b", "c" }; newerelem2.payload.Add("d"); newerelem2.payload.Add("e"); if (verbose) { Write("\n --- Test DBElement<string,List<string>> ---"); WriteLine(); newelem1.showEnumerableElement(); WriteLine(); newerelem1.showEnumerableElement(); WriteLine(); newerelem2.showEnumerableElement(); 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(), newelem1); newdb.insert(skeyGen(), newerelem1); newdb.insert(skeyGen(), newerelem2); newdb.showEnumerableDB(); Write("\n\n"); }
public static void showEnumerableElement(this DBElement <string, List <string> > enumElement) { Console.Write(enumElement.showEnumerableElement <string, List <string>, string>()); }
void TestR12() { try { "\nThe database is shown below:".title(); WriteLine("\n Key: Apple"); DBElement <string, List <string> > elem1 = new DBElement <string, List <string> >(); elem1.name = "Apple"; elem1.descr = "Type of fruit"; elem1.timeStamp = DateTime.Now; elem1.children.AddRange(new List <string> { "three" }); elem1.payload = new List <string> { "Seven" }; elem1.category = new List <string> { "fruit", "drink" }; dbCategory.insert("Apple", elem1); elem1.showEnumerableElement(); displayCategory(elem1.category); WriteLine("\n Key: Banana"); DBElement <string, List <string> > elem2 = new DBElement <string, List <string> >(); elem2.name = "Banana"; elem2.descr = "Type of fruit"; elem2.timeStamp = DateTime.Now; elem2.children.AddRange(new List <string> { "two" }); elem2.payload = new List <string> { "Five", "Six" }; elem2.category = new List <string> { "fruit" }; dbCategory.insert("Banana", elem2); elem2.showEnumerableElement(); displayCategory(elem2.category); WriteLine("\n Key: Blackberry"); DBElement <string, List <string> > elem3 = new DBElement <string, List <string> >(); elem3.name = "Blackberry"; elem3.descr = "Type of fruit or phone"; elem3.timeStamp = DateTime.Now; elem3.children.AddRange(new List <string> { "one" }); elem3.payload = new List <string> { "Eight" }; elem3.category = new List <string> { "fruit", "phone" }; dbCategory.insert("Blackberry", elem3); elem3.showEnumerableElement(); displayCategory(elem3.category); dictCategory = new Dictionary <string, List <string> >(); dictCategory.Add("fruit", new List <string> { "Apple", "Banana" }); List <string> values = new List <string>(); dictCategory.TryGetValue("fruit", out values); dynamic result = qEngine.getKeyForCategory(dbCategory, values); "\nMatched keys for category 'fruit'".title(); displayStringKeys(result); } catch (Exception e) { WriteLine("\n" + e.Message + "\n"); } }