// ---------------------------------------------------------------------------------------- /// <!-- CreatePrettyLabel --> /// <summary> /// /// </summary> /// <param name="name"></param> /// <returns></returns> protected override string CreatePrettyLabel(string name) { string data; RandomSource rs = RandomSource.New(); //Random r = rs.Random; string labelType = LblType(name); // encapsulate switch (labelType) { case "name": data = DbLabels.CreatePrettyLabel(rs.Skew(1, 512), LabelType.name); break; default: data = DbLabels.CreatePrettyLabel(rs.Skew(1, 512), LabelType.any); break; } return(data); }
// ---------------------------------------------------------------------------------------- /// <!-- CreateDateTime --> /// <summary> /// One of the following formats: /// 1999-05-31T13:20:00.01-05:00 /// +14:00..-14:00 /// 1999-05-31 /// 13:20:00-05:00 /// 1999-05 /// --05-17 /// ---15 /// --11-- /// </summary> /// <returns></returns> protected override string CreateDateTime(string name) { string data = ""; RandomSource rs = RandomSource.New(); DateTime dtm = DateTime.UtcNow.AddHours(rs.Skew(-100, 100)); Random r = rs.Random; switch (r.Next(1)) { case 0: data = dtm.ToString("yyyy-MM-ddTHH:mm:ss") + CreateTimeZone(r); break; //case 1: data = dtm.ToString("yyyy-MM-dd") + CreateTimeZone(r); break; //case 2: data = dtm.ToString("HH:mm:ss") + CreateTimeZone(r); break; } return(data); }
// ---------------------------------------------------------------------------------------- /// <!-- CreateDate --> /// <summary> /// Creates a date string in one of these formats: 1999-05-31-05:00 1999-05-31Z /// 1999-05-31 1999-05-- /// </summary> /// <returns></returns> /// <remarks>beta code - used once in production</remarks> protected override string CreateDate(string name) { RandomSource rs = RandomSource.New(); int hoursOffset = rs.Skew(-1000, 1000); DateTime time = DateTime.UtcNow.AddHours(hoursOffset); Random r = rs.Random; string data = ""; switch (r.Next(2)) { // case 0 : data = time.ToString("yyyy-MM--") + CreateTimeZone(r); break; default: data = time.ToString("yyyy-MM-dd") + CreateTimeZone(r); break; } return(data); }
// ---------------------------------------------------------------------------------------- /// <!-- CreateString --> /// <summary> /// Creates a string to meet a particular set of restrictions /// </summary> /// <param name="cmd"></param> /// <param name="name"></param> /// <returns></returns> protected override string CreateString(NodeCreationCommand cmd, string name) { string str = ""; if (Regex.IsMatch(name, "amount", RegexOptions.IgnoreCase)) { Pause(); } // -------------------------------------------------------------------------- // Use the restrictions (new <--> now) // -------------------------------------------------------------------------- RandomSource rs = RandomSource.New(); Random r = rs.Random; if (cmd.Enumerations != null && cmd.Enumerations.Count > 0) { int e = r.Next(cmd.Enumerations.Count); str = cmd.Enumerations[e]; } else { switch (cmd.MaxLength) { case -1: // encapsulate if (string.IsNullOrEmpty(cmd.RegexPattern)) { bool found = false; // encapsulate if (!found && IsNumericField(name)) { found = true; str = new RegexGenerator("[0-9]").CreateString(r, rs.Skew(1, 49), cmd.WhiteSpace); } if (!found && IsDateTime(name)) { found = true; str = CreateDateTime(name); } if (!found) { str = CreatePrettyLabel(name); // encapsulate } } else { bool found = false; if (IsNumericField(name)) // encapsulate { str = new RegexGenerator(cmd.RegexPattern).CreateString(r, rs.Skew(7, 50), cmd.WhiteSpace); found = true; } if (IsDigitField(name)) // encapsulate { str = new RegexGenerator(cmd.RegexPattern).CreateString(r, 1, cmd.WhiteSpace); found = true; } if (!found) { str = new RegexGenerator(cmd.RegexPattern).CreateString(r, cmd.WhiteSpace); } } break; case 0: str = ""; break; default: if (!string.IsNullOrEmpty(cmd.RegexPattern)) { // ---------------------------------------------------------- // convert a Regex pattern into a random string that it will match // ---------------------------------------------------------- RegexGenerator genRegex = new RegexGenerator(cmd.RegexPattern); str = genRegex.CreateString(r, cmd.WhiteSpace); for (int i = 0; str.Length > cmd.MaxLength && i < 10; i++) { str = genRegex.CreateString(r, cmd.WhiteSpace); } } else // encapsulate { str = DbLabels.CreatePrettyLabel(r.Next(1, cmd.MaxLength + 1), LabelType.any); } break; } } return(str); }