public
Description: Easy and customizable generation of forged data.
Homepage: http://sevenwire.com
Clone URL: git://github.com/sevenwire/forgery.git
Refactoring and writing specs.

Removed ruby facets because of potentially conflicting licenses and 
'YAGNI'.
Changing to RSpec for great profit.  Improving random range extension.
nate (author)
Sun Jun 01 11:13:48 -0700 2008
commit  d68c02a0378306160cf1b9f6652857e1740eff6b
tree    f74a6823cfba23a853a528bdaf8755b524fe518e
parent  0c5211ef1d7ac51fd2ac63ced4f557f65d89b3e5
...
1
2
3
 
 
 
 
 
 
4
5
...
1
 
 
2
3
4
5
6
7
8
9
0
@@ -1,5 +1,9 @@
0
 class Range
0
- def at_rand
0
- Kernel.rand(self.last - self.first + 1) + self.first
0
+ def random
0
+ return nil unless self.max
0
+ Integer(min) && Integer(max)
0
+ Kernel.rand(self.max - self.min + 1) + self.min
0
+ rescue ArgumentError
0
+ self.to_a.random
0
   end
0
 end
...
1
2
3
 
 
4
5
6
...
1
 
 
2
3
4
5
6
0
@@ -1,5 +1,5 @@
0
 class String
0
- def numerify
0
- self.gsub(/#/) { Kernel.rand(10).to_s }
0
+ def to_numbers(replace='#')
0
+ self.gsub(/#{replace}/){ Kernel.rand(10) }
0
   end
0
 end
0
\ No newline at end of file
...
3
4
5
6
 
7
8
9
10
 
11
12
13
14
 
15
16
17
...
19
20
21
22
 
23
24
25
26
 
27
28
29
30
 
31
32
33
34
 
35
36
37
38
 
39
40
41
42
 
43
44
45
...
3
4
5
 
6
7
8
9
 
10
11
12
13
 
14
15
16
17
...
19
20
21
 
22
23
24
25
 
26
27
28
29
 
30
31
32
33
 
34
35
36
37
 
38
39
40
41
 
42
43
44
45
0
@@ -3,15 +3,15 @@ class AddressForgery < Forgery
0
   formats :zip, :phone, :street_number
0
 
0
   def self.street_name
0
- STREETS.at_rand
0
+ STREETS.random
0
   end
0
 
0
   def self.street_number
0
- STREET_NUMBER_FORMATS.at_rand.numerify
0
+ STREET_NUMBER_FORMATS.random.to_numbers
0
   end
0
 
0
   def self.street_suffix
0
- STREET_SUFFIXES.at_rand
0
+ STREET_SUFFIXES.random
0
   end
0
 
0
   def self.street_address
0
@@ -19,26 +19,26 @@ class AddressForgery < Forgery
0
   end
0
 
0
   def self.city
0
- CITIES.at_rand
0
+ CITIES.random
0
   end
0
 
0
   def self.state
0
- STATES.at_rand
0
+ STATES.random
0
   end
0
 
0
   def self.state_abbrev
0
- STATE_ABBREVS.at_rand
0
+ STATE_ABBREVS.random
0
   end
0
 
0
   def self.zip
0
- ZIP_FORMATS.at_rand.numerify
0
+ ZIP_FORMATS.random.to_numbers
0
   end
0
 
0
   def self.phone
0
- PHONE_FORMATS.at_rand.numerify
0
+ PHONE_FORMATS.random.to_numbers
0
   end
0
 
0
   def self.country
0
- COUNTRIES.at_rand
0
+ COUNTRIES.random
0
   end
0
 end
0
\ No newline at end of file
...
26
27
28
29
 
30
31
32
...
43
44
45
46
 
47
48
49
...
52
53
54
55
 
56
57
58
59
 
60
61
62
63
64
 
65
66
67
68
69
70
71
72
 
...
26
27
28
 
29
30
31
32
...
43
44
45
 
46
47
48
49
...
52
53
54
 
55
56
57
58
 
59
60
61
62
63
 
64
65
66
67
68
69
70
 
71
72
0
@@ -26,7 +26,7 @@ class BasicForgery < Forgery
0
   end
0
 
0
   def self.boolean
0
- [true, false].at_rand
0
+ [true, false].random
0
   end
0
 
0
   def self.random_text(options={})
0
@@ -43,7 +43,7 @@ class BasicForgery < Forgery
0
     allowed_characters += NUMERIC if options[:allow_numeric]
0
     allowed_characters += SPECIAL_CHARACTERS if options[:allow_special]
0
 
0
- length = (options[:at_least]..options[:at_most]).at_rand
0
+ length = (options[:at_least]..options[:at_most]).random
0
 
0
     allowed_characters.rand_subset(length, false).join
0
   end
0
@@ -52,20 +52,20 @@ class BasicForgery < Forgery
0
     options = {:at_least => 1,
0
                :at_most => 10}.merge(options)
0
 
0
- (options[:at_least]..options[:at_most]).at_rand
0
+ (options[:at_least]..options[:at_most]).random
0
   end
0
 
0
   def self.color
0
- COLORS.at_rand
0
+ COLORS.random
0
   end
0
 
0
   def self.hex_color
0
     hex_value = ""
0
- 6.times { hex_value << HEX_DIGITS.at_rand }
0
+ 6.times { hex_value << HEX_DIGITS.random }
0
     "##{hex_value}"
0
   end
0
 
0
   def self.short_hex_color
0
     hex_color[0,4]
0
   end
0
-end
0
\ No newline at end of file
0
+end
...
2
3
4
5
 
6
7
8
9
 
10
11
12
13
 
14
15
16
...
2
3
4
 
5
6
7
8
 
9
10
11
12
 
13
14
15
16
0
@@ -2,15 +2,15 @@ class InternetForgery < Forgery
0
   dictionaries :male_first_names, :female_first_names, :last_names, :top_level_domains, :company_names
0
 
0
   def self.user_name
0
- (MALE_FIRST_NAMES.at_rand + LAST_NAMES.at_rand).downcase
0
+ (MALE_FIRST_NAMES.random + LAST_NAMES.random).downcase
0
   end
0
 
0
   def self.top_level_domain
0
- TOP_LEVEL_DOMAINS.at_rand
0
+ TOP_LEVEL_DOMAINS.random
0
   end
0
 
0
   def self.domain_name
0
- COMPANY_NAMES.at_rand.downcase + '.' + self.top_level_domain
0
+ COMPANY_NAMES.random.downcase + '.' + self.top_level_domain
0
   end
0
   
0
   def self.email_address
...
95
96
97
98
 
99
100
101
...
95
96
97
 
98
99
100
101
0
@@ -95,7 +95,7 @@ protected
0
     return quantity if quantity.class == Range
0
 
0
     if options[:random]
0
- start = (0..options[:random_limit]).at_rand
0
+ start = (0..options[:random_limit]).random
0
       start..(start+quantity-1)
0
     else
0
       0..(quantity-1)
...
7
8
9
10
 
11
12
13
...
7
8
9
 
10
11
12
13
0
@@ -7,7 +7,7 @@ class MonetaryForgery < Forgery
0
     options = {:max => 10,
0
                :min => 0}.merge(options)
0
 
0
- value = ((options[:min] * 100)..(options[:max] * 100)).at_rand
0
+ value = ((options[:min] * 100)..(options[:max] * 100)).random
0
     "%1.2f" % (value.to_f / 100)
0
   end
0
 end
...
2
3
4
5
 
6
7
8
9
 
10
11
12
13
 
14
15
16
17
 
18
19
20
...
2
3
4
 
5
6
7
8
 
9
10
11
12
 
13
14
15
16
 
17
18
19
20
0
@@ -2,18 +2,18 @@ class NameForgery < Forgery
0
   dictionaries :last_names, :male_first_names, :female_first_names
0
 
0
   def self.last_name
0
- LAST_NAMES.at_rand
0
+ LAST_NAMES.random
0
   end
0
 
0
   def self.first_name
0
- [MALE_FIRST_NAMES, FEMALE_FIRST_NAMES].at_rand.at_rand
0
+ [MALE_FIRST_NAMES, FEMALE_FIRST_NAMES].random.random
0
   end
0
 
0
   def self.male_first_name
0
- MALE_FIRST_NAMES.at_rand
0
+ MALE_FIRST_NAMES.random
0
   end
0
 
0
   def self.female_first_name
0
- FEMALE_FIRST_NAMES.at_rand
0
+ FEMALE_FIRST_NAMES.random
0
   end
0
 end
0
\ No newline at end of file
...
1
2
3
 
4
5
6
...
8
9
10
11
 
12
13
14
...
1
2
 
3
4
5
6
...
8
9
10
 
11
12
13
14
0
@@ -1,6 +1,6 @@
0
 class PersonalForgery < Forgery
0
   def self.gender
0
- %w{Male Female}.at_rand
0
+ %w{Male Female}.random
0
   end
0
 
0
   def self.abbreviated_gender
0
@@ -8,6 +8,6 @@ class PersonalForgery < Forgery
0
   end
0
 
0
   def self.shirt_size
0
- %w{XS S M L XL 2XL 3XL}.at_rand
0
+ %w{XS S M L XL 2XL 3XL}.random
0
   end
0
 end
0
\ No newline at end of file
...
1
 
...
 
1
0
@@ -1 +1 @@
0
-1-(###)###-####
0
+#-(###)###-####

Comments

    No one has commented yet.