Class: Experiment

Inherits:
Object
  • Object
show all
Defined in:
lib/json/experiment.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(args = {}) ⇒ Experiment

Returns a new instance of Experiment.



12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/json/experiment.rb', line 12

def initialize(args = {})
  args.each do |name, value|
    if name == :applications
      @applications = assign_to_klass(ExperimentApplication, value)
    elsif name == :variants
      @variants = assign_to_klass(ExperimentVariant, value)
    else
      self.instance_variable_set("@#{name.to_s.underscore}", value)
    end
  end
  @audience_strict ||= false
  self
end

Instance Attribute Details

#applicationsObject

Returns the value of attribute applications.



8
9
10
# File 'lib/json/experiment.rb', line 8

def applications
  @applications
end

#audienceObject

Returns the value of attribute audience.



8
9
10
# File 'lib/json/experiment.rb', line 8

def audience
  @audience
end

#audience_strictObject

Returns the value of attribute audience_strict.



8
9
10
# File 'lib/json/experiment.rb', line 8

def audience_strict
  @audience_strict
end

#full_on_variantObject

Returns the value of attribute full_on_variant.



8
9
10
# File 'lib/json/experiment.rb', line 8

def full_on_variant
  @full_on_variant
end

#idObject

Returns the value of attribute id.



8
9
10
# File 'lib/json/experiment.rb', line 8

def id
  @id
end

#iterationObject

Returns the value of attribute iteration.



8
9
10
# File 'lib/json/experiment.rb', line 8

def iteration
  @iteration
end

#nameObject

Returns the value of attribute name.



8
9
10
# File 'lib/json/experiment.rb', line 8

def name
  @name
end

#seed_hiObject

Returns the value of attribute seed_hi.



8
9
10
# File 'lib/json/experiment.rb', line 8

def seed_hi
  @seed_hi
end

#seed_loObject

Returns the value of attribute seed_lo.



8
9
10
# File 'lib/json/experiment.rb', line 8

def seed_lo
  @seed_lo
end

#splitObject

Returns the value of attribute split.



8
9
10
# File 'lib/json/experiment.rb', line 8

def split
  @split
end

#traffic_seed_hiObject

Returns the value of attribute traffic_seed_hi.



8
9
10
# File 'lib/json/experiment.rb', line 8

def traffic_seed_hi
  @traffic_seed_hi
end

#traffic_seed_loObject

Returns the value of attribute traffic_seed_lo.



8
9
10
# File 'lib/json/experiment.rb', line 8

def traffic_seed_lo
  @traffic_seed_lo
end

#traffic_splitObject

Returns the value of attribute traffic_split.



8
9
10
# File 'lib/json/experiment.rb', line 8

def traffic_split
  @traffic_split
end

#unit_typeObject

Returns the value of attribute unit_type.



8
9
10
# File 'lib/json/experiment.rb', line 8

def unit_type
  @unit_type
end

#variantsObject

Returns the value of attribute variants.



8
9
10
# File 'lib/json/experiment.rb', line 8

def variants
  @variants
end

Instance Method Details

#==(o) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'lib/json/experiment.rb', line 34

def ==(o)
  return true if self.object_id == o.object_id
  return false if o.nil? || self.class != o.class

  that = o
  @id == that.id && @iteration == that.iteration && @seed_hi == that.seed_hi && @seed_lo == that.seed_lo &&
    @traffic_seed_hi == that.traffic_seed_hi && @traffic_seed_lo == that.traffic_seed_lo &&
    @full_on_variant == that.full_on_variant && @name == that.name &&
    @unit_type == that.unit_type && @split == that.split &&
    @traffic_split == that.traffic_split && @applications == that.applications &&
    @variants == that.variants && @audience_strict == that.audience_strict &&
    @audience == that.audience
end

#assign_to_klass(klass, arr) ⇒ Object



26
27
28
29
30
31
32
# File 'lib/json/experiment.rb', line 26

def assign_to_klass(klass, arr)
  arr.map do |item|
    return item if item.is_a?(klass)

    klass.new(*item.values)
  end
end

#hash_codeObject



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/json/experiment.rb', line 48

def hash_code
  {
    id: @id,
    name: @name,
    unit_type: @unit_type,
    iteration: @iteration,
    seed_hi: @seed_hi,
    seed_lo: @seed_lo,
    traffic_seed_hi: @traffic_seed_hi,
    traffic_seed_lo: @traffic_seed_lo,
    full_on_variant: @full_on_variant,
    audience_strict: @audience_strict,
    audience: @audience
  }
end

#to_sObject



64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/json/experiment.rb', line 64

def to_s
  "ContextExperiment{" +
    "id= #{@id}"+
    ", name='#{@name}'" +
    ", unitType='#{@unit_type}'" +
    ", iteration=#{@iteration}" +
    ", seedHi=#{@seed_hi}" +
    ", seedLo=#{@seed_lo}" +
    ", split=#{@split.join}" +
    ", trafficSeedHi=#{@traffic_seed_hi}" +
    ", trafficSeedLo=#{@traffic_seed_lo}" +
    ", trafficSplit=#{@traffic_split.join}" +
    ", fullOnVariant=#{@full_on_variant}" +
    ", applications=#{@applications.join}" +
    ", variants=#{@variants.join}" +
    ", audienceStrict=#{@audience_strict}" +
    ", audience='#{@audience}'" +
    "}"
end