public void DispalyInformation(string argumentName, object arg, int elem_counter = -1, int type = -1, string comment = "") { SeleniumLog log = SeleniumLog.Instance(); log.SaveIndent("DispalyInformation"); //log.Purple().WriteLine("DisplayInformation()"); //log.Indent(); if (arg == null) { //Console.WriteLine("TP-0.1.S"); if (log.Config.FunctionTrace_DisplayNullInputs == true) { log.Gray().WriteLine(argumentName + " [NULL]"); } //Console.WriteLine("TP-0.1.E"); } else { int j = 0; // Display Dictionary and Sorted List values if (CheckParameterType.CheckIfDictionary(arg) || CheckParameterType.CheckIfSortedList(arg)) { //Console.WriteLine("TP-1.S"); var data = arg as IDictionary; if (data == null) { return; } if (debug) { log.Blue().WriteLine("45 " + argumentName + ": "); } else { log.Purple().WriteLine(argumentName + ": "); } log.SaveIndent("______DisplayDictionaryValues_____"); log.Indent(); int count = data.Count; object[] keysArray = new object[count]; object[] valuesArray = new object[count]; data.Keys.CopyTo(keysArray, 0); data.Values.CopyTo(valuesArray, 0); for (int i = 0; i < count; i++) { ManageCustomDataStructure("" + keysArray[i], valuesArray[i], i, type: 1, comment: comment); } log.RestoreIndent("______DisplayDictionaryValues_____"); } // Display HashTable values else if (CheckParameterType.CheckIfHashTable(arg)) { var hashtable = arg as Hashtable; if (hashtable == null) { return; } int count = hashtable.Count; object[] keysArray = new object[count]; object[] valuesArray = new object[count]; hashtable.Keys.CopyTo(keysArray, 0); hashtable.Values.CopyTo(valuesArray, 0); //Console.WriteLine(argumentName + ":"); if (elem_counter > -1) { if (debug) { log.Purple().WriteLine("60" + argumentName + " " + elem_counter + " : "); } else { log.Purple().WriteLine(argumentName + " " + elem_counter + " : "); } } else if (debug) { log.Purple().WriteLine("60" + argumentName + " " + "COUNT?? : "); } else { log.Purple().WriteLine(argumentName + " " + elem_counter + " : "); } log.SaveIndent("______DisplayHashTableValues_____"); log.Indent(); for (int i = 0; i < count; i++) { ManageCustomDataStructure("" + keysArray[i], valuesArray[i], elem_counter: i, type: 2, comment: comment); } log.RestoreIndent("______DisplayHashTableValues_____"); } // Display Enumerable values else if (CheckParameterType.CheckIfEnumerable(arg)) { if (debug) { log.Red().WriteLine("50 type " + type + " " + argumentName + ": "); } else { log.Purple().WriteLine(argumentName + ": "); } log.SaveIndent("______DisplayEenumerableValues_____"); log.Indent(); foreach (var iterateValue in (IEnumerable)arg) { log.SaveIndent("______DisplayEenumerableValues2_____"); ManageCustomDataStructure(argumentName, iterateValue, j, type: 3, comment: comment); j++; log.RestoreIndent("______DisplayEenumerableValues2_____"); } log.RestoreIndent("______DisplayEenumerableValues_____"); } else { ManageCustomDataStructure(argumentName, arg, type: 4, comment: comment); } } log.RestoreIndent("DispalyInformation"); }
private bool ManageCustomDataStructure(string argumentName, object arg, int elem_counter = -1, int type = -1, string comment = "") { SeleniumLog log = SeleniumLog.Instance(); log.SaveIndent("ManageCustomDataStructure"); //log.Purple().WriteLine("ManageCustomDataStructure()"); //log.Indent(); // Display Dictionary and Sorted List values if (arg == null) { if (log.Config.FunctionTrace_DisplayNullInputs == true) { log.Gray().WriteLine(string.Format("{0} {1} : [NULL]", argumentName, elem_counter)); } log.RestoreIndent("ManageCustomDataStructure"); return(false); } if (CheckParameterType.CheckIfDictionary(arg) || CheckParameterType.CheckIfSortedList(arg)) { DispalyInformation(argumentName: argumentName, elem_counter: elem_counter, arg: arg); log.RestoreIndent("ManageCustomDataStructure"); return(true); } // Display HashTable values else if (CheckParameterType.CheckIfHashTable(arg)) { DispalyInformation(argumentName: argumentName, elem_counter: elem_counter, arg: arg); log.RestoreIndent("ManageCustomDataStructure"); return(true); } // Display Enumerable values else if (CheckParameterType.CheckIfEnumerable(arg)) { DispalyInformation(argumentName: argumentName, elem_counter: elem_counter, arg: arg); log.RestoreIndent("ManageCustomDataStructure"); return(true); } else if (CheckParameterType.CheckIfCustomType(arg.GetType())) { var properties = CheckParameterType.GetPublicProperties(arg); //Console.WriteLine(argumentName + ":"); //log.SaveIndent("_______CustomType1________"); //log.Red().WriteLine("type: " + type + " argumentName - " + argumentName + " : count = " + elem_counter); if (type == 4) { //log.Red().WriteLine("30 type 4 : " + comment); log.Purple().WriteLine(comment); log.Indent(); } //log.Indent(); if (properties.Any()) { log.SaveIndent("_______CustomType1________"); //log.Green("type " + type + " properties.Any(): " + argumentName + " " + elem_counter + " :"); log.Green(argumentName + " " + elem_counter + " :"); int m = 0; foreach (PropertyInfo property in properties) { //log.SaveIndent("_______CustomType1________"); //log.Blue().WriteLine(argumentName + ":"); //log.Indent(); var propertyValue = property.GetValue(arg, null) ?? "null"; //DispalyInformation(property.Name, propertyValue); DispalyInformation(argumentName: property.Name, elem_counter: m, arg: propertyValue); m++; //log.RestoreIndent("_______CustomType1________"); } log.RestoreIndent("_______CustomType1________"); } var fields = CheckParameterType.GetPublicFields(arg); if (fields.Any()) { if (debug) { log.Green("37 type " + type + " fields.Any(): " + argumentName + " " + elem_counter + " :"); } else { log.Purple(argumentName + " " + elem_counter + " :"); } log.SaveIndent("_______FieldsAny______"); log.Indent(); int k = 0; foreach (FieldInfo field in fields) { log.SaveIndent("_______CustomType2________"); //log.Indent(); var fieldValue = field.GetValue(arg) ?? "null"; //DispalyInformation(field.Name, fieldValue); DispalyInformation(argumentName: field.Name, elem_counter: k, arg: fieldValue); k++; log.RestoreIndent("_______CustomType2________"); } //log.Red().WriteLine("loop 2 done"); log.RestoreIndent("_______FieldsAny______"); } log.RestoreIndent("ManageCustomDataStructure"); return(true); } //Console.WriteLine(string.Format("{0}:{1}", argumentName, arg)); if (type == 1) { if (debug) { log.Purple().WriteLine(string.Format("100 type" + type + " {0} [{1}]", argumentName, arg)); } else { log.Purple().WriteLine(string.Format("{0} [{1}]", argumentName, arg)); } } else if (type == 2) { if (debug) { log.Purple().WriteLine(string.Format("101 type {0}: key [{1}] value [{2}]", type, argumentName, arg)); } else { log.Purple().WriteLine(string.Format("key [{1}] value [{2}]", type, argumentName, arg)); } } else if (type == 3) { if (debug) { log.Purple().WriteLine(string.Format("102 type" + type + " [{0}]", arg)); } else { log.Purple().WriteLine(string.Format("[{0}]", arg)); } } else if (type == 4) { // not a data structure, so don't parse if (debug) { log.Purple().WriteLine(string.Format("103 type" + type + " {0} [{1}]", argumentName, arg)); } else { log.Purple().WriteLine(string.Format("{0} [{1}]", argumentName, arg)); } //return false; } log.RestoreIndent("ManageCustomDataStructure"); return(false); }