- Fixed test on Big Endian systems (Fixed Ticket #54)

diff --git a/tests/suites/helpers.function b/tests/suites/helpers.function
index 94d7273..486bff8 100644
--- a/tests/suites/helpers.function
+++ b/tests/suites/helpers.function
@@ -192,6 +192,7 @@
 {
     rnd_pseudo_info *info = (rnd_pseudo_info *) rng_state;
     uint32_t i, *k, sum, delta=0x9E3779B9;
+    unsigned char result[4];
 
     if( rng_state == NULL )
         return( rnd_std_rand( NULL, output, len ) );
@@ -200,11 +201,9 @@
 
     while( len > 0 )
     {
-        size_t use_len = len;
+        size_t use_len = ( len > 4 ) ? 4 : len;
         sum = 0;
 
-        use_len = 1;
-
         for( i = 0; i < 32; i++ )
         {
             info->v0 += (((info->v1 << 4) ^ (info->v1 >> 5)) + info->v1) ^ (sum + k[sum & 3]);
@@ -212,7 +211,8 @@
             info->v1 += (((info->v0 << 4) ^ (info->v0 >> 5)) + info->v0) ^ (sum + k[(sum>>11) & 3]);
         }
 
-        memcpy( output, &info->v0, use_len );
+        PUT_ULONG_BE( info->v0, result, 0 );
+        memcpy( output, result, use_len );
         len -= use_len;
     }