amee-data-abstraction 1.3.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (39) hide show
  1. data/.rvmrc +1 -1
  2. data/CHANGELOG.txt +0 -3
  3. data/Gemfile +5 -7
  4. data/Gemfile.lock +20 -14
  5. data/README.txt +15 -28
  6. data/Rakefile +17 -16
  7. data/VERSION +1 -1
  8. data/amee-data-abstraction.gemspec +21 -24
  9. data/lib/amee-data-abstraction.rb +6 -0
  10. data/lib/amee-data-abstraction/calculation.rb +1 -1
  11. data/lib/amee-data-abstraction/calculation_set.rb +10 -152
  12. data/lib/amee-data-abstraction/drill.rb +6 -23
  13. data/lib/amee-data-abstraction/input.rb +0 -24
  14. data/lib/amee-data-abstraction/ongoing_calculation.rb +9 -13
  15. data/lib/amee-data-abstraction/term.rb +13 -31
  16. data/spec/amee-data-abstraction/calculation_set_spec.rb +11 -245
  17. data/spec/amee-data-abstraction/calculation_spec.rb +18 -23
  18. data/spec/amee-data-abstraction/drill_spec.rb +7 -34
  19. data/spec/amee-data-abstraction/input_spec.rb +73 -113
  20. data/spec/amee-data-abstraction/metadatum_spec.rb +1 -1
  21. data/spec/amee-data-abstraction/ongoing_calculation_spec.rb +29 -45
  22. data/spec/amee-data-abstraction/profile_spec.rb +2 -2
  23. data/spec/amee-data-abstraction/prototype_calculation_spec.rb +11 -18
  24. data/spec/amee-data-abstraction/term_spec.rb +8 -50
  25. data/spec/amee-data-abstraction/terms_list_spec.rb +12 -16
  26. data/spec/config/amee_units_spec.rb +2 -1
  27. data/spec/core-extensions/class_spec.rb +18 -18
  28. data/spec/core-extensions/hash_spec.rb +2 -1
  29. data/spec/core-extensions/ordered_hash_spec.rb +2 -1
  30. data/spec/core-extensions/proc_spec.rb +1 -1
  31. data/spec/fixtures/{config/electricity.rb → electricity.rb} +2 -2
  32. data/spec/fixtures/electricity_and_transport.rb +55 -0
  33. data/spec/fixtures/{config/calculations/transport.rb → transport.rb} +2 -2
  34. data/spec/spec_helper.rb +7 -43
  35. metadata +56 -61
  36. data/init.rb +0 -4
  37. data/rails/init.rb +0 -32
  38. data/spec/fixtures/config/calculations/electricity.rb +0 -35
  39. data/spec/fixtures/config/calculations/electricity_and_transport.rb +0 -53
@@ -1,58 +1,53 @@
1
- require 'spec_helper'
2
-
1
+ require File.dirname(File.dirname(__FILE__)) + '/spec_helper.rb'
3
2
  describe Calculation do
4
3
 
5
- before :all do
6
- @calc = CalculationSet.find("transport")[:transport]
7
- end
8
-
9
4
  it 'can create an instance' do
10
- @calc.should be_a Calculation
5
+ Transport.should be_a Calculation
11
6
  end
12
7
  it 'should have ordered terms, with labels' do
13
- @calc.terms.labels.should eql [:fuel,:size,:distance,:co2]
8
+ Transport.terms.labels.should eql [:fuel,:size,:distance,:co2]
14
9
  end
15
10
  it 'should have amee paths for the terms' do
16
- @calc.terms.paths.should eql ['fuel','size','distance','default']
11
+ Transport.terms.paths.should eql ['fuel','size','distance',:default]
17
12
  end
18
13
  it 'should have human names for the terms' do
19
- @calc.terms.names.
14
+ Transport.terms.names.
20
15
  should eql ['Fuel Type','Vehicle Size','Distance Driven','Carbon Dioxide']
21
16
  end
22
17
  it 'should return the inputs' do
23
- @calc.inputs.labels.should eql [:fuel,:size,:distance]
18
+ Transport.inputs.labels.should eql [:fuel,:size,:distance]
24
19
  end
25
20
  it 'should return the outputs' do
26
- @calc.outputs.labels.should eql [:co2]
21
+ Transport.outputs.labels.should eql [:co2]
27
22
  end
28
23
  it 'should generate an discover URL' do
29
- @calc.discover_url.should eql 'http://discover.amee.com/categories/transport/car/generic'
24
+ Transport.discover_url.should eql 'http://discover.amee.com/categories/transport/car/generic'
30
25
  end
31
26
  it 'should redirect to discover URL' do
32
- @calc.explorer_url.should eql 'http://discover.amee.com/categories/transport/car/generic'
27
+ Transport.explorer_url.should eql 'http://discover.amee.com/categories/transport/car/generic'
33
28
  end
34
29
  it 'can return a term via []' do
35
- @calc[:co2].label.should eql :co2
30
+ Transport[:co2].label.should eql :co2
36
31
  end
37
32
  it 'when copied, should deep copy the values' do
38
- x=@calc.clone
33
+ x=Transport.clone
39
34
  x[:co2].value :somevalue
40
35
  x[:co2].value.should eql :somevalue
41
- @calc[:co2].value.should be_nil
36
+ Transport[:co2].value.should be_nil
42
37
  end
43
38
  it 'knows to get terms that come before or after others' do
44
- t=@calc.clone
39
+ t=Transport.clone
45
40
  t.before(:distance).labels.
46
41
  should eql [:fuel,:size]
47
42
  t.after(:distance).map(&:label).
48
43
  should eql [:co2]
49
44
  end
50
45
  it 'delegates selectors to terms list' do
51
- t=@calc.clone
46
+ t=Transport.clone
52
47
  t.drills.labels.should eql [:fuel,:size]
53
48
  end
54
49
  it 'can find its amee data category' do
55
- t=@calc.clone
50
+ t=Transport.clone
56
51
  mocker=AMEEMocker.new self,:path=>'transport/car/generic'
57
52
  mocker.data_category
58
53
  t.send(:amee_data_category).path.should eql '/data/transport/car/generic'
@@ -60,18 +55,18 @@ describe Calculation do
60
55
  it 'can find its amee item definition' do
61
56
  mocker=AMEEMocker.new self,:path=>'transport/car/generic'
62
57
  mocker.item_definition(:my_itemdef_name).data_category
63
- t=@calc.clone
58
+ t=Transport.clone
64
59
  t.send(:amee_item_definition).name.should eql :my_itemdef_name
65
60
  end
66
61
  it 'can give item value definition list' do
67
62
  mocker=AMEEMocker.new self,:path=>'transport/car/generic'
68
63
  mocker.item_value_definition('distance').item_value_definitions.
69
64
  item_definition.data_category
70
- t=@calc.clone
65
+ t=Transport.clone
71
66
  t.send(:amee_ivds).first.path.should eql 'distance'
72
67
  end
73
68
  it 'can memoise access to AMEE' do
74
- t=@calc.clone
69
+ t=Transport.clone
75
70
  #AMEE::Data::Category.get(connection, "/data#{path}")
76
71
  flexmock(AMEE::Data::Category).should_receive(:get).
77
72
  with(AMEE::DataAbstraction.connection,'/data/transport/car/generic').
@@ -1,30 +1,21 @@
1
- require 'spec_helper'
2
-
1
+ require File.dirname(File.dirname(__FILE__)) + '/spec_helper.rb'
3
2
  describe Drill do
4
-
5
-
6
- before :all do
7
- @calc = CalculationSet.find("transport")[:transport]
8
- end
9
-
10
3
  it 'knows its options when it is the first choice' do
11
4
  AMEEMocker.new(self,:path=>'transport/car/generic',
12
5
  :selections=>[],
13
6
  :choices=>['diesel','petrol']).drill
14
- @calc.begin_calculation[:fuel].send(:choices).should eql ['diesel','petrol']
7
+ Transport.begin_calculation[:fuel].send(:choices).should eql ['diesel','petrol']
15
8
  end
16
-
17
9
  it 'knows its options when it is a later choice' do
18
10
  AMEEMocker.new(self,:path=>'transport/car/generic',
19
11
  :selections=>[['fuel','diesel']],
20
12
  :choices=>['large','small']).drill
21
- t=@calc.begin_calculation
13
+ t=Transport.begin_calculation
22
14
  t[:fuel].value 'diesel'
23
15
  t[:size].send(:choices).should eql ['large','small']
24
16
  end
25
-
26
- it 'is enabled if it is the next choice or has been chosen' do
27
- t=@calc.begin_calculation
17
+ it 'is enabled iff it is the next choice or has been chosen' do
18
+ t=Transport.begin_calculation
28
19
  t[:fuel].enabled?.should be_true
29
20
  t[:size].enabled?.should be_false
30
21
  t[:fuel].value 'diesel'
@@ -34,32 +25,14 @@ describe Drill do
34
25
  t[:fuel].enabled?.should be_true
35
26
  t[:size].enabled?.should be_true
36
27
  end
37
-
38
- it 'is valid if assigned a choice in the choices' do
28
+ it 'is valid iff assigned a choice in the choices' do
39
29
  AMEEMocker.new(self,:path=>'transport/car/generic',
40
30
  :selections=>[],
41
31
  :choices=>['diesel','petrol']).drill
42
- t=@calc.begin_calculation
32
+ t=Transport.begin_calculation
43
33
  t[:fuel].value 'diesel'
44
34
  t[:fuel].send(:valid?).should be_true
45
35
  t[:fuel].value 'banana'
46
36
  t[:fuel].send(:valid?).should be_false
47
37
  end
48
-
49
- it "should set and get custom choices" do
50
- t=@calc.begin_calculation
51
- t[:fuel].choices 'anthracite', 'lignite'
52
- t[:fuel].choices.should eql ['anthracite', 'lignite']
53
- end
54
-
55
- it 'is sets correct single choice if AMEE skips during drill' do
56
- mocker = AMEEMocker.new(self,:path=>'transport/car/generic',
57
- :selections=>[['fuel','diesel']])
58
- mocker.drill_with_skip('size'=>'small')
59
- t=@calc.begin_calculation
60
- t[:fuel].value 'diesel'
61
- t[:fuel].should_not be_disabled
62
- t[:size].choices.should eql ['small']
63
- t[:size].should be_disabled
64
- end
65
38
  end
@@ -1,117 +1,77 @@
1
- require 'spec_helper'
1
+ require File.dirname(File.dirname(__FILE__)) + '/spec_helper.rb'
2
2
 
3
3
  describe Input do
4
-
5
- it 'can be given a fixed value' do
6
- i=Input.new{fixed 6}
7
- i.value.should eql 6
8
- i.fixed?.should be_true
9
- lambda{i.value 7}.should raise_error Exceptions::FixedValueInterference
10
- end
4
+ it 'can be given a fixed value' do
5
+ i=Input.new{fixed 6}
6
+ i.value.should eql 6
7
+ i.fixed?.should be_true
8
+ lambda{i.value 7}.should raise_error Exceptions::FixedValueInterference
9
+ end
10
+ it 'raises exception when invalid' do
11
+ i=Input.new{validation /bark/}
12
+ i.value 'barking'
13
+ lambda{i.validate!}.should_not raise_error
14
+ i.value.should eql 'barking'
15
+ i.value 'marking'
16
+ lambda{i.validate!}.should raise_error Exceptions::ChoiceValidation
17
+ j=Input.new{}
18
+ j.value 'marking'
19
+ j.value.should eql 'marking'
20
+ end
21
+ it "can accept a numeric symbol validation" do
22
+ i=Input.new{validation :numeric}
23
+ i.value 3
24
+ lambda{i.validate!}.should_not raise_error
25
+ i.value '3'
26
+ lambda{i.validate!}.should_not raise_error
27
+ i.value 'e'
28
+ lambda{i.validate!}.should raise_error Exceptions::ChoiceValidation
29
+ end
30
+ it "can accept a date symbol validation" do
31
+ i=Input.new{validation :date}
32
+ i.value Date.today
33
+ lambda{i.validate!}.should_not raise_error
34
+ i.value '2011-01-01'
35
+ lambda{i.validate!}.should_not raise_error
36
+ i.value 'e'
37
+ lambda{i.validate!}.should raise_error Exceptions::ChoiceValidation
38
+ end
11
39
 
12
- it "can be made optional" do
13
- i=Input.new{label :mass; value 6}
14
- i.should_not be_optional
15
- i.should be_compulsory
16
- i.optional!
17
- i.should be_optional
18
- i.should_not be_compulsory
19
- end
20
-
21
- it "can be made compulsory" do
22
- i=Input.new{label :mass; value 6}
23
- i.should_not be_optional
24
- i.optional!
25
- i.should be_optional
26
- i.should_not be_compulsory
27
- i.compulsory!
28
- i.should_not be_optional
29
- i.should be_compulsory
30
- end
31
-
32
- it 'raises exception when invalid' do
33
- i=Input.new{validation /bark/}
34
- i.value 'barking'
35
- lambda{i.validate!}.should_not raise_error
36
- i.value.should eql 'barking'
37
- i.value 'marking'
38
- lambda{i.validate!}.should raise_error Exceptions::ChoiceValidation
39
- j=Input.new{}
40
- j.value 'marking'
41
- j.value.should eql 'marking'
42
- end
43
-
44
- it "can accept a numeric symbol validation" do
45
- i=Input.new{validation :numeric}
46
- i.value 3
47
- lambda{i.validate!}.should_not raise_error
48
- i.value '3'
49
- lambda{i.validate!}.should_not raise_error
50
- i.value 'e'
51
- lambda{i.validate!}.should raise_error Exceptions::ChoiceValidation
52
- end
53
-
54
- it "can accept a date symbol validation" do
55
- i=Input.new{validation :date}
56
- i.value Date.today
57
- lambda{i.validate!}.should_not raise_error
58
- i.value '2011-01-01'
59
- lambda{i.validate!}.should_not raise_error
60
- i.value 'e'
61
- lambda{i.validate!}.should raise_error Exceptions::ChoiceValidation
62
- end
63
-
64
- it "can accept a time symbol validation" do
65
- i=Input.new{validation :datetime}
66
- i.value DateTime.now
67
- lambda{i.validate!}.should_not raise_error
68
- i.value '2011-01-01 09:00:00'
69
- lambda{i.validate!}.should_not raise_error
70
- i.value 'e'
71
- lambda{i.validate!}.should raise_error Exceptions::ChoiceValidation
72
- end
73
-
74
- it "should start with dirty set as false" do
75
- i=Input.new{fixed 5}
76
- i.dirty?.should eql false
77
- end
78
-
79
- it "should be dirty when the value is changed" do
80
- i=Input.new
81
- i.value 5
82
- i.dirty?.should eql true
83
- end
84
-
85
- it 'can have custom validation message' do
86
- i=Input.new{label :woof; validation /bark/; validation_message {"#{value} does not match pattern /bark/"}}
87
- i.value 'marking'
88
- lambda{i.validate!}.should raise_error Exceptions::ChoiceValidation,"marking does not match pattern /bark/"
89
- j=Input.new{}
90
- j.value 'marking'
91
- j.value.should eql 'marking'
92
- end
93
-
94
- it 'can have default validation message' do
95
- i=Input.new{label :woof; validation /bark/}
96
- i.value 'barking'
97
- lambda{i.validate!}.should_not raise_error
98
- i.value.should eql 'barking'
99
- i.value 'marking'
100
- lambda{i.validate!}.should raise_error Exceptions::ChoiceValidation,"Woof is invalid."
101
- j=Input.new{}
102
- j.value 'marking'
103
- j.value.should eql 'marking'
104
- end
105
-
106
- it 'is always valid if it is fixed' do
107
- i=Input.new{fixed 5; validation /7/}
108
- lambda{i.validate!}.should_not raise_error
109
- i.value.should eql 5
110
- end
111
-
112
- it 'is always disabled if it is fixed' do
113
- i=Input.new{fixed 5}
114
- i.disabled?.should eql true
115
- end
116
-
40
+ it "can accept a time symbol validation" do
41
+ i=Input.new{validation :datetime}
42
+ i.value DateTime.now
43
+ lambda{i.validate!}.should_not raise_error
44
+ i.value '2011-01-01 09:00:00'
45
+ lambda{i.validate!}.should_not raise_error
46
+ i.value 'e'
47
+ lambda{i.validate!}.should raise_error Exceptions::ChoiceValidation
48
+ end
49
+ it 'can have custom validation message' do
50
+ i=Input.new{label :woof; validation /bark/; validation_message {"#{value} does not match pattern /bark/"}}
51
+ i.value 'marking'
52
+ lambda{i.validate!}.should raise_error Exceptions::ChoiceValidation,"marking does not match pattern /bark/"
53
+ j=Input.new{}
54
+ j.value 'marking'
55
+ j.value.should eql 'marking'
56
+ end
57
+ it 'can have default validation message' do
58
+ i=Input.new{label :woof; validation /bark/}
59
+ i.value 'barking'
60
+ lambda{i.validate!}.should_not raise_error
61
+ i.value.should eql 'barking'
62
+ i.value 'marking'
63
+ lambda{i.validate!}.should raise_error Exceptions::ChoiceValidation,"Woof is invalid."
64
+ j=Input.new{}
65
+ j.value 'marking'
66
+ j.value.should eql 'marking'
67
+ end
68
+ it 'is always valid if it is fixed' do
69
+ i=Input.new{fixed 5; validation /7/}
70
+ lambda{i.validate!}.should_not raise_error
71
+ i.value.should eql 5
72
+ end
73
+ it 'is always disabled if it is fixed' do
74
+ i=Input.new{fixed 5}
75
+ i.disabled?.should eql true
76
+ end
117
77
  end
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require File.dirname(File.dirname(__FILE__)) + '/spec_helper.rb'
2
2
 
3
3
  describe Metadatum do
4
4
  it 'defaults to be a drop-down' do
@@ -1,15 +1,7 @@
1
- require 'spec_helper'
2
-
1
+ require File.dirname(File.dirname(__FILE__)) + '/spec_helper.rb'
3
2
  describe OngoingCalculation do
4
-
5
- before :all do
6
- @elec = CalculationSet.find("electricity")[:electricity]
7
- @transport = CalculationSet.find("transport")[:transport]
8
- @elec_and_transport = CalculationSet.find("electricity_and_transport")
9
- end
10
-
11
3
  it 'can return set and unset inputs' do
12
- d=@elec.begin_calculation
4
+ d=Electricity.begin_calculation
13
5
  d.inputs.set.labels.should eql [:country]
14
6
  d.inputs.unset.labels.should eql [:energy_used]
15
7
  d[:energy_used].value :somevalue
@@ -17,7 +9,7 @@ describe OngoingCalculation do
17
9
  d.inputs.unset.labels.should eql []
18
10
  end
19
11
  it 'can return set and unset terms' do
20
- d=@elec.begin_calculation
12
+ d=Electricity.begin_calculation
21
13
  d.set.labels.should eql [:country]
22
14
  d.unset.labels.should eql [:energy_used,:co2]
23
15
  d[:energy_used].value :somevalue
@@ -25,27 +17,19 @@ describe OngoingCalculation do
25
17
  d.unset.labels.should eql [:co2]
26
18
  end
27
19
  it 'can return set and unset outputs' do
28
- d=@elec.begin_calculation
20
+ d=Electricity.begin_calculation
29
21
  d.outputs.set.labels.should eql []
30
22
  d.outputs.unset.labels.should eql [:co2]
31
23
  d[:co2].value 5
32
24
  d.outputs.set.labels.should eql [:co2]
33
25
  d.outputs.unset.labels.should eql []
34
26
  end
35
- it 'can clear outputs' do
36
- d=@elec.begin_calculation
37
- d.outputs.unset.labels.should eql [:co2]
38
- d[:co2].value 5
39
- d[:co2].value.should eql 5
40
- d.clear_outputs
41
- d[:co2].value.should be_nil
42
- end
43
27
  it 'can have values chosen' do
44
28
  AMEEMocker.new(self,:path=>'business/energy/electricity/grid',
45
29
  :selections=>[['country','argentina']],
46
30
  :choices=>[]).drill
47
31
 
48
- d=@elec.begin_calculation
32
+ d=Electricity.begin_calculation
49
33
 
50
34
  d.inputs.set.values.should eql ['argentina']
51
35
  d.inputs.unset.values.should eql [nil]
@@ -59,7 +43,7 @@ describe OngoingCalculation do
59
43
  AMEEMocker.new(self,:path=>'business/energy/electricity/grid',
60
44
  :selections=>[['country','argentina']],
61
45
  :choices=>[]).drill
62
- d=@elec.begin_calculation
46
+ d=Electricity.begin_calculation
63
47
  d.satisfied?.should be_false
64
48
  d.choose!(:energy_used=>5.0)
65
49
  d.satisfied?.should be_true
@@ -74,7 +58,7 @@ describe OngoingCalculation do
74
58
  mocker.select('size'=>'large')
75
59
  mocker.choices=[]
76
60
  mocker.drill
77
- t=@transport.begin_calculation
61
+ t=Transport.begin_calculation
78
62
  t.terms.labels.should eql [:fuel,:size,:distance,:co2]
79
63
  t.satisfied?.should be_false
80
64
 
@@ -83,13 +67,13 @@ describe OngoingCalculation do
83
67
  t.inputs.unset.labels.should eql [:size,:distance]
84
68
  t.satisfied?.should be_false
85
69
 
86
- t2=@transport.begin_calculation
70
+ t2=Transport.begin_calculation
87
71
  t2.choose!('fuel'=>'diesel','size'=>'large')
88
72
  t2.inputs.set.labels.should eql [:fuel,:size]
89
73
  t2.inputs.unset.labels.should eql [:distance]
90
74
  t2.satisfied?.should be_false
91
75
 
92
- t3=@transport.begin_calculation
76
+ t3=Transport.begin_calculation
93
77
  t3.choose!('fuel'=>'diesel','size'=>'large','distance'=>5)
94
78
  t3.inputs.set.labels.should eql [:fuel,:size,:distance]
95
79
  t3.inputs.unset.labels.should eql []
@@ -108,7 +92,7 @@ describe OngoingCalculation do
108
92
  mocker.choices=[]
109
93
  mocker.drill
110
94
  mocker.profile_list.profile_category.timestamp.create_and_get
111
- mycalc=@transport.begin_calculation
95
+ mycalc=Transport.begin_calculation
112
96
  mycalc.choose!('fuel'=>'diesel','size'=>'large','distance'=>5)
113
97
  mycalc.calculate!
114
98
  mycalc.outputs.first.value.should eql :somenumber
@@ -126,7 +110,7 @@ describe OngoingCalculation do
126
110
  mocker.choices=[]
127
111
  mocker.drill
128
112
  mocker.profile_list.profile_category.timestamp.create_and_get
129
- mycalc=@elec_and_transport[:transport].begin_calculation
113
+ mycalc=ElectricityAndTransport[:transport].begin_calculation
130
114
  mycalc.choose!('fuel'=>'diesel','size'=>'large','distance'=>5,'department'=>'stuff')
131
115
  mycalc.calculate!
132
116
  mycalc.outputs.first.value.should eql :somenumber
@@ -150,7 +134,7 @@ describe OngoingCalculation do
150
134
  #end
151
135
 
152
136
  it 'can be supplied just a UID, and recover PIVs and drill values from AMEE' do
153
- mycalc=@transport.begin_calculation
137
+ mycalc=Transport.begin_calculation
154
138
  mocker=AMEEMocker.new(self,:path=>'transport/car/generic',
155
139
  :result=>:somenumber,
156
140
  :existing=>{'distance'=>5},:choices=>['petrol','diesel'])
@@ -167,7 +151,7 @@ describe OngoingCalculation do
167
151
  end
168
152
 
169
153
  it 'refuses to load values from AMEE which conflict with local drill values' do
170
- mycalc=@transport.begin_calculation
154
+ mycalc=Transport.begin_calculation
171
155
  mocker=AMEEMocker.new(self,:path=>'transport/car/generic',
172
156
  :result=>:somenumber,
173
157
  :existing=>{'distance'=>7},
@@ -203,7 +187,7 @@ describe OngoingCalculation do
203
187
  mocker.choices=[]
204
188
  mocker.drill
205
189
  mocker.profile_list.update.get(true)
206
- mycalc=@transport.begin_calculation
190
+ mycalc=Transport.begin_calculation
207
191
  mycalc.choose!(:profile_item_uid=>mocker.uid,'fuel'=>'diesel','size'=>'large','distance'=>9)
208
192
  mycalc.calculate!
209
193
  mycalc[:distance].value.should eql 9
@@ -227,7 +211,7 @@ describe OngoingCalculation do
227
211
  mocker.params={'distance'=>9}
228
212
  mocker.update.get(true)
229
213
 
230
- mycalc=@transport.begin_calculation
214
+ mycalc=Transport.begin_calculation
231
215
  mycalc.choose!('fuel'=>'diesel','size'=>'large','distance'=>5)
232
216
  mycalc.calculate!
233
217
  mycalc.choose!('fuel'=>'diesel','size'=>'large','distance'=>9)
@@ -252,7 +236,7 @@ describe OngoingCalculation do
252
236
  mocker.select('size'=>'small')
253
237
  mocker.drill.create_and_get
254
238
 
255
- mycalc=@transport.begin_calculation
239
+ mycalc=Transport.begin_calculation
256
240
  mycalc.choose!('fuel'=>'diesel','size'=>'large','distance'=>5)
257
241
  mycalc.calculate!
258
242
  mycalc.choose!('fuel'=>'diesel','size'=>'small')
@@ -261,7 +245,7 @@ describe OngoingCalculation do
261
245
  end
262
246
 
263
247
  it 'memoizes profile information, but not across a pass' do
264
- mycalc=@transport.begin_calculation
248
+ mycalc=Transport.begin_calculation
265
249
  mocker=AMEEMocker.new(self,:path=>'transport/car/generic',
266
250
  :result=>:somenumber,
267
251
  :existing=>{'distance'=>5},:choices=>['petrol','diesel'])
@@ -293,7 +277,7 @@ describe OngoingCalculation do
293
277
  mocker.choices=[]
294
278
  mocker.drill
295
279
  mocker.profile_list.profile_category.timestamp.create_and_get
296
- myproto=@transport.clone
280
+ myproto=Transport.clone
297
281
  myproto.instance_eval{
298
282
  start_and_end_dates
299
283
  }
@@ -316,7 +300,7 @@ describe OngoingCalculation do
316
300
  mocker.select('size'=>'large')
317
301
  mocker.choices=[]
318
302
  mocker.drill
319
- myproto=@transport.clone
303
+ myproto=Transport.clone
320
304
  myproto.instance_eval{
321
305
  start_and_end_dates
322
306
  }
@@ -326,7 +310,7 @@ describe OngoingCalculation do
326
310
  end
327
311
 
328
312
  it 'starts off dirty' do
329
- mycalc=@transport.begin_calculation
313
+ mycalc=Transport.begin_calculation
330
314
  mycalc.should be_dirty
331
315
  end
332
316
 
@@ -343,7 +327,7 @@ describe OngoingCalculation do
343
327
  mocker.choices=[]
344
328
  mocker.drill
345
329
  mocker.profile_list.profile_category.timestamp.create_and_get
346
- mycalc=@transport.begin_calculation
330
+ mycalc=Transport.begin_calculation
347
331
  mycalc.should be_dirty
348
332
  mycalc.choose!('fuel'=>'diesel','size'=>'large','distance'=>5)
349
333
  mycalc.calculate!
@@ -365,7 +349,7 @@ describe OngoingCalculation do
365
349
  mocker.choices=[]
366
350
  mocker.drill
367
351
  mocker.profile_list.profile_category.timestamp.create_and_get
368
- mycalc=@transport.begin_calculation
352
+ mycalc=Transport.begin_calculation
369
353
  mycalc.should be_dirty
370
354
  mycalc.choose!('fuel'=>'diesel','size'=>'large','distance'=>5)
371
355
  mycalc.calculate!
@@ -388,7 +372,7 @@ describe OngoingCalculation do
388
372
  mocker.select('size'=>'marge')
389
373
  mocker.choices=[]
390
374
  mocker.drill
391
- mycalc=@transport.begin_calculation
375
+ mycalc=Transport.begin_calculation
392
376
  lambda{mycalc.choose!('fuel'=>'diesel','size'=>'marge','distance'=>5)}.should raise_error Exceptions::ChoiceValidation
393
377
  mycalc.invalidity_messages.keys.should eql [:size]
394
378
  end
@@ -405,7 +389,7 @@ describe OngoingCalculation do
405
389
  mocker.select('size'=>'marge')
406
390
  mocker.choices=[]
407
391
  mocker.drill
408
- mycalc=@transport.begin_calculation
392
+ mycalc=Transport.begin_calculation
409
393
  mycalc.choose('fuel'=>'diesel','size'=>'marge','distance'=>5).should be_false
410
394
  mycalc.invalidity_messages.keys.should eql [:size]
411
395
  end
@@ -422,12 +406,12 @@ describe OngoingCalculation do
422
406
  mocker.select('size'=>'large')
423
407
  mocker.choices=[]
424
408
  mocker.drill
425
- mycalc=@transport.begin_calculation
409
+ mycalc=Transport.begin_calculation
426
410
  mycalc.choose('fuel'=>'diesel','size'=>'large','distance'=>5).should be_true
427
411
  end
428
412
 
429
413
  it 'can blank individual term attributes with empty string' do
430
- myproto=@transport.clone
414
+ myproto=Transport.clone
431
415
  mycalc=myproto.begin_calculation
432
416
  mycalc.choose_without_validation!('fuel'=>'diesel','size'=>'large','distance'=>{:value =>5, :unit=> Unit.km})
433
417
  mycalc['fuel'].value.should eql 'diesel'
@@ -442,7 +426,7 @@ describe OngoingCalculation do
442
426
  end
443
427
 
444
428
  it 'can blank individual term attributes with nil' do
445
- myproto=@transport.clone
429
+ myproto=Transport.clone
446
430
  mycalc=myproto.begin_calculation
447
431
  mycalc.choose_without_validation!('fuel'=>'diesel','size'=>'large','distance'=>{:value =>5, :unit=> Unit.km})
448
432
  mycalc['fuel'].value.should eql 'diesel'
@@ -457,7 +441,7 @@ describe OngoingCalculation do
457
441
  end
458
442
 
459
443
  it 'can update individual term attributes without nullifying others' do
460
- myproto=@transport.clone
444
+ myproto=Transport.clone
461
445
  mycalc=myproto.begin_calculation
462
446
  mycalc.choose_without_validation!('fuel'=>'diesel','size'=>'large','distance'=>{:value =>5, :unit=> Unit.km})
463
447
  mycalc['fuel'].value.should eql 'diesel'
@@ -498,7 +482,7 @@ describe OngoingCalculation do
498
482
  mocker.select('size'=>'marge')
499
483
  mocker.choices=[]
500
484
  mocker.drill
501
- mycalc=@transport.begin_calculation
485
+ mycalc=Transport.begin_calculation
502
486
  mycalc.choose('fuel'=>'diesel','size'=>'marge','distance'=>5).should be_false
503
487
  mycalc.invalidity_messages.keys.should eql [:size]
504
488
  mycalc[:size].value.should eql 'marge'