variation 0.2.0 → 0.2.1

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.
@@ -19,5 +19,11 @@ class Change
19
19
  def end_value= end_value
20
20
  @end_value = end_value
21
21
  end
22
+
23
+ def ==(other)
24
+ length == other.length &&
25
+ end_value == other.end_value &&
26
+ self.class == other.class
27
+ end
22
28
  end
23
29
  end
@@ -15,6 +15,11 @@ class Profile
15
15
  trim_changes_if_needed @changes
16
16
  end
17
17
 
18
+ def ==(other)
19
+ @start_value == other.start_value &&
20
+ @changes == other.changes
21
+ end
22
+
18
23
  def length
19
24
  length = 0
20
25
  if @changes.any?
@@ -1,4 +1,4 @@
1
1
  module Variation
2
2
  # variation version
3
- VERSION = "0.2.0"
3
+ VERSION = "0.2.1"
4
4
  end
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+
3
+ describe Change do
4
+ describe '#==' do
5
+ context 'same change class' do
6
+ context 'same length and end value' do
7
+ it 'should return true' do
8
+ c1 = LinearChange.new(:end_value => 2, :length => 1)
9
+ c2 = LinearChange.new(:end_value => 2, :length => 1)
10
+ (c1 == c2).should be_true
11
+ end
12
+ end
13
+
14
+ context 'different length and/or end value' do
15
+ it 'should return false' do
16
+ c1 = LinearChange.new(:end_value => 3, :length => 1)
17
+ c2 = LinearChange.new(:end_value => 2, :length => 1)
18
+ (c1 == c2).should be_false
19
+ end
20
+ end
21
+ end
22
+
23
+ context 'different change class' do
24
+ context 'same length and end value' do
25
+ it 'should return false' do
26
+ c1 = LinearChange.new(:end_value => 2, :length => 1)
27
+ c2 = SigmoidChange.new(:end_value => 2, :length => 1)
28
+ (c1 == c2).should be_false
29
+ end
30
+ end
31
+
32
+ context 'different length and/or end value' do
33
+ it 'should return false' do
34
+ c1 = LinearChange.new(:end_value => 2, :length => 3)
35
+ c2 = LinearChange.new(:end_value => 2, :length => 1)
36
+ (c1 == c2).should be_false
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -11,3 +11,6 @@ end
11
11
 
12
12
  describe RangeNotIncreasingError do
13
13
  end
14
+
15
+ describe HashedArgMissingError do
16
+ end
@@ -32,6 +32,60 @@ describe Profile do
32
32
  end
33
33
  end
34
34
 
35
+ describe '#==' do
36
+ context 'start values are equal' do
37
+ context 'changes are not all equal' do
38
+ it 'should return false' do
39
+ p1 = Profile.new(:start_value => 2, :changes => {
40
+ 1 => LinearChange.new(:end_value => 4, :length => 2)
41
+ })
42
+ p2 = Profile.new(:start_value => 2, :changes => {
43
+ 1 => LinearChange.new(:end_value => 5, :length => 2)
44
+ })
45
+ (p1 == p2).should be_false
46
+ end
47
+ end
48
+
49
+ context 'changes are all equal' do
50
+ it 'should return true' do
51
+ p1 = Profile.new(:start_value => 2, :changes => {
52
+ 1 => LinearChange.new(:end_value => 5, :length => 2)
53
+ })
54
+ p2 = Profile.new(:start_value => 2, :changes => {
55
+ 1 => LinearChange.new(:end_value => 5, :length => 2)
56
+ })
57
+ (p1 == p2).should be_true
58
+ end
59
+ end
60
+ end
61
+
62
+ context 'start values are not equal' do
63
+ context 'changes are not all equal' do
64
+ it 'should return false' do
65
+ p1 = Profile.new(:start_value => 1, :changes => {
66
+ 1 => LinearChange.new(:end_value => 4, :length => 2)
67
+ })
68
+ p2 = Profile.new(:start_value => 2, :changes => {
69
+ 1 => LinearChange.new(:end_value => 5, :length => 2)
70
+ })
71
+ (p1 == p2).should be_false
72
+ end
73
+ end
74
+
75
+ context 'changes are all equal' do
76
+ it 'should return false' do
77
+ p1 = Profile.new(:start_value => 1, :changes => {
78
+ 1 => LinearChange.new(:end_value => 5, :length => 2)
79
+ })
80
+ p2 = Profile.new(:start_value => 2, :changes => {
81
+ 1 => LinearChange.new(:end_value => 5, :length => 2)
82
+ })
83
+ (p1 == p2).should be_false
84
+ end
85
+ end
86
+ end
87
+ end
88
+
35
89
  describe '#function' do
36
90
  before :all do
37
91
  @profiles = [
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: variation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -103,6 +103,7 @@ files:
103
103
  - lib/variation/profile.rb
104
104
  - lib/variation/range.rb
105
105
  - lib/variation/version.rb
106
+ - spec/change_spec.rb
106
107
  - spec/changes/immediate_change_spec.rb
107
108
  - spec/changes/linear_change_spec.rb
108
109
  - spec/changes/sigmoid_change_spec.rb
@@ -142,6 +143,7 @@ specification_version: 3
142
143
  summary: Compute values that change with time, with various transitions (immediate,
143
144
  linear, sigmoid)
144
145
  test_files:
146
+ - spec/change_spec.rb
145
147
  - spec/changes/immediate_change_spec.rb
146
148
  - spec/changes/linear_change_spec.rb
147
149
  - spec/changes/sigmoid_change_spec.rb