Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια

Παραμετρική δημιουργία datatable με τυχαία data

Κάποια στιγμή μου χρειάστηκε να φτιάξω "κατι" που θα δημιουργούσε on-demand datatables γεμάτα με "σκουπίδια" (random data) για τις ανάγκες testing. Ειπα λοιπόν να το μοιραστώ μαζί σας.

Καλώντας την GenerateDummyDataTable(10,5,11,22) παίρνετε πίσω ένα datatable 10 γραμμών και 5 στηλών με ονόματα "Col1", "Col2" κλπ γεμάτο με dummy data. Τα data είναι random strings με μήκος τυχαίο μεταξύ των 11 και 22 χαρακτήρων.

Καλώντας την GenerateDummyValue (5, 10) μπορειτε να πάρετε απλά ένα string μήκους μεταξύ 5 και 10 χαρακτήρων γεμάτο με τυχαίους χαρακτήρες.

Ειναι απλό, παιδικό θα έλεγα, αλλά με γλύτωσε από πολύ κόπο.


Imports System.Text
Imports System.Random
Imports System.data

'/// <summary>
'/// This class can be used as a "helper" class to generate datatables with dummy
'/// values in order to stress-test or dummy-test data-driven applications without
'/// having to implement the Data Access Layer first.
'/// You can also use it to just generate strings filled with dummy values.
'/// </summary>
Public Class DataRetriever
    Private m_objRnd As Random

    '/// <summary>
    '/// Default constructor.
    '/// </summary>
    Public Sub New()

        'Create something as random as we can.
        m_objRnd = New Random(CType(System.DateTime.Now.Ticks Mod System.Int32.MaxValue, Integer))
    End Sub

    '/// <summary>
    '/// Generates a datatable with a specified number of rows and columns and fills it
    '/// with dummy values.
    '/// </summary>
    '/// <param name="rows">The number of rows the datatable will contain</param>
    '/// <param name="cols">The number of columns the datatable will contain</param>
    '/// <param name="minStringLength">Minimum random string length for column values</param>
    '/// <param name="maxStringLength">Maximum random string length for column values</param>
    '/// <returns>A DataTable object</returns>
    Public Function GenerateDummyDataTable( _
          ByVal rows As Int32 _
        , ByVal cols As Int32 _
        , Optional ByVal minStringLength As Int32 = 3 _
        , Optional ByVal maxStringLength As Int32 = 15 _
    ) As DataTable

        Dim objDt As New DataTable

        'Add columns. Columns will have titles like "Col1", "Col2" etc.
        For intCnt As Int32 = 1 To cols
            objDt.Columns.Add("Col" + intcnt.ToString)
        Next

        'Add rows.
        For intCnt As Int32 = 1 To rows
            objDt.Rows.Add(GenerateDummyDataRowValues(cols, minStringLength, maxStringLength))
        Next

        Return objDt

    End Function

    '/// <summary>
    '/// Generates a string filled with dummy characters with a random length
    '/// within a specified range.
    '/// </summary>
    '/// <param name="minLength">The minimum length the string should have</param>
    '/// <param name="maxlength">The maximum length the string should have</param>
    '/// <returns>String</returns>
    Public Function GenerateDummyValue( _
              ByVal minLength As Int32 _
            , ByVal maxlength As Int32 _
     ) As String

        Dim intLength As Int32

        intLength = m_objRnd.Next(minLength, maxlength)

        Dim objSB As New StringBuilder(String.Empty)

        'Create characters. Include Greek characters too. Change the range if you don't like that.
        For intCnt As Int32 = 0 To intLength
            objSB.Append(Chr(m_objRnd.Next(65, 228)))
        Next

        Return objSB.ToString

    End Function

    '/// <summary>
    '/// Generates dummy object arrays to be used as values for DataRows
    '/// </summary>
    '/// <param name="cols">Number of columns</param>
    '/// <param name="minLength">Minimum random string length for column values</param>
    '/// <param name="maxLength">Maximum random string length for column values</param>
    '/// <returns>Object()</returns>
    Private Function GenerateDummyDataRowValues( _
          ByVal cols As Int32 _
        , Optional ByVal minLength As Int32 = 3 _
        , Optional ByVal maxLength As Int32 = 15 _
        ) As Object()

        Dim ob(cols - 1) As Object
        For intCnt As Int32 = 0 To cols - 1
            ob(intCnt) = New Object
            ob(intCnt) = GenerateDummyValue(minLength, maxLength)
        Next
        Return (ob)

    End Function

End Class


 
Έχουν δημοσιευτεί Τετάρτη, 17 Αυγούστου 2005 10:31 πμ από το μέλος cap
Δημοσίευση στην κατηγορία:

Ενημέρωση για Σχόλια

Αν θα θέλατε να λαμβάνετε ένα e-mail όταν γίνονται ανανεώσεις στο περιεχόμενο αυτής της δημοσίευσης, παρακαλούμε γίνετε συνδρομητής εδώ

Παραμείνετε ενήμεροι στα τελευταία σχόλια με την χρήση του αγαπημένου σας RSS Aggregator και συνδρομή στη Τροφοδοσία RSS με σχόλια

Σχόλια:

# re: Παραμετρική δημιουργία datatable με τυχαία data

Τετάρτη, 17 Αυγούστου 2005 11:21 πμ by Χρήστος Γεωργακόπουλος
Μήπως να το επέκτεινες λίγο; να παίρνει ένα typed dataset και να γεμίζει τους πίνακες κοιτώντας τα data types και τα relations;

# re: Παραμετρική δημιουργία datatable με τυχαία data

Παρασκευή, 19 Αυγούστου 2005 9:22 μμ by cap
Ιδιαίτερα για τα data types θα ήταν πολύ χρήσιμο. Προς το παρόν δουλεύω μόνο με strings. Χμ, ίσως αν προκύψει ανάγκη να το φτιάξω, έχει όμως πολύ φασαρία.

Ποιά είναι η άποψή σας για την παραπάνω δημοσίευση;

(απαιτούμενο)
απαιτούμενο
(απαιτούμενο)
ÅéóÜãåôå ôïí êùäéêü:
CAPTCHA Image