earth 0.3.9 → 0.3.10
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/Gemfile +5 -0
- data/Gemfile.lock +58 -20
- data/features/automobile_fuel_type.feature +44 -0
- data/features/automobile_make.feature +24 -0
- data/features/automobile_make_fleet_year.feature +44 -0
- data/features/automobile_make_model.feature +24 -0
- data/features/automobile_make_model_year.feature +34 -0
- data/features/automobile_make_model_year_variant.feature +46 -0
- data/features/automobile_make_year.feature +44 -0
- data/features/automobile_size_class.feature +59 -0
- data/features/bus_class.feature +69 -0
- data/features/carrier.feature +64 -0
- data/features/carrier_mode.feature +74 -0
- data/features/egrid_region.feature +14 -0
- data/features/egrid_subregion.feature +36 -0
- data/features/rail_class.feature +64 -0
- data/features/shipment_mode.feature +34 -0
- data/features/support/env.rb +7 -0
- data/features/support/imports/automobile_fuel_type_bad.csv +3 -0
- data/features/support/imports/automobile_fuel_type_good.csv +3 -0
- data/features/support/imports/automobile_make_bad.csv +3 -0
- data/features/support/imports/automobile_make_fleet_year_bad.csv +3 -0
- data/features/support/imports/automobile_make_fleet_year_good.csv +3 -0
- data/features/support/imports/automobile_make_good.csv +3 -0
- data/features/support/imports/automobile_make_model_bad.csv +3 -0
- data/features/support/imports/automobile_make_model_good.csv +3 -0
- data/features/support/imports/automobile_make_model_year_bad.csv +3 -0
- data/features/support/imports/automobile_make_model_year_good.csv +3 -0
- data/features/support/imports/automobile_make_model_year_variant_bad.csv +3 -0
- data/features/support/imports/automobile_make_model_year_variant_good.csv +3 -0
- data/features/support/imports/automobile_make_year_bad.csv +3 -0
- data/features/support/imports/automobile_make_year_good.csv +3 -0
- data/features/support/imports/automobile_size_class_bad.csv +3 -0
- data/features/support/imports/automobile_size_class_good.csv +3 -0
- data/features/support/imports/bus_class_bad.csv +3 -0
- data/features/support/imports/bus_class_good.csv +3 -0
- data/features/support/imports/carrier_bad.csv +3 -0
- data/features/support/imports/carrier_good.csv +3 -0
- data/features/support/imports/carrier_mode_bad.csv +3 -0
- data/features/support/imports/carrier_mode_good.csv +3 -0
- data/features/support/imports/egrid_region_bad.csv +3 -0
- data/features/support/imports/egrid_region_good.csv +3 -0
- data/features/support/imports/egrid_subregion_bad.csv +3 -0
- data/features/support/imports/egrid_subregion_good.csv +3 -0
- data/features/support/imports/rail_class_bad.csv +3 -0
- data/features/support/imports/rail_class_good.csv +3 -0
- data/features/support/imports/shipment_mode_bad.csv +3 -0
- data/features/support/imports/shipment_mode_good.csv +3 -0
- data/lib/earth/automobile/automobile_fuel_type/data_miner.rb +35 -14
- data/lib/earth/automobile/automobile_make/data_miner.rb +24 -9
- data/lib/earth/automobile/automobile_make_fleet_year/data_miner.rb +32 -1
- data/lib/earth/automobile/automobile_make_model/data_miner.rb +27 -5
- data/lib/earth/automobile/automobile_make_model_year/data_miner.rb +35 -5
- data/lib/earth/automobile/automobile_make_model_year_variant/data_miner.rb +80 -39
- data/lib/earth/automobile/automobile_make_year/data_miner.rb +32 -1
- data/lib/earth/automobile/automobile_size_class/data_miner.rb +67 -4
- data/lib/earth/bus/bus_class/data_miner.rb +73 -0
- data/lib/earth/locality/egrid_region/data_miner.rb +8 -0
- data/lib/earth/locality/egrid_subregion/data_miner.rb +26 -0
- data/lib/earth/rail/rail_class/data_miner.rb +51 -0
- data/lib/earth/shipping/carrier/data_miner.rb +47 -8
- data/lib/earth/shipping/carrier_mode/data_miner.rb +57 -8
- data/lib/earth/shipping/shipment_mode/data_miner.rb +23 -4
- metadata +110 -98
@@ -40,6 +40,37 @@ AutomobileMakeYear.class_eval do
|
|
40
40
|
UPDATE automobile_make_years SET automobile_make_years.volume = (SELECT SUM(automobile_make_fleet_years.volume) FROM automobile_make_fleet_years WHERE automobile_make_fleet_years.make_year_name = automobile_make_years.name)
|
41
41
|
}
|
42
42
|
end
|
43
|
+
|
44
|
+
verify "Year should be between 1978 and 2007" do
|
45
|
+
AutomobileMakeYear.all.each do |make_year|
|
46
|
+
unless make_year.year > 1977 and make_year.year < 2008
|
47
|
+
raise "Invalid year for AutomobileMakeYear #{make_year.name}: #{make_year.year} (should be between 1978 and 2007)"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
verify "Fuel efficiency should be greater than zero" do
|
53
|
+
AutomobileMakeYear.all.each do |make_year|
|
54
|
+
unless make_year.fuel_efficiency > 0
|
55
|
+
raise "Invalid fuel efficiency for AutomobileMakeYear #{make_year.name}: #{make_year.fuel_efficiency} (should be > 0)"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
verify "Fuel efficiency units should be kilometres per litre" do
|
61
|
+
AutomobileMakeYear.all.each do |make_year|
|
62
|
+
unless make_year.fuel_efficiency_units == "kilometres_per_litre"
|
63
|
+
raise "Invalid fuel efficiency units for AutomobileMakeYear #{make_year.name}: #{make_year.fuel_efficiency_units} (should be kilometres_per_litre)"
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
verify "Volume should be greater than zero" do
|
69
|
+
AutomobileMakeYear.all.each do |make_year|
|
70
|
+
unless make_year.volume > 0
|
71
|
+
raise "Invalid volume for AutomobileMakeYear #{make_year.name}: #{make_year.volume} (should be > 0)"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
43
75
|
end
|
44
76
|
end
|
45
|
-
|
@@ -2,13 +2,13 @@ AutomobileSizeClass.class_eval do
|
|
2
2
|
data_miner do
|
3
3
|
schema Earth.database_options do
|
4
4
|
string 'name'
|
5
|
+
string 'emblem'
|
6
|
+
float 'annual_distance'
|
7
|
+
string 'annual_distance_units'
|
5
8
|
float 'fuel_efficiency_city'
|
6
9
|
string 'fuel_efficiency_city_units'
|
7
10
|
float 'fuel_efficiency_highway'
|
8
11
|
string 'fuel_efficiency_highway_units'
|
9
|
-
float 'annual_distance'
|
10
|
-
string 'annual_distance_units'
|
11
|
-
string 'emblem'
|
12
12
|
float 'hybrid_fuel_efficiency_city_multiplier'
|
13
13
|
float 'hybrid_fuel_efficiency_highway_multiplier'
|
14
14
|
float 'conventional_fuel_efficiency_city_multiplier'
|
@@ -38,6 +38,69 @@ AutomobileSizeClass.class_eval do
|
|
38
38
|
store 'conventional_fuel_efficiency_city_multiplier'
|
39
39
|
store 'conventional_fuel_efficiency_highway_multiplier'
|
40
40
|
end
|
41
|
+
|
42
|
+
verify "Annual distance should be greater than zero" do
|
43
|
+
AutomobileSizeClass.all.each do |size_class|
|
44
|
+
unless size_class.annual_distance > 0
|
45
|
+
raise "Invalid annual distance for AutomobileSizeClass #{size_class.name}: #{size_class.annual_distance} (should be > 0)"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
verify "Annual distance units should be kilometres" do
|
51
|
+
AutomobileSizeClass.all.each do |size_class|
|
52
|
+
unless size_class.annual_distance_units == "kilometres"
|
53
|
+
raise "Invalid annual distance units for AutomobileSizeClass #{size_class.name}: #{size_class.annual_distance_units} (should be kilometres)"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
verify "Fuel efficiencies should be greater than zero" do
|
59
|
+
AutomobileSizeClass.all.each do |size_class|
|
60
|
+
%w{ city highway }.each do |type|
|
61
|
+
fuel_efficiency = size_class.send(:"fuel_efficiency_#{type}")
|
62
|
+
unless fuel_efficiency > 0
|
63
|
+
raise "Invalid fuel efficiency #{type} for AutomobileSizeClass #{size_class.name}: #{fuel_efficiency} (should be > 0)"
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
verify "Fuel efficiency units should be kilometres per litre" do
|
70
|
+
AutomobileSizeClass.all.each do |size_class|
|
71
|
+
%w{ city highway }.each do |type|
|
72
|
+
units = size_class.send(:"fuel_efficiency_#{type}_units")
|
73
|
+
unless units == "kilometres_per_litre"
|
74
|
+
raise "Invalid fuel efficiency #{type} units for AutomobileSizeClass #{size_class.name}: #{units} (should be kilometres_per_litre)"
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
80
|
+
verify "Any fuel efficiency multipliers should be greater than zero" do
|
81
|
+
AutomobileSizeClass.all.each do |size_class|
|
82
|
+
%w{ hybrid conventional }.each do |hybridity|
|
83
|
+
%w{ city highway }.each do |type|
|
84
|
+
multiplier = size_class.send(:"#{hybridity}_fuel_efficiency_#{type}_multiplier")
|
85
|
+
if not multiplier.nil?
|
86
|
+
unless multiplier > 0
|
87
|
+
raise "Invalid #{hybridity} fuel efficiency #{type} multiplier for AutomobileSizeClass #{size_class.name}: #{multiplier} (should be > 0)"
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
verify "Fallback fuel efficiency multipliers should be greater than zero" do
|
96
|
+
%w{ hybrid conventional }.each do |hybridity|
|
97
|
+
%w{ city highway }.each do |type|
|
98
|
+
multiplier = AutomobileSizeClass.fallback.send(:"#{hybridity}_fuel_efficiency_#{type}_multiplier")
|
99
|
+
unless multiplier > 0
|
100
|
+
raise "Invalid AutomobileSizeClass fallback #{hybridity} fuel efficiency #{type} multiplier: #{multiplier} (should be > 0)"
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
41
105
|
end
|
42
106
|
end
|
43
|
-
|
@@ -25,5 +25,78 @@ BusClass.class_eval do
|
|
25
25
|
store 'alternative_fuels_intensity', :units_field_name => 'alternative_fuels_intensity_units'
|
26
26
|
store 'air_conditioning_emission_factor', :units_field_name => 'air_conditioning_emission_factor_units'
|
27
27
|
end
|
28
|
+
|
29
|
+
verify "Distance, passengers, speed, and diesel intensity should be greater than zero" do
|
30
|
+
BusClass.all.each do |bus_class|
|
31
|
+
%w{ distance passengers speed diesel_intensity }.each do |attribute|
|
32
|
+
value = bus_class.send(:"#{attribute}")
|
33
|
+
unless value > 0
|
34
|
+
raise "Invalid #{attribute} for BusClass #{bus_class.name}: #{value} (should be > 0)"
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
verify "Alternative fuels intensity and air conditioning emission factor should be zero or more" do
|
41
|
+
BusClass.all.each do |bus_class|
|
42
|
+
%w{ alternative_fuels_intensity air_conditioning_emission_factor }.each do |attribute|
|
43
|
+
value = bus_class.send(:"#{attribute}")
|
44
|
+
unless value >= 0
|
45
|
+
raise "Invalid #{attribute} for BusClass #{bus_class.name}: #{value} (should be >= 0)"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
verify "Distance units should be kilometres" do
|
52
|
+
BusClass.all.each do |bus_class|
|
53
|
+
unless bus_class.distance_units == "kilometres"
|
54
|
+
raise "Invalid distance units for BusClass #{bus_class.name}: #{bus_class.distance_units} (should be kilometres)"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
verify "Speed units should be kilometres per hour" do
|
60
|
+
BusClass.all.each do |bus_class|
|
61
|
+
unless bus_class.speed_units == "kilometres_per_hour"
|
62
|
+
raise "Invalid speed units for BusClass #{bus_class.name}: #{bus_class.speed_units} (should be kilometres_per_hour)"
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
verify "Diesel intensity and alternative fuel intensity units should be litres per kilometre" do
|
68
|
+
BusClass.all.each do |bus_class|
|
69
|
+
%w{ diesel_intensity alternative_fuels_intensity }.each do |attribute|
|
70
|
+
units = bus_class.send(:"#{attribute}_units")
|
71
|
+
unless units == "litres_per_kilometre"
|
72
|
+
raise "Invalid #{attribute}_units for BusClass #{bus_class.name}: #{units} (should be litres_per_kilometre)"
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
verify "Air conditioning emission factor units should be kilograms per kilometre" do
|
79
|
+
BusClass.all.each do |bus_class|
|
80
|
+
unless bus_class.air_conditioning_emission_factor_units == "kilograms_per_kilometre"
|
81
|
+
raise "Invalid air conditioning emission factor units for BusClass #{bus_class.name}: #{bus_class.air_conditioning_emission_factor_units} (should be kilograms_per_kilometre)"
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
verify "Fallbacks should satisfy same constraints as data" do
|
87
|
+
%w{ distance passengers speed diesel_intensity }.each do |attribute|
|
88
|
+
value = BusClass.fallback.send(:"#{attribute}")
|
89
|
+
unless value > 0
|
90
|
+
raise "Invalid BusClass fallback #{attribute}: #{value} (should be > 0)"
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
%w{ alternative_fuels_intensity air_conditioning_emission_factor }.each do |attribute|
|
95
|
+
value = BusClass.fallback.send(:"#{attribute}")
|
96
|
+
unless value >= 0
|
97
|
+
raise "Invalid BusClass fallback #{attribute}: #{value} (should be >= 0)"
|
98
|
+
end
|
99
|
+
end
|
100
|
+
end
|
28
101
|
end
|
29
102
|
end
|
@@ -31,5 +31,13 @@ EgridRegion.class_eval do
|
|
31
31
|
key 'name'
|
32
32
|
store 'loss_factor'
|
33
33
|
end
|
34
|
+
|
35
|
+
verify "Loss factor should be greater than zero and less than one" do
|
36
|
+
EgridRegion.all.each do |region|
|
37
|
+
unless region.loss_factor > 0 and region.loss_factor < 1
|
38
|
+
raise "Invalid loss factor for EgridRegion #{region.name}: #{region.loss_factor} (should be > 0 and < 1)"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
34
42
|
end
|
35
43
|
end
|
@@ -61,5 +61,31 @@ EgridSubregion.class_eval do
|
|
61
61
|
store 'egrid_region_name'
|
62
62
|
store 'electricity_emission_factor', :units_field_name => 'electricity_emission_factor_units'
|
63
63
|
end
|
64
|
+
|
65
|
+
# FIXME TODO make this work
|
66
|
+
# verify "eGRID region name should appear in egrid_regions" do
|
67
|
+
# regions = EgridRegion.all.map { |region| region.name }
|
68
|
+
# EgridSubregion.all.each do |subregion|
|
69
|
+
# unless regions.includes? subregion.egrid_region_name
|
70
|
+
# raise "Invalid eGRID region name for EgridSubregion #{subregion.name}: #{subregion.egrid_region_name} (not found in egrid_regions)"
|
71
|
+
# end
|
72
|
+
# end
|
73
|
+
# end
|
74
|
+
|
75
|
+
verify "Electricity emission factor should be greater than zero" do
|
76
|
+
EgridSubregion.all.each do |subregion|
|
77
|
+
unless subregion.electricity_emission_factor > 0
|
78
|
+
raise "Invalid electricity emission factor for EgridSubregion #{subregion.name}: #{subregion.electricity_emission_factor} (should be > 0)"
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
verify "Electricity emission factor units should be kilograms per kilowatt hour" do
|
84
|
+
EgridSubregion.all.each do |subregion|
|
85
|
+
unless subregion.electricity_emission_factor_units == "kilograms_per_kilowatt_hour"
|
86
|
+
raise "Invalid electricity emission factor units for EgridSubregion #{subregion.name}: #{subregion.electricity_emission_factor_units} (should be kilograms_per_kilowatt_hour)"
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
64
90
|
end
|
65
91
|
end
|
@@ -28,5 +28,56 @@ RailClass.class_eval do
|
|
28
28
|
store 'electricity_intensity', :units_field_name => 'electricity_intensity_units'
|
29
29
|
store 'diesel_intensity', :units_field_name => 'diesel_intensity_units'
|
30
30
|
end
|
31
|
+
|
32
|
+
verify "Passengers, distance, speed, and electricity intensity should be greater than zero" do
|
33
|
+
RailClass.all.each do |rail_class|
|
34
|
+
%w{ passengers distance speed electricity_intensity }.each do |attribute|
|
35
|
+
value = rail_class.send(:"#{attribute}")
|
36
|
+
unless value > 0
|
37
|
+
raise "Invalid #{attribute} for RailClass #{rail_class.name}: #{value} (should be > 0)"
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
verify "Distance units should be kilometres" do
|
44
|
+
RailClass.all.each do |rail_class|
|
45
|
+
unless rail_class.distance_units == "kilometres"
|
46
|
+
raise "Invalid distance units for RailClass #{rail_class.name}: #{rail_class.distance_units} (should be kilometres)"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
verify "Speed units should be kilometres per hour" do
|
52
|
+
RailClass.all.each do |rail_class|
|
53
|
+
unless rail_class.speed_units == "kilometres_per_hour"
|
54
|
+
raise "Invalid speed units for RailClass #{rail_class.name}: #{rail_class.speed_units} (should be kilometres_per_hour)"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
verify "Electricity intensity units should be kilowatt hours per kilometre" do
|
60
|
+
RailClass.all.each do |rail_class|
|
61
|
+
unless rail_class.electricity_intensity_units == "kilowatt_hours_per_kilometre"
|
62
|
+
raise "Invalid electricity intensity units for RailClass #{rail_class.name}: #{rail_class.electricity_intensity_units} (should be kilowatt_hours_per_kilometre)"
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
verify "Diesel intensity should be zero or more" do
|
68
|
+
RailClass.all.each do |rail_class|
|
69
|
+
unless rail_class.diesel_intensity >= 0
|
70
|
+
raise "Invalid diesel intensity for RailClass #{rail_class.name}: #{rail_class.diesel_intensity} (should be > 0)"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
verify "Diesel intensity units should be litres per kilometre" do
|
76
|
+
RailClass.all.each do |rail_class|
|
77
|
+
unless rail_class.diesel_intensity_units == "litres_per_kilometre"
|
78
|
+
raise "Invalid distance units for RailClass #{rail_class.name}: #{rail_class.diesel_intensity_units} (should be litres_per_kilometre)"
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
31
82
|
end
|
32
83
|
end
|
@@ -33,13 +33,52 @@ Carrier.class_eval do
|
|
33
33
|
# what about transport_emission_factor_units?
|
34
34
|
# end
|
35
35
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
36
|
+
verify "Package volume should be greater than zero" do
|
37
|
+
Carrier.all.each do |carrier|
|
38
|
+
unless carrier.package_volume > 0
|
39
|
+
raise "Invalid package volume for Carrier #{carrier.name}: #{carrier.package_volume} (should be > 0)"
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
verify "Route inefficiency factor should be one or more" do
|
45
|
+
Carrier.all.each do |carrier|
|
46
|
+
unless carrier.route_inefficiency_factor >= 1.0
|
47
|
+
raise "Invalid route inefficiency factor for Carrier #{carrier.name}: #{carrier.route_inefficiency_factor} (should be >= 1.0)"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
verify "Transport emission factor should be greater than zero" do
|
53
|
+
Carrier.all.each do |carrier|
|
54
|
+
unless carrier.transport_emission_factor > 0
|
55
|
+
raise "Invalid transport emission factor for Carrier #{carrier.name}: #{carrier.transport_emission_factor} (should be > 0)"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
verify "Transport emission factor units should never be missing" do
|
61
|
+
Carrier.all.each do |carrier|
|
62
|
+
if carrier.transport_emission_factor_units.nil?
|
63
|
+
raise "Missing transport emission factor units for Carrier #{carrier.name}"
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
verify "Corporate emission factor should be greater than zero" do
|
69
|
+
Carrier.all.each do |carrier|
|
70
|
+
unless carrier.corporate_emission_factor > 0
|
71
|
+
raise "Invalid corporate emission factor for Carrier #{carrier.name}: #{carrier.corporate_emission_factor} (should be > 0)"
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
verify "Corporate emission factor units should never be missing" do
|
77
|
+
Carrier.all.each do |carrier|
|
78
|
+
if carrier.corporate_emission_factor_units.nil?
|
79
|
+
raise "Missing corporate emission factor units for Carrier #{carrier.name}"
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
44
83
|
end
|
45
84
|
end
|
@@ -22,13 +22,62 @@ CarrierMode.class_eval do
|
|
22
22
|
store 'transport_emission_factor', :units_field_name => 'transport_emission_factor_units'
|
23
23
|
end
|
24
24
|
|
25
|
-
#
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
25
|
+
# Don't need to check that carrier_name appears in carriers b/c carriers is derived from carrier_modes.carrier_name
|
26
|
+
verify "Carrier name should never be missing" do
|
27
|
+
CarrierMode.all.each do |carrier_mode|
|
28
|
+
if carrier_mode.carrier_name.nil?
|
29
|
+
raise "Missing carrier name for CarrierMode #{carrier_mode.name}"
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
# Don't need to check that mode_name appears in shipment_modes b/c shipment_modes is derived from carrier_modes.mode_name
|
35
|
+
verify "Mode name should never be missing" do
|
36
|
+
CarrierMode.all.each do |carrier_mode|
|
37
|
+
if carrier_mode.mode_name.nil?
|
38
|
+
raise "Missing mode name for CarrierMode #{carrier_mode.name}"
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
verify "Include in fallbacks should never be missing" do
|
44
|
+
CarrierMode.all.each do |carrier_mode|
|
45
|
+
if carrier_mode.include_in_fallbacks.nil?
|
46
|
+
raise "Missing include in fallbacks for CarrierMode #{carrier_mode.name}"
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
verify "Package volume should be greater than zero" do
|
52
|
+
CarrierMode.all.each do |carrier_mode|
|
53
|
+
unless carrier_mode.package_volume > 0
|
54
|
+
raise "Invalid package volume for CarrierMode #{carrier_mode.name}: #{carrier_mode.package_volume} (should be > 0)"
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
verify "Route inefficiency factor should be one or more" do
|
60
|
+
CarrierMode.all.each do |carrier_mode|
|
61
|
+
unless carrier_mode.route_inefficiency_factor >= 1.0
|
62
|
+
raise "Invalid route inefficiency factor for CarrierMode #{carrier_mode.name}: #{carrier_mode.route_inefficiency_factor} (should be >= 1.0)"
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
verify "Transport emission factor should be greater than zero" do
|
68
|
+
CarrierMode.all.each do |carrier_mode|
|
69
|
+
unless carrier_mode.transport_emission_factor > 0
|
70
|
+
raise "Invalid transport emission factor for CarrierMode #{carrier_mode.name}: #{carrier_mode.transport_emission_factor} (should be > 0)"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
verify "Transport emission factor units should never be missing" do
|
76
|
+
CarrierMode.all.each do |carrier_mode|
|
77
|
+
if carrier_mode.transport_emission_factor_units.nil?
|
78
|
+
raise "Missing transport emission factor units for CarrierMode #{carrier_mode.name}"
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
33
82
|
end
|
34
83
|
end
|
@@ -26,9 +26,28 @@ ShipmentMode.class_eval do
|
|
26
26
|
# what about transport_emission_factor_units?
|
27
27
|
# end
|
28
28
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
29
|
+
verify "Route inefficiency factor should be one or more" do
|
30
|
+
ShipmentMode.all.each do |mode|
|
31
|
+
unless mode.route_inefficiency_factor >= 1.0
|
32
|
+
raise "Invalid route inefficiency factor for ShipmentMode #{mode.name}: #{mode.route_inefficiency_factor} (should be >= 1.0)"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
verify "Transport emission factor should be greater than zero" do
|
38
|
+
ShipmentMode.all.each do |mode|
|
39
|
+
unless mode.transport_emission_factor > 0
|
40
|
+
raise "Invalid transport emission factor for ShipmentMode #{mode.name}: #{mode.transport_emission_factor} (should be > 0)"
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
verify "Transport emission factor units should never be missing" do
|
46
|
+
ShipmentMode.all.each do |mode|
|
47
|
+
if mode.transport_emission_factor_units.nil?
|
48
|
+
raise "Missing transport emission factor units for ShipmentMode #{mode.name}"
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
33
52
|
end
|
34
53
|
end
|