bus_trip 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,8 +1,8 @@
1
1
  Feature: Bus Trip Committee Calculations
2
2
  The bus trip model should generate correct committee calculations
3
3
 
4
- Scenario Outline: Standard Calculations for bus trip
5
- Given a bus trip has "distance" of "<distance_estimate>"
4
+ Scenario Outline: Distance from duration, distance estimate, and bus class
5
+ Given a bus trip has "distance_estimate" of "<distance_estimate>"
6
6
  And it used "duration" "<duration>"
7
7
  And it used "bus_class.name" "<bus_class>"
8
8
  When emissions are calculated
@@ -10,6 +10,19 @@ Feature: Bus Trip Committee Calculations
10
10
  Examples:
11
11
  | duration | distance_estimate | bus_class | distance |
12
12
  | 40 | | | 21 |
13
- | | 60 | | 8 |
13
+ | | 60 | | 60 |
14
14
  | | | regional coach | 21 |
15
15
  | | | city transit | 8 |
16
+
17
+ Scenario Outline: Diesel consumed from distance and diesel intensity
18
+ Given a bus trip has "distance_estimate" of "<distance_estimate>"
19
+ And it used "duration" "<duration>"
20
+ And it used "bus_class.name" "<bus_class>"
21
+ When emissions are calculated
22
+ Then the diesel_consumed committee should be close to <diesel_consumed>, +/-0.1
23
+ Examples:
24
+ | duration | distance_estimate | bus_class | diesel_consumed |
25
+ | 40 | | | 7.0 |
26
+ | | 60 | | 20.1 |
27
+ | | | regional coach | 5.0 |
28
+ | | | city transit | 3.0 |
@@ -1,13 +1,33 @@
1
1
  Feature: Bus Trip Emissions Calculations
2
2
  The bus trip model should generate correct emission calculations
3
3
 
4
- Scenario Outline: Standard Calculations for bus trips
5
- Given a bus trip has "distance" of "<source>"
4
+ Scenario Outline: Calculations for bus trips with just timeframe and distance
5
+ Given a bus trip has "distance_estimate" of "<distance>"
6
+ And it has "timeframe" of "<timeframe>"
7
+ When emissions are calculated
8
+ Then the emission value should be within 0.1 kgs of <emission>
9
+ Examples:
10
+ | timeframe | distance | emission |
11
+ | 2010-08-01/2010-08-01 | 10 | 1.2 |
12
+ | 2010-08-01/2010-08-11 | 400 | 51.0 |
13
+
14
+ Scenario Outline: Standard Calculations for bus trips with timeframe and bus class
15
+ Given a bus trip has "distance_estimate" of "<distance>"
16
+ And it has "bus_class.name" "<bus_class>"
17
+ And it has "timeframe" of "<timeframe>"
18
+ When emissions are calculated
19
+ Then the emission value should be within 0.1 kgs of <emission>
20
+ Examples:
21
+ | timeframe | distance | bus_class | emission |
22
+ | 2010-08-01/2010-08-01 | 10 | city transit | 3.4 |
23
+ | 2010-08-01/2010-08-11 | 400 | regional coach | 51.4 |
24
+
25
+ Scenario Outline: Calculations involving fuel types
26
+ Given a bus trip has "distance_estimate" of "<distance>"
6
27
  And it used "bus_class.gasoline_intensity" "<gasoline>"
7
28
  And it used "bus_class.diesel_intensity" "<diesel>"
8
29
  And it used "bus_class.alternative_fuels_intensity" "<alternative>"
9
30
  And it has "bus_class.passengers" "<passengers>"
10
- And it has "distance_estimate" of "<distance>"
11
31
  And it has "bus_class.name" "<bus_class>"
12
32
  When emissions are calculated
13
33
  Then the emission value should be within 0.1 kgs of <emission>
@@ -5,4 +5,4 @@ require 'cucumber'
5
5
  require 'cucumber/formatter/unicode'
6
6
 
7
7
  require 'sniff'
8
- Sniff.init File.join(File.dirname(__FILE__), '..', '..'), :earth => :bus
8
+ Sniff.init File.join(File.dirname(__FILE__), '..', '..'), :earth => :bus, :cucumber => true
@@ -10,7 +10,7 @@ module BrighterPlanet
10
10
  committee :emission do # returns kg CO2
11
11
  quorum 'from fuel and passengers', :needs => [:diesel_consumed, :gasoline_consumed, :alternative_fuels_consumed, :passengers, :distance, :bus_class] do |characteristics|
12
12
  #(( litres diesel ) * ( kilograms CO2 / litre diesel ) + ( litres gasoline ) * ( kilograms CO2 / kWh ) + ( litre-equivs alternative fuel ) * (kilograms CO2 / litre-equiv alternative fuel))
13
- (characteristics[:diesel_consumed] * BusTrip.bus_trip_model.research(:diesel_emission_factor) + characteristics[:gasoline_consumed] * BusTrip.bus_trip_model.research(:gasoline_emission_factor) + characteristics[:alternative_fuels_consumed] * BusTrip.bus_trip_model.research(:alternative_fuels_emission_factor) + characteristics[:distance] * characteristics[:bus_class].fugitive_air_conditioning_emission) / characteristics[:passengers]
13
+ (characteristics[:diesel_consumed] * research(:diesel_emission_factor) + characteristics[:gasoline_consumed] * research(:gasoline_emission_factor) + characteristics[:alternative_fuels_consumed] * research(:alternative_fuels_emission_factor) + characteristics[:distance] * characteristics[:bus_class].fugitive_air_conditioning_emission) / characteristics[:passengers]
14
14
  end
15
15
  end
16
16
 
@@ -87,6 +87,17 @@ module BrighterPlanet
87
87
  end
88
88
  end
89
89
  end
90
+
91
+ def self.research(key)
92
+ case key
93
+ when :diesel_emission_factor
94
+ 22.450.pounds_per_gallon.to(:kilograms_per_litre) # CO2 / diesel https://brighterplanet.sifterapp.com/projects/30/issues/454
95
+ when :gasoline_emission_factor
96
+ 23.681.pounds_per_gallon.to(:kilograms_per_litre) # CO2 / gasoline https://brighterplanet.sifterapp.com/projects/30/issues/454
97
+ when :alternative_fuels_emission_factor
98
+ 9.742.pounds_per_gallon.to(:kilograms_per_litre) # CO2 / equiv alternative fuels https://brighterplanet.sifterapp.com/projects/30/issues/454
99
+ end
100
+ end
90
101
  end
91
102
  end
92
103
  end
@@ -10,6 +10,7 @@ module BrighterPlanet
10
10
  has :duration # measures time in minutes
11
11
  has :distance_estimate, :trumps => :duration, :measures => :length
12
12
  end
13
+ base.add_implicit_characteristics
13
14
  end
14
15
  end
15
16
  end
@@ -9,20 +9,8 @@ class BusTripRecord < ActiveRecord::Base
9
9
 
10
10
  falls_back_on
11
11
 
12
- class << self
13
- def research(key)
14
- case key
15
- when :diesel_emission_factor
16
- 22.450.pounds_per_gallon.to(:kilograms_per_litre) # CO2 / diesel https://brighterplanet.sifterapp.com/projects/30/issues/454
17
- when :gasoline_emission_factor
18
- 23.681.pounds_per_gallon.to(:kilograms_per_litre) # CO2 / gasoline https://brighterplanet.sifterapp.com/projects/30/issues/454
19
- when :alternative_fuels_emission_factor
20
- 9.742.pounds_per_gallon.to(:kilograms_per_litre) # CO2 / equiv alternative fuels https://brighterplanet.sifterapp.com/projects/30/issues/454
21
- end
22
- end
23
- end
24
-
25
12
  def emission_date
26
13
  created_at.to_date #FIXME we should add a date characteristic for this emitter
27
14
  end
28
15
  end
16
+
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bus_trip
3
3
  version: !ruby/object:Gem::Version
4
- hash: 15
4
+ hash: 13
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 8
10
- version: 0.0.8
9
+ - 9
10
+ version: 0.0.9
11
11
  platform: ruby
12
12
  authors:
13
13
  - Andy Rossmeissl
@@ -19,48 +19,45 @@ autorequire:
19
19
  bindir: bin
20
20
  cert_chain: []
21
21
 
22
- date: 2010-08-12 00:00:00 -04:00
22
+ date: 2010-09-02 00:00:00 -04:00
23
23
  default_executable:
24
24
  dependencies:
25
25
  - !ruby/object:Gem::Dependency
26
- name: activerecord
26
+ type: :development
27
27
  prerelease: false
28
- requirement: &id001 !ruby/object:Gem::Requirement
28
+ name: activerecord
29
+ version_requirements: &id001 !ruby/object:Gem::Requirement
29
30
  none: false
30
31
  requirements:
31
- - - "="
32
+ - - ~>
32
33
  - !ruby/object:Gem::Version
33
- hash: -1848230024
34
+ hash: 7
34
35
  segments:
35
36
  - 3
36
37
  - 0
37
38
  - 0
38
- - beta4
39
- version: 3.0.0.beta4
40
- type: :development
41
- version_requirements: *id001
39
+ version: 3.0.0
40
+ requirement: *id001
42
41
  - !ruby/object:Gem::Dependency
43
- name: bundler
42
+ type: :development
44
43
  prerelease: false
45
- requirement: &id002 !ruby/object:Gem::Requirement
44
+ name: bundler
45
+ version_requirements: &id002 !ruby/object:Gem::Requirement
46
46
  none: false
47
47
  requirements:
48
- - - ">="
48
+ - - ~>
49
49
  - !ruby/object:Gem::Version
50
- hash: 62196359
50
+ hash: 15
51
51
  segments:
52
52
  - 1
53
53
  - 0
54
- - 0
55
- - beta
56
- - 2
57
- version: 1.0.0.beta.2
58
- type: :development
59
- version_requirements: *id002
54
+ version: "1.0"
55
+ requirement: *id002
60
56
  - !ruby/object:Gem::Dependency
61
- name: cucumber
57
+ type: :development
62
58
  prerelease: false
63
- requirement: &id003 !ruby/object:Gem::Requirement
59
+ name: cucumber
60
+ version_requirements: &id003 !ruby/object:Gem::Requirement
64
61
  none: false
65
62
  requirements:
66
63
  - - "="
@@ -71,12 +68,12 @@ dependencies:
71
68
  - 8
72
69
  - 3
73
70
  version: 0.8.3
74
- type: :development
75
- version_requirements: *id003
71
+ requirement: *id003
76
72
  - !ruby/object:Gem::Dependency
77
- name: jeweler
73
+ type: :development
78
74
  prerelease: false
79
- requirement: &id004 !ruby/object:Gem::Requirement
75
+ name: jeweler
76
+ version_requirements: &id004 !ruby/object:Gem::Requirement
80
77
  none: false
81
78
  requirements:
82
79
  - - "="
@@ -87,12 +84,12 @@ dependencies:
87
84
  - 4
88
85
  - 0
89
86
  version: 1.4.0
90
- type: :development
91
- version_requirements: *id004
87
+ requirement: *id004
92
88
  - !ruby/object:Gem::Dependency
93
- name: rake
89
+ type: :development
94
90
  prerelease: false
95
- requirement: &id005 !ruby/object:Gem::Requirement
91
+ name: rake
92
+ version_requirements: &id005 !ruby/object:Gem::Requirement
96
93
  none: false
97
94
  requirements:
98
95
  - - ">="
@@ -101,12 +98,12 @@ dependencies:
101
98
  segments:
102
99
  - 0
103
100
  version: "0"
104
- type: :development
105
- version_requirements: *id005
101
+ requirement: *id005
106
102
  - !ruby/object:Gem::Dependency
107
- name: rdoc
103
+ type: :development
108
104
  prerelease: false
109
- requirement: &id006 !ruby/object:Gem::Requirement
105
+ name: rdoc
106
+ version_requirements: &id006 !ruby/object:Gem::Requirement
110
107
  none: false
111
108
  requirements:
112
109
  - - ">="
@@ -115,12 +112,12 @@ dependencies:
115
112
  segments:
116
113
  - 0
117
114
  version: "0"
118
- type: :development
119
- version_requirements: *id006
115
+ requirement: *id006
120
116
  - !ruby/object:Gem::Dependency
121
- name: rspec
117
+ type: :development
122
118
  prerelease: false
123
- requirement: &id007 !ruby/object:Gem::Requirement
119
+ name: rspec
120
+ version_requirements: &id007 !ruby/object:Gem::Requirement
124
121
  none: false
125
122
  requirements:
126
123
  - - "="
@@ -133,40 +130,39 @@ dependencies:
133
130
  - beta
134
131
  - 17
135
132
  version: 2.0.0.beta.17
136
- type: :development
137
- version_requirements: *id007
133
+ requirement: *id007
138
134
  - !ruby/object:Gem::Dependency
139
- name: sniff
135
+ type: :development
140
136
  prerelease: false
141
- requirement: &id008 !ruby/object:Gem::Requirement
137
+ name: sniff
138
+ version_requirements: &id008 !ruby/object:Gem::Requirement
142
139
  none: false
143
140
  requirements:
144
- - - "="
141
+ - - ~>
145
142
  - !ruby/object:Gem::Version
146
- hash: 11
143
+ hash: 15
147
144
  segments:
148
145
  - 0
149
- - 0
146
+ - 1
150
147
  - 10
151
- version: 0.0.10
152
- type: :development
153
- version_requirements: *id008
148
+ version: 0.1.10
149
+ requirement: *id008
154
150
  - !ruby/object:Gem::Dependency
155
- name: emitter
151
+ type: :runtime
156
152
  prerelease: false
157
- requirement: &id009 !ruby/object:Gem::Requirement
153
+ name: emitter
154
+ version_requirements: &id009 !ruby/object:Gem::Requirement
158
155
  none: false
159
156
  requirements:
160
- - - ">="
157
+ - - ~>
161
158
  - !ruby/object:Gem::Version
162
- hash: 29
159
+ hash: 13
163
160
  segments:
164
161
  - 0
165
162
  - 0
166
- - 1
167
- version: 0.0.1
168
- type: :runtime
169
- version_requirements: *id009
163
+ - 9
164
+ version: 0.0.9
165
+ requirement: *id009
170
166
  description: A software model in Ruby for the greenhouse gas emissions of a bus trip
171
167
  email: andy@rossmeissl.net
172
168
  executables: []