Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Min/Max to IPv4, IPv6 and MAC addresses generation #6

Merged
merged 5 commits into from
Nov 20, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 27 additions & 3 deletions src/ConsoleAppClassic/MainTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,27 @@ public static void Run()
var randomizerCity = RandomizerFactory.GetRandomizer(new FieldOptionsCity());
string city = randomizerCity.Generate();
Write(randomizerCity, city);
string cityUpper = randomizerCity.Generate(true);
Write(randomizerCity, cityUpper);

var randomizerCountry = RandomizerFactory.GetRandomizer(new FieldOptionsCountry());
string country = randomizerCountry.Generate();
Write(randomizerCountry, country);

var randomizerMAC = RandomizerFactory.GetRandomizer(new FieldOptionsMACAddress { Min = "00-11-22-33-44-55", Max = "aa-bb-cc-dd-ee-ff", Separator = "-" });
string mac = randomizerMAC.Generate();
Write(randomizerMAC, mac);

var randomizerIPv4 = RandomizerFactory.GetRandomizer(new FieldOptionsIPv4Address { Min = "127.0.2.233", Max = "128.190.255.244" });
string ipv4 = randomizerIPv4.Generate();
Write(randomizerIPv4, ipv4);

var randomizerIPv6 = RandomizerFactory.GetRandomizer(new FieldOptionsIPv6Address { Min = "0000:0001:0000:0000:0020:ff00:0042:8000", Max = "2001:0db8:0120:0000:0030:ff00:aa42:8329" });
string ipv6 = randomizerIPv6.Generate();
Write(randomizerIPv6, ipv6);
string ipv6Lower = randomizerIPv6.Generate(false);
Write(randomizerIPv6, ipv6Lower);

var randomizerTimeSpan = RandomizerFactory.GetRandomizer(new FieldOptionsTimeSpan { From = TimeSpan.FromDays(1), To = TimeSpan.FromDays(7) });
TimeSpan? ts = randomizerTimeSpan.Generate();
Write(randomizerTimeSpan, ts);
Expand All @@ -27,7 +43,7 @@ public static void Run()
string tsC = randomizerTimeSpanC.GenerateAsString();
Write(randomizerTimeSpanC, tsC);

var randomizerDateTime = RandomizerFactory.GetRandomizer(new FieldOptionsDateTime { From = DateTime.Today.AddDays(-1888) });
var randomizerDateTime = RandomizerFactory.GetRandomizer(new FieldOptionsDateTime { From = DateTime.Today.AddYears(-1) });
DateTime? date = randomizerDateTime.Generate();
Write(randomizerDateTime, date);
string dateAsString = randomizerDateTime.GenerateAsString();
Expand All @@ -45,10 +61,18 @@ public static void Run()
string firstname = randomizerFirstName.Generate();
Write(randomizerFirstName, firstname);

var randomizerLastName = RandomizerFactory.GetRandomizer(new FieldOptionsLastName());
string lastname = randomizerLastName.Generate();
Write(randomizerLastName, lastname);

var randomizerBoolean = RandomizerFactory.GetRandomizer(new FieldOptionsBoolean());
bool? b = randomizerBoolean.Generate();
Write(randomizerBoolean, b);

var randomizerByte = RandomizerFactory.GetRandomizer(new FieldOptionsByte());
byte? bt = randomizerByte.Generate();
Write(randomizerByte, bt);

var randomizerShort = RandomizerFactory.GetRandomizer(new FieldOptionsShort());
short? sh = randomizerShort.Generate();
Write(randomizerShort, sh);
Expand All @@ -75,7 +99,7 @@ public static void Run()
string guidAsString = randomizerGuid.GenerateAsString();
Write(randomizerGuid, guidAsString);

var randomizerStringList = RandomizerFactory.GetRandomizer(new FieldOptionsStringList { Values = new[] { "1", "b" }.ToList() });
var randomizerStringList = RandomizerFactory.GetRandomizer(new FieldOptionsStringList { Values = new[] { "1", "b", "c" }.ToList() });
string stringListValue = randomizerStringList.Generate();
Write(randomizerStringList, stringListValue);

Expand Down Expand Up @@ -114,7 +138,7 @@ public static void Run()
private static void Write<T>(object randomizer, T value)
{
Type genericType = randomizer.GetType().GetTypeInfo().GenericTypeArguments.FirstOrDefault();
Console.WriteLine("{0}{1} --> '{2}'", randomizer.GetType().Name, genericType != null ? $"[{genericType}]" : string.Empty, value);
Console.WriteLine("{0}{1} --> '{2}'", randomizer.GetType().Name, genericType != null ? $"[{genericType.Name}]" : string.Empty, value);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,15 +16,15 @@ public override void SetOptionsAndUpdateControls(FieldOptionsMACAddress options)
{
base.SetOptionsAndUpdateControls(options);

chkAddColons.Checked = FieldOptions.AddColons;
chkAddColons.Checked = FieldOptions.Separator == ":";
chkUppercase.Checked = FieldOptions.Uppercase;
}

public override FieldOptionsMACAddress GetFieldOptionsT()
{
FieldOptions = base.GetFieldOptionsT();

FieldOptions.AddColons = chkAddColons.Checked;
FieldOptions.Separator = chkAddColons.Checked ? ":" : string.Empty;
FieldOptions.Uppercase = chkUppercase.Checked;

return FieldOptions;
Expand Down
15 changes: 15 additions & 0 deletions src/RandomDataGenerator/Extensions/StringExtensions.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
namespace RandomDataGenerator.Extensions
{
internal static class StringExtensions
{
public static string ToCasedInvariant(this string str, bool toUpper)
{
if (str == null)
{
return null;
}

return toUpper ? str.ToUpperInvariant() : str.ToLowerInvariant();
}
}
}
10 changes: 10 additions & 0 deletions src/RandomDataGenerator/FieldOptions/FieldOptionsByte.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@

namespace RandomDataGenerator.FieldOptions
{
public class FieldOptionsByte : FieldOptionsNumber<byte>
{
public override byte Min { get; set; }

public override byte Max { get; set; } = byte.MaxValue;
}
}
4 changes: 2 additions & 2 deletions src/RandomDataGenerator/FieldOptions/FieldOptionsDateTime.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ public class FieldOptionsDateTime : FieldOptionsAbstract, IFieldOptionsDateTime

public string Format { get; set; } = DefaultFormat;

public DateTime From { get; set; } = DateTime.Now.Date;
public DateTime From { get; set; } = DateTime.UtcNow.Date;

public DateTime To { get; set; } = DateTime.Now.AddYears(1).Date;
public DateTime To { get; set; } = DateTime.UtcNow.Date.AddYears(1);

public bool IncludeTime { get; set; } = true;
}
Expand Down
2 changes: 1 addition & 1 deletion src/RandomDataGenerator/FieldOptions/FieldOptionsDouble.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ public class FieldOptionsDouble : FieldOptionsNumber<double>
{
public override double Min { get; set; }

public override double Max { get; set; } = 99999999.0;
public override double Max { get; set; } = double.MaxValue;
}
}
2 changes: 1 addition & 1 deletion src/RandomDataGenerator/FieldOptions/FieldOptionsFloat.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ public class FieldOptionsFloat : FieldOptionsNumber<float>
{
public override float Min { get; set; }

public override float Max { get; set; } = 99999999.0F;
public override float Max { get; set; } = float.MaxValue;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,8 @@ namespace RandomDataGenerator.FieldOptions
{
public class FieldOptionsIPv4Address : FieldOptionsAbstract, IFieldOptionsString
{
public string Min { get; set; }

public string Max { get; set; }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,10 @@ namespace RandomDataGenerator.FieldOptions
{
public class FieldOptionsIPv6Address : FieldOptionsAbstract, IFieldOptionsString
{
public bool Uppercase { get; set; }

public string Min { get; set; }

public string Max { get; set; }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ public class FieldOptionsInteger : FieldOptionsNumber<int>
{
public override int Min { get; set; }

public override int Max { get; set; } = 99999999;
public override int Max { get; set; } = int.MaxValue;
}
}
2 changes: 1 addition & 1 deletion src/RandomDataGenerator/FieldOptions/FieldOptionsLong.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@ public class FieldOptionsLong : FieldOptionsNumber<long>
{
public override long Min { get; set; }

public override long Max { get; set; } = 999999999999;
public override long Max { get; set; } = long.MaxValue;
}
}
Original file line number Diff line number Diff line change
@@ -1,10 +1,13 @@

namespace RandomDataGenerator.FieldOptions
namespace RandomDataGenerator.FieldOptions
{
public class FieldOptionsMACAddress : FieldOptionsAbstract, IFieldOptionsString
{
public bool AddColons { get; set; } = true;
public string Separator { get; set; } = ":";

public bool Uppercase { get; set; } = true;

public string Min { get; set; }

public string Max { get; set; }
}
}
12 changes: 0 additions & 12 deletions src/RandomDataGenerator/FieldOptions/FieldOptionsTextPattern.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,17 +12,5 @@ public class FieldOptionsTextPattern : FieldOptionsAbstract, IFieldOptionsString
/// \ - for character as-is
/// </summary>
public string Pattern { get; set; }

//public bool UseUppercase { get; set; } = true;

//public bool UseLowercase { get; set; } = true;

//public bool UseLetter { get; set; } = true;

//public bool UseNumber { get; set; } = true;

//public bool UseSpace { get; set; } = true;

//public bool UseSpecial { get; set; }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,6 @@ public class FieldOptionsTimeSpan : FieldOptionsAbstract, IFieldOptionsTimeSpan

public TimeSpan From { get; set; }

public TimeSpan To { get; set; } = TimeSpan.FromDays(1);
public TimeSpan To { get; set; } = TimeSpan.MaxValue;
}
}
21 changes: 20 additions & 1 deletion src/RandomDataGenerator/Generators/RandomValueGenerator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ internal static class RandomValueGenerator
private static double _storedUniformDeviate;
private static bool _storedUniformDeviateIsGood;

public static Type[] SupportedTypes { get; } = { typeof(bool), typeof(short), typeof(int), typeof(long), typeof(float), typeof(double), typeof(long), typeof(DateTime), typeof(TimeSpan) };
public static Type[] SupportedTypes { get; } = { typeof(bool), typeof(byte), typeof(short), typeof(int), typeof(long), typeof(float), typeof(double), typeof(long), typeof(DateTime), typeof(TimeSpan) };

#region -- Construction/Initialization --

Expand Down Expand Up @@ -73,6 +73,11 @@ public static T Next<T>(T min, T max)
return (T)(object)NextBoolean();
}

if (typeof(T) == typeof(byte))
{
return (T)(object)Next((byte)(object)min, (byte)(object)max);
}

if (typeof(T) == typeof(short))
{
return (T)(object)Next((short)(object)min, (short)(object)max);
Expand Down Expand Up @@ -111,6 +116,20 @@ public static T Next<T>(T min, T max)
throw new NotSupportedException($"The type '{typeof(T)}' cannot be used.");
}

/// <summary>
/// Returns byte in the range [min, max)
/// </summary>
public static byte Next(byte min, byte max)
{
if (max <= min)
{
throw new ArgumentException("Max must be greater than min.");
}

double rn = (max * 1.0 - min * 1.0) * _rnf.NextDouble() + min * 1.0;
return Convert.ToByte(rn);
}

/// <summary>
/// Returns Int16 in the range [min, max)
/// </summary>
Expand Down
2 changes: 1 addition & 1 deletion src/RandomDataGenerator/RandomDataGenerator.csproj
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<Version>1.0.3.0</Version>
<Version>1.0.4.0</Version>
<AssemblyTitle>Random Data Generator</AssemblyTitle>
<Title>Random Data Generator</Title>
<PackageDescription>This is a configurable generator to create random data like Lorum Ipsum Text, Words, Text Patterns, First/Last Names, IP-Addresses, Guids, DateTime and more.</PackageDescription>
Expand Down
2 changes: 2 additions & 0 deletions src/RandomDataGenerator/Randomizers/IRandomizerString.cs
Original file line number Diff line number Diff line change
Expand Up @@ -3,5 +3,7 @@
public interface IRandomizerString
{
string Generate();

string Generate(bool upperCase);
}
}
8 changes: 7 additions & 1 deletion src/RandomDataGenerator/Randomizers/RandomizerCity.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using RandomDataGenerator.FieldOptions;
using RandomDataGenerator.Extensions;
using RandomDataGenerator.FieldOptions;
using RandomDataGenerator.Generators;
using RandomDataGenerator.TextData;

Expand All @@ -17,5 +18,10 @@ public string Generate()
{
return IsNull() ? null : _generator.Generate();
}

public string Generate(bool upperCase)
{
return Generate().ToCasedInvariant(upperCase);
}
}
}
8 changes: 7 additions & 1 deletion src/RandomDataGenerator/Randomizers/RandomizerCountry.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using RandomDataGenerator.FieldOptions;
using RandomDataGenerator.Extensions;
using RandomDataGenerator.FieldOptions;
using RandomDataGenerator.Generators;
using RandomDataGenerator.TextData;

Expand All @@ -17,5 +18,10 @@ public string Generate()
{
return IsNull() ? null : _generator.Generate();
}

public string Generate(bool upperCase)
{
return Generate().ToCasedInvariant(upperCase);
}
}
}
5 changes: 5 additions & 0 deletions src/RandomDataGenerator/Randomizers/RandomizerEmailAddress.cs
Original file line number Diff line number Diff line change
Expand Up @@ -52,5 +52,10 @@ public string Generate()

return $"{firstName}.{lastname}@{company}.{domain}";
}

public string Generate(bool upperCase)
{
return Generate().ToCasedInvariant(upperCase);
}
}
}
6 changes: 6 additions & 0 deletions src/RandomDataGenerator/Randomizers/RandomizerFirstName.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Collections.Generic;
using RandomDataGenerator.Extensions;
using RandomDataGenerator.FieldOptions;
using RandomDataGenerator.Generators;
using RandomDataGenerator.TextData;
Expand Down Expand Up @@ -37,5 +38,10 @@ public string Generate()

return _genderSetGenerators[maleOrFemale].Generate();
}

public string Generate(bool upperCase)
{
return Generate().ToCasedInvariant(upperCase);
}
}
}
6 changes: 6 additions & 0 deletions src/RandomDataGenerator/Randomizers/RandomizerFullName.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System.Collections.Generic;
using RandomDataGenerator.Extensions;
using RandomDataGenerator.FieldOptions;
using RandomDataGenerator.Generators;
using RandomDataGenerator.TextData;
Expand Down Expand Up @@ -44,5 +45,10 @@ public string Generate()

return $"{firstName} {lastname}";
}

public string Generate(bool upperCase)
{
return Generate().ToCasedInvariant(upperCase);
}
}
}
4 changes: 2 additions & 2 deletions src/RandomDataGenerator/Randomizers/RandomizerGuid.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using RandomDataGenerator.Extensions;
using RandomDataGenerator.FieldOptions;

namespace RandomDataGenerator.Randomizers
Expand Down Expand Up @@ -26,8 +27,7 @@ public string GenerateAsString()
return null;
}

string guid = Guid.NewGuid().ToString();
return Options.Uppercase ? guid.ToUpperInvariant() : guid.ToLowerInvariant();
return Guid.NewGuid().ToString().ToCasedInvariant(Options.Uppercase);
}
}
}
Loading