automobile_trip 0.0.4 → 0.0.5

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/LICENSE CHANGED
@@ -1,20 +1,20 @@
1
- Copyright (c) 2009 Andy Rossmeissl
2
-
3
- Permission is hereby granted, free of charge, to any person obtaining
4
- a copy of this software and associated documentation files (the
5
- "Software"), to deal in the Software without restriction, including
6
- without limitation the rights to use, copy, modify, merge, publish,
7
- distribute, sublicense, and/or sell copies of the Software, and to
8
- permit persons to whom the Software is furnished to do so, subject to
9
- the following conditions:
10
-
11
- The above copyright notice and this permission notice shall be
12
- included in all copies or substantial portions of the Software.
13
-
14
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
- EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
- MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
- LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
- OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
- WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1
+ Copyright (c) 2009 Andy Rossmeissl
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc CHANGED
@@ -1,17 +1,17 @@
1
- = automobile_trip
2
-
3
- Description goes here.
4
-
5
- == Note on Patches/Pull Requests
6
-
7
- * Fork the project.
8
- * Make your feature addition or bug fix.
9
- * Add tests for it. This is important so I don't break it in a
10
- future version unintentionally.
11
- * Commit, do not mess with rakefile, version, or history.
12
- (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
13
- * Send me a pull request. Bonus points for topic branches.
14
-
15
- == Copyright
16
-
17
- Copyright (c) 2010 Andy Rossmeissl. See LICENSE for details.
1
+ = automobile_trip
2
+
3
+ Description goes here.
4
+
5
+ == Note on Patches/Pull Requests
6
+
7
+ * Fork the project.
8
+ * Make your feature addition or bug fix.
9
+ * Add tests for it. This is important so I don't break it in a
10
+ future version unintentionally.
11
+ * Commit, do not mess with rakefile, version, or history.
12
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
13
+ * Send me a pull request. Bonus points for topic branches.
14
+
15
+ == Copyright
16
+
17
+ Copyright (c) 2010 Andy Rossmeissl. See LICENSE for details.
@@ -1,2 +1,29 @@
1
1
  Feature: Automobile Trip Committee Calculations
2
2
  The automobile trip model should generate correct committee calculations
3
+
4
+ Scenario: Fuel Use committee from default
5
+ Given an automobile_trip emitter
6
+ When the "fuel_use" committee is calculated
7
+ Then the committee should have used quorum "default"
8
+ And the conclusion of the committee should be "57.0"
9
+
10
+ Scenario: Emission factor committee from fuel type
11
+ Given an automobile_trip emitter
12
+ And a characteristic "fuel_type.name" of "Gasoline"
13
+ And the "emission_factor" committee is calculated
14
+ Then the committee should have used quorum "from fuel type"
15
+ And the conclusion of the committee should be "10.0"
16
+
17
+ Scenario: Emission factor committee from default
18
+ Given an automobile_trip emitter
19
+ When the "emission_factor" committee is calculated
20
+ Then the committee should have used quorum "default"
21
+ And the conclusion of the committee should be "2.46315"
22
+
23
+ Scenario: Emission committee from fuel use and emission factor
24
+ Given an automobile_trip emitter
25
+ And a characteristic "fuel_use" of "100"
26
+ And a characteristic "emission_factor" of "1.5"
27
+ When the "emission" committee is calculated
28
+ Then the committee should have used quorum "from fuel use and emission factor"
29
+ And the conclusion of the committee should be "150"
@@ -1,7 +1,23 @@
1
1
  Feature: Automobile Trip Emissions Calculations
2
2
  The automobile trip model should generate correct emission calculations
3
3
 
4
- Scenario: Standard Calculations for automobiles
5
- Given an automobile
4
+ Scenario: Calculations starting from nothing
5
+ Given an automobile_trip has nothing
6
6
  When emissions are calculated
7
- Then the emission value should be 1
7
+ Then the emission value should be within "0.1" kgs of "140.4"
8
+
9
+ Scenario: Calculations starting from fuel use
10
+ Given an automobile_trip has "fuel_use" of "100"
11
+ When emissions are calculated
12
+ Then the emission value should be within "0.1" kgs of "246.3"
13
+
14
+ Scenario: Calculations starting from fuel type
15
+ Given an automobile_trip has "fuel_type.name" of "Gasoline"
16
+ When emissions are calculated
17
+ Then the emission value should be within "0.1" kgs of "570.0"
18
+
19
+ Scenario: Calculations starting from fuel use and fuel type
20
+ Given an automobile_trip has "fuel_type.name" of "Gasoline"
21
+ And it has "fuel_use" of "100"
22
+ When emissions are calculated
23
+ Then the emission value should be within "0.1" kgs of "1000.0"
@@ -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 => :automobile
8
+ Sniff.init File.join(File.dirname(__FILE__), '..', '..'), :earth => :fuel, :cucumber => true
@@ -1,15 +1,32 @@
1
- require 'leap'
2
- require 'conversions'
3
1
 
4
2
  module BrighterPlanet
5
3
  module AutomobileTrip
6
4
  module CarbonModel
7
5
  def self.included(base)
8
- base.extend ::Leap::Subject
9
6
  base.decide :emission, :with => :characteristics do
10
- committee :emission do
11
- quorum 'from fuel consumed and emission factor' do
12
- 16.0
7
+ committee :emission do # returns kg CO2e
8
+ quorum 'from fuel use and emission factor', :needs => [:fuel_use, :emission_factor] do |characteristics|
9
+ characteristics[:fuel_use] * characteristics[:emission_factor]
10
+ end
11
+
12
+ quorum 'default' do
13
+ raise "The emission committee's default quorum should never be called"
14
+ end
15
+ end
16
+
17
+ committee :emission_factor do # returns lbs CO2e / l
18
+ quorum 'from fuel type', :needs => :fuel_type do |characteristics|
19
+ characteristics[:fuel_type].emission_factor
20
+ end
21
+
22
+ quorum 'default' do
23
+ base.fallback.emission_factor
24
+ end
25
+ end
26
+
27
+ committee :fuel_use do # returns l
28
+ quorum 'default' do
29
+ base.fallback.fuel_use
13
30
  end
14
31
  end
15
32
  end
@@ -1,13 +1,11 @@
1
- require 'characterizable'
2
-
3
1
  module BrighterPlanet
4
2
  module AutomobileTrip
5
3
  module Characterization
6
4
  def self.included(base)
7
- base.send :include, Characterizable
8
5
  base.characterize do
6
+ has :fuel_use
7
+ has :fuel_type
9
8
  end
10
- base.add_implicit_characteristics
11
9
  end
12
10
  end
13
11
  end
@@ -1,11 +1,11 @@
1
- require 'data_miner'
2
-
3
1
  module BrighterPlanet
4
2
  module AutomobileTrip
5
3
  module Data
6
4
  def self.included(base)
7
5
  base.data_miner do
8
6
  schema do
7
+ float 'fuel_use'
8
+ string 'fuel_type_name'
9
9
  end
10
10
 
11
11
  process :run_data_miner_on_belongs_to_associations
@@ -1,10 +1,7 @@
1
- require 'summary_judgement'
2
-
3
1
  module BrighterPlanet
4
2
  module AutomobileTrip
5
3
  module Summarization
6
4
  def self.included(base)
7
- base.extend SummaryJudgement
8
5
  base.summarize do |has|
9
6
  has.identity 'automobile trip'
10
7
  end
@@ -0,0 +1,14 @@
1
+ require 'active_record'
2
+ require 'falls_back_on'
3
+ require 'automobile_trip'
4
+ require 'sniff'
5
+
6
+ class AutomobileTripRecord < ActiveRecord::Base
7
+ include Sniff::Emitter
8
+ include BrighterPlanet::AutomobileTrip
9
+
10
+ belongs_to :fuel_type, :foreign_key => 'fuel_type_name'
11
+
12
+ falls_back_on :emission_factor => 20.556.pounds_per_gallon.to(:kilograms_per_litre), # from footprint model gasoline car CO2e / gallon
13
+ :fuel_use => 57.0 # based on wikianswers average tank size of 15 gallons
14
+ end
@@ -0,0 +1,9 @@
1
+ require 'sniff/database'
2
+
3
+ Sniff::Database.define_schema do
4
+ create_table "automobile_trip_records", :force => true do |t|
5
+ t.float 'emission_factor'
6
+ t.float 'fuel_use'
7
+ t.string 'fuel_type_name'
8
+ end
9
+ end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: automobile_trip
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 21
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
8
  - 0
8
- - 4
9
- version: 0.0.4
9
+ - 5
10
+ version: 0.0.5
10
11
  platform: ruby
11
12
  authors:
12
13
  - Andy Rossmeissl
@@ -18,99 +19,111 @@ autorequire:
18
19
  bindir: bin
19
20
  cert_chain: []
20
21
 
21
- date: 2010-09-09 00:00:00 -04:00
22
+ date: 2010-09-22 00:00:00 -04:00
22
23
  default_executable:
23
24
  dependencies:
24
25
  - !ruby/object:Gem::Dependency
25
- name: activerecord
26
+ type: :development
26
27
  prerelease: false
27
- requirement: &id001 !ruby/object:Gem::Requirement
28
+ name: activerecord
29
+ version_requirements: &id001 !ruby/object:Gem::Requirement
30
+ none: false
28
31
  requirements:
29
- - - "="
32
+ - - ~>
30
33
  - !ruby/object:Gem::Version
34
+ hash: 7
31
35
  segments:
32
36
  - 3
33
37
  - 0
34
38
  - 0
35
- - beta4
36
- version: 3.0.0.beta4
37
- type: :development
38
- version_requirements: *id001
39
+ version: 3.0.0
40
+ requirement: *id001
39
41
  - !ruby/object:Gem::Dependency
40
- name: bundler
42
+ type: :development
41
43
  prerelease: false
42
- requirement: &id002 !ruby/object:Gem::Requirement
44
+ name: bundler
45
+ version_requirements: &id002 !ruby/object:Gem::Requirement
46
+ none: false
43
47
  requirements:
44
- - - ">="
48
+ - - ~>
45
49
  - !ruby/object:Gem::Version
50
+ hash: 23
46
51
  segments:
47
52
  - 1
48
53
  - 0
49
54
  - 0
50
- - beta
51
- - 2
52
- version: 1.0.0.beta.2
53
- type: :development
54
- version_requirements: *id002
55
+ version: 1.0.0
56
+ requirement: *id002
55
57
  - !ruby/object:Gem::Dependency
56
- name: cucumber
58
+ type: :development
57
59
  prerelease: false
58
- requirement: &id003 !ruby/object:Gem::Requirement
60
+ name: cucumber
61
+ version_requirements: &id003 !ruby/object:Gem::Requirement
62
+ none: false
59
63
  requirements:
60
- - - "="
64
+ - - ~>
61
65
  - !ruby/object:Gem::Version
66
+ hash: 57
62
67
  segments:
63
68
  - 0
64
69
  - 8
65
70
  - 3
66
71
  version: 0.8.3
67
- type: :development
68
- version_requirements: *id003
72
+ requirement: *id003
69
73
  - !ruby/object:Gem::Dependency
70
- name: jeweler
74
+ type: :development
71
75
  prerelease: false
72
- requirement: &id004 !ruby/object:Gem::Requirement
76
+ name: jeweler
77
+ version_requirements: &id004 !ruby/object:Gem::Requirement
78
+ none: false
73
79
  requirements:
74
- - - "="
80
+ - - ~>
75
81
  - !ruby/object:Gem::Version
82
+ hash: 7
76
83
  segments:
77
84
  - 1
78
85
  - 4
79
86
  - 0
80
87
  version: 1.4.0
81
- type: :development
82
- version_requirements: *id004
88
+ requirement: *id004
83
89
  - !ruby/object:Gem::Dependency
84
- name: rake
90
+ type: :development
85
91
  prerelease: false
86
- requirement: &id005 !ruby/object:Gem::Requirement
92
+ name: rake
93
+ version_requirements: &id005 !ruby/object:Gem::Requirement
94
+ none: false
87
95
  requirements:
88
96
  - - ">="
89
97
  - !ruby/object:Gem::Version
98
+ hash: 3
90
99
  segments:
91
100
  - 0
92
101
  version: "0"
93
- type: :development
94
- version_requirements: *id005
102
+ requirement: *id005
95
103
  - !ruby/object:Gem::Dependency
96
- name: rdoc
104
+ type: :development
97
105
  prerelease: false
98
- requirement: &id006 !ruby/object:Gem::Requirement
106
+ name: rdoc
107
+ version_requirements: &id006 !ruby/object:Gem::Requirement
108
+ none: false
99
109
  requirements:
100
110
  - - ">="
101
111
  - !ruby/object:Gem::Version
112
+ hash: 3
102
113
  segments:
103
114
  - 0
104
115
  version: "0"
105
- type: :development
106
- version_requirements: *id006
116
+ requirement: *id006
107
117
  - !ruby/object:Gem::Dependency
108
- name: rspec
118
+ type: :development
109
119
  prerelease: false
110
- requirement: &id007 !ruby/object:Gem::Requirement
120
+ name: rspec
121
+ version_requirements: &id007 !ruby/object:Gem::Requirement
122
+ none: false
111
123
  requirements:
112
- - - "="
124
+ - - ~>
113
125
  - !ruby/object:Gem::Version
126
+ hash: 62196417
114
127
  segments:
115
128
  - 2
116
129
  - 0
@@ -118,36 +131,39 @@ dependencies:
118
131
  - beta
119
132
  - 17
120
133
  version: 2.0.0.beta.17
121
- type: :development
122
- version_requirements: *id007
134
+ requirement: *id007
123
135
  - !ruby/object:Gem::Dependency
124
- name: sniff
136
+ type: :development
125
137
  prerelease: false
126
- requirement: &id008 !ruby/object:Gem::Requirement
138
+ name: sniff
139
+ version_requirements: &id008 !ruby/object:Gem::Requirement
140
+ none: false
127
141
  requirements:
128
- - - "="
142
+ - - ~>
129
143
  - !ruby/object:Gem::Version
144
+ hash: 3
130
145
  segments:
131
146
  - 0
132
- - 0
133
- - 11
134
- version: 0.0.11
135
- type: :development
136
- version_requirements: *id008
147
+ - 1
148
+ - 12
149
+ version: 0.1.12
150
+ requirement: *id008
137
151
  - !ruby/object:Gem::Dependency
138
- name: emitter
152
+ type: :runtime
139
153
  prerelease: false
140
- requirement: &id009 !ruby/object:Gem::Requirement
154
+ name: emitter
155
+ version_requirements: &id009 !ruby/object:Gem::Requirement
156
+ none: false
141
157
  requirements:
142
- - - ">="
158
+ - - ~>
143
159
  - !ruby/object:Gem::Version
160
+ hash: 19
144
161
  segments:
145
162
  - 0
146
- - 0
147
163
  - 1
148
- version: 0.0.1
149
- type: :runtime
150
- version_requirements: *id009
164
+ - 4
165
+ version: 0.1.4
166
+ requirement: *id009
151
167
  description: A software model in Ruby for the greenhouse gas emissions of an automobile trip
152
168
  email: andy@rossmeissl.net
153
169
  executables: []
@@ -166,6 +182,11 @@ files:
166
182
  - lib/automobile_trip/committee_structure.rb
167
183
  - lib/automobile_trip/data.rb
168
184
  - lib/automobile_trip/summarization.rb
185
+ - lib/test_support/automobile_trip_record.rb
186
+ - lib/test_support/db/schema.rb
187
+ - features/support/env.rb
188
+ - features/automobile_trip_committees.feature
189
+ - features/automobile_trip_emissions.feature
169
190
  has_rdoc: true
170
191
  homepage: http://github.com/brighterplanet/automobile_trip
171
192
  licenses: []
@@ -176,23 +197,27 @@ rdoc_options:
176
197
  require_paths:
177
198
  - lib
178
199
  required_ruby_version: !ruby/object:Gem::Requirement
200
+ none: false
179
201
  requirements:
180
202
  - - ">="
181
203
  - !ruby/object:Gem::Version
204
+ hash: 3
182
205
  segments:
183
206
  - 0
184
207
  version: "0"
185
208
  required_rubygems_version: !ruby/object:Gem::Requirement
209
+ none: false
186
210
  requirements:
187
211
  - - ">="
188
212
  - !ruby/object:Gem::Version
213
+ hash: 3
189
214
  segments:
190
215
  - 0
191
216
  version: "0"
192
217
  requirements: []
193
218
 
194
219
  rubyforge_project:
195
- rubygems_version: 1.3.6
220
+ rubygems_version: 1.3.7
196
221
  signing_key:
197
222
  specification_version: 3
198
223
  summary: A carbon model
@@ -200,3 +225,5 @@ test_files:
200
225
  - features/support/env.rb
201
226
  - features/automobile_trip_committees.feature
202
227
  - features/automobile_trip_emissions.feature
228
+ - lib/test_support/automobile_trip_record.rb
229
+ - lib/test_support/db/schema.rb