RandomData

Już jakiś czas temu przedstawiałem na grupie .NET pewną niewielką bibliotekę, którą napisałem jednej nocy. Napisanie jej wynikło z potrzeby wygenerowania listy randomowych użytkowników, na których mógłbym pokazać sposób działania LINQ. Dziś znalazłem chwilę czasu, żeby poprawić w niej kilka błędów i opisać jej działanie.

Tak więc, przede wszystkim biblioteka składa się ze zbioru atrybutów, do generowania losowych danych.  Za pomocą tych atrybutów możemy oznaczać pola we własnej klasie i za pomocą specjalnego obiektu Randomizer możemy wygenerować jeden obiekt, bądź całą kolekcję. Przykład działania znajduje się poniżej.

class User
{
 [Identity]
 public int Id { get; set; }

 [RandomFirstName()]
 public string FirstName { get; set; }

 [RandomLastName]
 public string LastName { get; set; }

 [RandomDateTime("1960-01-01", "2013-08-06")]
 public DateTime BornDate { get; set; }

 [RandomText(300)]
 public string Description { get; set; }

 [RandomValue("Poland", "Germany", "France", "USA")]
 public string Country { get; set; }

 public override string ToString()
 {
 var strBuilder = new StringBuilder();
 strBuilder.Append("Id: ").Append(Id).Append(" || ");
 strBuilder.Append("FirstName: ").Append(FirstName).Append(" || ");
 strBuilder.Append("LastName: ").Append(LastName).Append(" || ");
 strBuilder.Append("BornDate: ").Append(BornDate).Append(" || ");
 strBuilder.Append("Country: ").Append(Country);

 return strBuilder.ToString();
 }
}

Klasa, wyposażona w atrybuty z biblioteki RandomData.

var randomizer = new Randomizer<user>();
var users = randomizer.GetRandomCollection(10);

Wygenerowanie kolekcji randomowych użytkowników

Aktualnie w skład biblioteki wchodzą następujące atrybuty:

  • Identity – generuje identyfikator obiektu, można podać z jakim skokiem mają zostac generowane kolejne liczby,
  • RandomBool – generuje wartość true lub false,
  • RandomDateTime – generuje losową datę, można podać wartość minimalną i maksymalną,
  • RandomFirstName – generuje imię z angielskiego słownika imion, można określić, czy ma to być imię męskie czy żeńskie,
  • RandomLastName – generuje nazwisko z angielskiego słownika nazwisk
  • RandomNumber – generuje losową liczbę, można podac zakres,
  • RandomText – generuje napis ‘Lorem ipsum’, można podać ile liter ma być w napisie,
  • RandomValue – losuje jedną z wartości podanych do konstruktora atrybutu.

Zachęcam do pobierania biblioteki i jeśli ktoś ma pomysły na rozwój, bądź komentarze do kodu bardzo proszę o kontakt. Cały kod jest dostępny na githubie, więc możecie go pobierać i jeśli będziecie chcieli go rozwinąć zachęcam do dzielenia się tym również na githubie.