randomperson 0.0.17 → 0.0.19
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +16 -0
- data/CHANGELOG +35 -0
- data/Manifest +72 -0
- data/README +324 -0
- data/gem-public_cert.pem +20 -0
- data/lib/randomperson/Names/AnyLast.rb +1 -1
- data/lib/randomperson/Names/BasqueFemaleFirst.rb +1 -1
- data/lib/randomperson/Names/BasqueLast.rb +1 -1
- data/lib/randomperson/Names/BasqueMaleFirst.rb +1 -1
- data/lib/randomperson/Names/BritishPrefix.rb +1 -1
- data/lib/randomperson/Names/EnglishFemaleFirst.rb +1 -1
- data/lib/randomperson/Names/EnglishLast.rb +1 -1
- data/lib/randomperson/Names/EnglishMaleFirst.rb +1 -1
- data/lib/randomperson/Names/FinnishFemaleFirst.rb +1 -1
- data/lib/randomperson/Names/FinnishLast.rb +1 -1
- data/lib/randomperson/Names/FinnishMaleFirst.rb +1 -1
- data/lib/randomperson/Names/FinnishPrefix.rb +1 -1
- data/lib/randomperson/Names/FrenchFemaleFirst.rb +1 -1
- data/lib/randomperson/Names/FrenchLast.rb +1 -1
- data/lib/randomperson/Names/FrenchMaleFirst.rb +1 -1
- data/lib/randomperson/Names/GermanFemaleFirst.rb +1 -1
- data/lib/randomperson/Names/GermanLast.rb +1 -1
- data/lib/randomperson/Names/GermanMaleFirst.rb +1 -1
- data/lib/randomperson/Names/ScottishFemaleFirst.rb +1 -1
- data/lib/randomperson/Names/ScottishLast.rb +1 -1
- data/lib/randomperson/Names/ScottishMaleFirst.rb +1 -1
- data/lib/randomperson/Names/ScottishPrefix.rb +1 -1
- data/lib/randomperson/Names/SpanishFemaleFirst.rb +1 -1
- data/lib/randomperson/Names/SpanishLast.rb +1 -1
- data/lib/randomperson/Names/SpanishMaleFirst.rb +1 -1
- data/lib/randomperson/Names/SpanishPrefix.rb +1 -1
- data/lib/randomperson/Names/SwedishFemaleFirst.rb +1 -1
- data/lib/randomperson/Names/SwedishLast.rb +1 -1
- data/lib/randomperson/Names/SwedishMaleFirst.rb +1 -1
- data/lib/randomperson/Names/ThaiFemaleFirst.rb +1 -1
- data/lib/randomperson/Names/ThaiFirst.rb +1 -1
- data/lib/randomperson/Names/ThaiLast.rb +1 -1
- data/lib/randomperson/Names/ThaiMaleFirst.rb +1 -1
- data/lib/randomperson/Names/ThaiRomanisedFemaleFirst.rb +1 -1
- data/lib/randomperson/Names/ThaiRomanisedLast.rb +1 -1
- data/lib/randomperson/Names/ThaiRomanisedMaleFirst.rb +1 -1
- data/lib/randomperson/Names/WelshFemaleFirst.rb +1 -1
- data/lib/randomperson/Names/WelshLast.rb +1 -1
- data/lib/randomperson/Names/WelshMaleFirst.rb +1 -1
- data/lib/randomperson/Names/WelshPrefix.rb +1 -1
- data/lib/randomperson/{Choice.rb → choice.rb} +5 -1
- data/lib/randomperson/{Generator.rb → generator.rb} +20 -2
- data/lib/randomperson/{Name.rb → name.rb} +0 -0
- data/lib/randomperson/person.rb +27 -0
- data/lib/randomperson/{Ratio.rb → ratio.rb} +0 -0
- data/lib/randomperson/version.rb +3 -0
- data/lib/randomperson.rb +21 -15
- data/randomperson.gemspec +6 -6
- data/spec/choice_spec.rb +13 -0
- data/spec/generator_spec.rb +13 -0
- data/spec/name_spec.rb +13 -0
- data/test/test_Choice.rb +140 -0
- data/test/test_Generator.rb +111 -0
- data.tar.gz.sig +0 -0
- metadata +74 -56
- metadata.gz.sig +0 -0
- data/lib/randomperson/Person.rb +0 -17
@@ -1,6 +1,7 @@
|
|
1
1
|
module RandomPerson
|
2
2
|
|
3
3
|
class Choice
|
4
|
+
require 'set'
|
4
5
|
|
5
6
|
attr_accessor :malefirst, :femalefirst, :last, :gender_ratio, :age_lower, :age_upper, :prefix, :suffix #,:age_ratio
|
6
7
|
|
@@ -10,7 +11,10 @@ module RandomPerson
|
|
10
11
|
|
11
12
|
|
12
13
|
@@available_classes = Set.new
|
13
|
-
|
14
|
+
|
15
|
+
# Initialize the class with the parameters for the population you want.
|
16
|
+
# @example
|
17
|
+
# choice = RandomPerson::Choice.new( {gender_ratio: [3,5] , age_lower:16, age_upper:35 } )
|
14
18
|
def initialize( h={} )
|
15
19
|
@gender_ratio = h[:gender_ratio] || [1,1] #default
|
16
20
|
@age_lower = h[:age_lower] || 0
|
@@ -1,15 +1,24 @@
|
|
1
1
|
module RandomPerson
|
2
2
|
|
3
3
|
class Generator
|
4
|
-
|
4
|
+
|
5
|
+
require_relative './choice.rb'
|
6
|
+
require_relative './person.rb'
|
7
|
+
|
5
8
|
attr_reader :generators
|
6
9
|
|
10
|
+
# Sets up a list of generators
|
11
|
+
# @example
|
12
|
+
# g = RandomPerson::Generator.new
|
7
13
|
def initialize
|
8
14
|
@generators = [ ]
|
9
15
|
end
|
10
16
|
|
11
17
|
|
12
|
-
#
|
18
|
+
# Build a choice generator
|
19
|
+
# @param [RandomPerson::Choice] choice A Choice object.
|
20
|
+
# @example
|
21
|
+
# g.make_generator choice
|
13
22
|
def make_generator( choice )
|
14
23
|
f = -> {
|
15
24
|
g = Generator.pick_gender( choice.gender_ratio )
|
@@ -50,6 +59,15 @@ module RandomPerson
|
|
50
59
|
return new_ratio
|
51
60
|
end
|
52
61
|
|
62
|
+
# Takes a ratio and uses this to randomly select either a male or a female. To get only males or only females, pass in a 0 for either gender to make sure of getting the other gender for definite.
|
63
|
+
# @example To only get males:
|
64
|
+
# pick_gender( [1,0] )
|
65
|
+
# @example To only get females:
|
66
|
+
# pick_gender( [0,1] )
|
67
|
+
# @example To be likely to get 2 females to every male:
|
68
|
+
# pick_gender( [1,2] )
|
69
|
+
# @param [optional,Array<Integer,Integer>] ratio The ratio of males to females expressed in an array, e.g. [1,1] is (a chance of) one male for every female, [1,2] is one male to two females. The default is [1,1].
|
70
|
+
# @return [String] Returns a 'f' for female or an 'm' for male.
|
53
71
|
def pick_gender( ratio=[1,1] ) #male first
|
54
72
|
if ratio.length == 2
|
55
73
|
return 'f' if ratio.first == 0
|
File without changes
|
@@ -0,0 +1,27 @@
|
|
1
|
+
module RandomPerson
|
2
|
+
|
3
|
+
# Your general person
|
4
|
+
class Person
|
5
|
+
|
6
|
+
attr_accessor :gender, :age, :dob, :first, :last, :prefix, :suffix
|
7
|
+
|
8
|
+
## @param [optional,Hash] h A hash of the person's attributes
|
9
|
+
# @option h [String] :gender nil Gender, 'm' for male or 'f' for female
|
10
|
+
# @option h [Integer] :age nil Age
|
11
|
+
# @option h [Time] :dob nil Date of birth
|
12
|
+
# @option h [String] :first nil First name
|
13
|
+
# @option h [String] :last nil Last name
|
14
|
+
# @option h [String] :prefix nil Prefix e.g. Mr
|
15
|
+
# @option h [String] :suffix nil Suffix e.g. PhD
|
16
|
+
def initialize( h={} )
|
17
|
+
@gender = h[:gender] || nil
|
18
|
+
@age = h[:age] || nil
|
19
|
+
@dob = h[:dob] || nil
|
20
|
+
@first = h[:first] || nil
|
21
|
+
@last = h[:last] || nil
|
22
|
+
@prefix = h[:prefix] || nil
|
23
|
+
@suffix = h[:suffix] || nil
|
24
|
+
end
|
25
|
+
|
26
|
+
end
|
27
|
+
end
|
File without changes
|
data/lib/randomperson.rb
CHANGED
@@ -1,17 +1,23 @@
|
|
1
|
-
#
|
1
|
+
# encoding: UTF-8
|
2
|
+
module RandomPerson
|
2
3
|
|
3
|
-
require
|
4
|
-
|
4
|
+
#require all the scaffolding
|
5
|
+
|
6
|
+
require 'set'
|
7
|
+
require 'date'
|
8
|
+
|
9
|
+
require_relative './randomperson/version.rb'
|
10
|
+
require_relative './randomperson/ext/Array.rb'
|
11
|
+
require_relative './randomperson/ext/Date.rb'
|
12
|
+
require_relative './randomperson/ext/Enumerable.rb'
|
13
|
+
require_relative './randomperson/ext/Hash.rb'
|
14
|
+
require_relative './randomperson/ext/Kernel.rb'
|
15
|
+
require_relative './randomperson/ext/Set.rb'
|
16
|
+
|
17
|
+
require_relative './randomperson/choice.rb'
|
18
|
+
require_relative './randomperson/generator.rb'
|
19
|
+
require_relative './randomperson/name.rb'
|
20
|
+
require_relative './randomperson/person.rb'
|
21
|
+
#require_relative './randomperson/ratio.rb'
|
5
22
|
|
6
|
-
|
7
|
-
require_relative 'randomperson/ext/Date.rb'
|
8
|
-
require_relative 'randomperson/ext/Enumerable.rb'
|
9
|
-
require_relative 'randomperson/ext/Hash.rb'
|
10
|
-
require_relative 'randomperson/ext/Kernel.rb'
|
11
|
-
require_relative 'randomperson/ext/Set.rb'
|
12
|
-
|
13
|
-
require_relative 'randomperson/choice.rb'
|
14
|
-
require_relative 'randomperson/generator.rb'
|
15
|
-
require_relative 'randomperson/name.rb'
|
16
|
-
require_relative 'randomperson/person.rb'
|
17
|
-
#require_relative 'randomperson/ratio.rb'
|
23
|
+
end
|
data/randomperson.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
lib = File.expand_path('../lib/', __FILE__)
|
3
3
|
$:.unshift lib unless $:.include?(lib)
|
4
|
-
|
4
|
+
require 'randomperson/version'
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "randomperson"
|
@@ -9,16 +9,16 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.description = <<-EOF
|
10
10
|
RandomPerson is a port to Ruby of Perl's Data::RandomPerson. Use it to generate random persons given various parameters, such as country, age and gender ratio.
|
11
11
|
EOF
|
12
|
-
s.version =
|
12
|
+
s.version = RandomPerson::VERSION
|
13
13
|
s.platform = Gem::Platform::RUBY
|
14
|
-
s.
|
14
|
+
s.require_path = 'lib'
|
15
15
|
s.required_ruby_version = ">= 1.9.1"
|
16
16
|
s.author = "Iain Barnett"
|
17
|
-
s.files
|
18
|
-
s.files
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
19
20
|
s.homepage = "http://github.com/yb66/RandomPerson"
|
20
21
|
s.email = "iainspeed @nospam@ gmail.com"
|
21
|
-
s.test_files = Dir.glob('test/*.t')
|
22
22
|
s.signing_key = ENV['HOME'] + '/.ssh/gem-private_key.pem'
|
23
23
|
s.cert_chain = [ENV['HOME'] + '/.ssh/gem-public_cert.pem']
|
24
24
|
end
|
data/spec/choice_spec.rb
ADDED
data/spec/name_spec.rb
ADDED
data/test/test_Choice.rb
ADDED
@@ -0,0 +1,140 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'set'
|
3
|
+
require_relative '../lib/randomperson/ext/Set.rb'
|
4
|
+
require_relative '../lib/randomperson/ext/Enumerable.rb'
|
5
|
+
require_relative '../lib/randomperson/ext/Kernel.rb'
|
6
|
+
require_relative '../lib/randomperson/Name.rb'
|
7
|
+
require_relative '../lib/randomperson/Names/AmericanFemaleFirst.rb'
|
8
|
+
require_relative '../lib/randomperson/Names/AmericanMaleFirst.rb'
|
9
|
+
require_relative '../lib/randomperson/Names/AmericanLast.rb'
|
10
|
+
require_relative '../lib/randomperson/Names/BritishPrefix.rb'
|
11
|
+
require_relative '../lib/randomperson/Names/BritishSuffix.rb'
|
12
|
+
require_relative '../lib/randomperson/choice.rb'
|
13
|
+
|
14
|
+
|
15
|
+
|
16
|
+
class TestTask < Test::Unit::TestCase
|
17
|
+
|
18
|
+
def test_construction
|
19
|
+
#default choice
|
20
|
+
choice = RandomPerson::Choice.new
|
21
|
+
assert_not_nil choice
|
22
|
+
assert_equal [1,1] , choice.gender_ratio
|
23
|
+
assert_equal 0, choice.age_lower
|
24
|
+
assert_equal 100, choice.age_upper
|
25
|
+
|
26
|
+
|
27
|
+
choice2 = RandomPerson::Choice.new( gender_ratio:[2,1] )
|
28
|
+
assert_not_nil choice2
|
29
|
+
assert_equal [2,1] , choice2.gender_ratio
|
30
|
+
assert_equal 0, choice2.age_lower
|
31
|
+
assert_equal 100, choice2.age_upper
|
32
|
+
|
33
|
+
|
34
|
+
choice3 = RandomPerson::Choice.new( age_lower: 20 )
|
35
|
+
assert_not_nil choice3
|
36
|
+
assert_equal [1,1] , choice3.gender_ratio
|
37
|
+
assert_equal 20, choice3.age_lower
|
38
|
+
assert_equal 100, choice3.age_upper
|
39
|
+
|
40
|
+
|
41
|
+
choice4 = RandomPerson::Choice.new( age_upper: 50 )
|
42
|
+
assert_not_nil choice4
|
43
|
+
assert_equal [1,1] , choice4.gender_ratio
|
44
|
+
assert_equal 0, choice4.age_lower
|
45
|
+
assert_equal 50, choice4.age_upper
|
46
|
+
|
47
|
+
|
48
|
+
choice5 = RandomPerson::Choice.new( gender_ratio:[10,1], age_upper: 105 )
|
49
|
+
assert_not_nil choice5
|
50
|
+
assert_equal [10,1] , choice5.gender_ratio
|
51
|
+
assert_equal 0, choice5.age_lower
|
52
|
+
assert_equal 105, choice5.age_upper
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_reset_names
|
56
|
+
|
57
|
+
choice = RandomPerson::Choice.new
|
58
|
+
choice.add_American
|
59
|
+
choice.add_British
|
60
|
+
|
61
|
+
assert_not_nil choice.malefirst
|
62
|
+
assert_not_nil choice.femalefirst
|
63
|
+
assert_not_nil choice.last
|
64
|
+
assert_not_nil choice.prefix
|
65
|
+
assert_not_nil choice.suffix
|
66
|
+
|
67
|
+
choice.reset_names
|
68
|
+
|
69
|
+
assert_nil choice.malefirst
|
70
|
+
assert_nil choice.femalefirst
|
71
|
+
assert_nil choice.last
|
72
|
+
assert_nil choice.prefix
|
73
|
+
assert_nil choice.suffix
|
74
|
+
|
75
|
+
end
|
76
|
+
|
77
|
+
#this is a test for method_missing add_NAME method
|
78
|
+
def test_add_NAME
|
79
|
+
|
80
|
+
choice = RandomPerson::Choice.new
|
81
|
+
assert_nil choice.malefirst
|
82
|
+
assert_nil choice.femalefirst
|
83
|
+
assert_nil choice.last
|
84
|
+
assert_nil choice.prefix
|
85
|
+
assert_nil choice.suffix
|
86
|
+
|
87
|
+
choice.add_American
|
88
|
+
choice.add_British
|
89
|
+
|
90
|
+
assert_not_nil choice.malefirst
|
91
|
+
assert_not_nil choice.femalefirst
|
92
|
+
assert_not_nil choice.last
|
93
|
+
assert_not_nil choice.prefix
|
94
|
+
assert_not_nil choice.suffix
|
95
|
+
|
96
|
+
assert_instance_of RandomPerson::Names::AmericanMaleFirst, choice.malefirst
|
97
|
+
assert_instance_of RandomPerson::Names::AmericanFemaleFirst, choice.femalefirst
|
98
|
+
assert_instance_of RandomPerson::Names::AmericanLast, choice.last
|
99
|
+
assert_instance_of RandomPerson::Names::BritishPrefix, choice.prefix
|
100
|
+
assert_instance_of RandomPerson::Names::BritishSuffix, choice.suffix
|
101
|
+
end
|
102
|
+
|
103
|
+
def test_load_names
|
104
|
+
choice = RandomPerson::Choice.new
|
105
|
+
assert_not_nil choice.available_classes
|
106
|
+
|
107
|
+
len = choice.available_classes.length
|
108
|
+
|
109
|
+
|
110
|
+
assert_not_equal 0, len
|
111
|
+
|
112
|
+
choice2 = RandomPerson::Choice.new( gender_ratio:[10,1], age_lower: 25, age_upper: 105 )
|
113
|
+
|
114
|
+
assert_not_nil choice2.available_classes #just for the helluvit
|
115
|
+
|
116
|
+
assert_equal len, choice.available_classes.length
|
117
|
+
assert_equal len, choice2.available_classes.length
|
118
|
+
|
119
|
+
end
|
120
|
+
|
121
|
+
|
122
|
+
def test_reset_parameters
|
123
|
+
choice = RandomPerson::Choice.new
|
124
|
+
choice.reset_parameters
|
125
|
+
|
126
|
+
assert_nil choice.gender_ratio
|
127
|
+
assert_nil choice.age_lower
|
128
|
+
assert_nil choice.age_upper
|
129
|
+
|
130
|
+
|
131
|
+
choice2 = RandomPerson::Choice.new( gender_ratio:[10,1], age_lower: 25, age_upper: 105 )
|
132
|
+
choice2.reset_parameters
|
133
|
+
|
134
|
+
assert_nil choice2.gender_ratio
|
135
|
+
assert_nil choice2.age_lower
|
136
|
+
assert_nil choice2.age_upper
|
137
|
+
end
|
138
|
+
|
139
|
+
|
140
|
+
end
|
@@ -0,0 +1,111 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'date'
|
3
|
+
require_relative '../lib/randomperson/ext/Date.rb'
|
4
|
+
require_relative '../lib/randomperson/generator.rb'
|
5
|
+
|
6
|
+
require 'set'
|
7
|
+
require_relative '../lib/randomperson/ext/Set.rb'
|
8
|
+
require_relative '../lib/randomperson/ext/Enumerable.rb'
|
9
|
+
require_relative '../lib/randomperson/ext/Kernel.rb'
|
10
|
+
require_relative '../lib/randomperson/Name.rb'
|
11
|
+
require_relative '../lib/randomperson/Names/AmericanFemaleFirst.rb'
|
12
|
+
require_relative '../lib/randomperson/Names/AmericanMaleFirst.rb'
|
13
|
+
require_relative '../lib/randomperson/Names/AmericanLast.rb'
|
14
|
+
require_relative '../lib/randomperson/Names/BritishPrefix.rb'
|
15
|
+
require_relative '../lib/randomperson/Names/BritishSuffix.rb'
|
16
|
+
require_relative '../lib/randomperson/choice.rb'
|
17
|
+
|
18
|
+
require_relative '../lib/randomperson/ext/Array.rb'
|
19
|
+
require_relative '../lib/randomperson/ext/Hash.rb'
|
20
|
+
require_relative '../lib/randomperson/person.rb'
|
21
|
+
|
22
|
+
|
23
|
+
class TestTask < Test::Unit::TestCase
|
24
|
+
|
25
|
+
# def setup
|
26
|
+
# g = RandomPerson::Generator.new
|
27
|
+
# end
|
28
|
+
|
29
|
+
# def teardown
|
30
|
+
# end
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
def test_make_generator
|
35
|
+
|
36
|
+
choice = RandomPerson::Choice.new
|
37
|
+
choice.add_American
|
38
|
+
choice.add_British
|
39
|
+
|
40
|
+
g = RandomPerson::Generator.new
|
41
|
+
|
42
|
+
assert g.generators.empty?
|
43
|
+
|
44
|
+
g.make_generator choice
|
45
|
+
|
46
|
+
assert_not_nil g.generators
|
47
|
+
assert_equal 1, g.generators.length
|
48
|
+
|
49
|
+
assert_instance_of RandomPerson::Person, g.generators[0].call
|
50
|
+
|
51
|
+
people = [ ]
|
52
|
+
|
53
|
+
10000.times { people << g.generators[0].call }
|
54
|
+
|
55
|
+
assert_nil people.uniq!
|
56
|
+
|
57
|
+
end
|
58
|
+
|
59
|
+
def test_ratiod
|
60
|
+
assert_kind_of Array, RandomPerson::Generator.ratiod( [1,1] )
|
61
|
+
assert_kind_of Range, RandomPerson::Generator.ratiod([1,1]).first
|
62
|
+
assert_equal 25, RandomPerson::Generator.ratiod([1,3]).first.end
|
63
|
+
end
|
64
|
+
|
65
|
+
def test_pick_gender
|
66
|
+
assert_not_nil RandomPerson::Generator.pick_gender()
|
67
|
+
assert_equal( RandomPerson::Generator.pick_gender([1,0]), 'm' )
|
68
|
+
assert_equal( RandomPerson::Generator.pick_gender([0,1]), 'f' )
|
69
|
+
|
70
|
+
assert_equal( RandomPerson::Generator.pick_gender([10,0]), 'm' )
|
71
|
+
assert_equal( RandomPerson::Generator.pick_gender([0,10]), 'f' )
|
72
|
+
end
|
73
|
+
|
74
|
+
def test_reset
|
75
|
+
# choice = RandomPerson::Choice.new
|
76
|
+
# choice2 = RandomPerson::Choice.new
|
77
|
+
g = RandomPerson::Generator.new
|
78
|
+
# g.make_generator choice
|
79
|
+
# g.make_generator choice2
|
80
|
+
# assert_equal( 2, g.generators.length )
|
81
|
+
# g.reset
|
82
|
+
# assert_equal( 2, g.generators.length )
|
83
|
+
# assert( g.generators.empty? )
|
84
|
+
end
|
85
|
+
|
86
|
+
def test_pick_age
|
87
|
+
n = 2000
|
88
|
+
while n > 0
|
89
|
+
r1 = rand(100)
|
90
|
+
r2 = rand(100) + r1
|
91
|
+
age = RandomPerson::Generator.pick_age(r1, r2)
|
92
|
+
assert_not_nil age
|
93
|
+
assert( r2 >= age && age >= r1, "age #{age} r1 #{r1} r2 #{r2}" )
|
94
|
+
n = n - 1
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
def test_pick_dob
|
99
|
+
n = 1000
|
100
|
+
while n > 0
|
101
|
+
r1 = rand(100)
|
102
|
+
dob = RandomPerson::Generator.pick_dob(r1)
|
103
|
+
assert_not_nil dob
|
104
|
+
assert_kind_of Time, dob
|
105
|
+
assert_equal Time.now.year - r1, dob.year
|
106
|
+
n = n - 1
|
107
|
+
end
|
108
|
+
end
|
109
|
+
|
110
|
+
|
111
|
+
end
|
data.tar.gz.sig
CHANGED
Binary file
|