parse_p1 0.0.8 → 0.0.9

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/CHANGELOG CHANGED
@@ -1,3 +1,6 @@
1
+ * 0.0.9
2
+ Another improvement of irregular data
3
+
1
4
  * 0.0.8
2
5
  Improve robustness of parsing records with irregularities and different use of carriage return and line feed
3
6
 
data/lib/parse_p1/base.rb CHANGED
@@ -14,7 +14,7 @@ module ParseP1
14
14
  end
15
15
 
16
16
  def valid?
17
- !data.match(/!$/).nil? && !device_id.nil?
17
+ !data.match(/!/).nil? && !device_id.nil?
18
18
  end
19
19
 
20
20
  def device_id
@@ -1,3 +1,3 @@
1
1
  module ParseP1
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
@@ -4,12 +4,9 @@ require 'helper'
4
4
 
5
5
  class TestParseP1 < Test::Unit::TestCase
6
6
 
7
- def setup
7
+ setup do
8
8
  #Data string as received on a Ruby on Rails application with some uncleared data in front of it
9
9
  @data = "sBs\u0012C\u0002\u0002\nK*r\"CKR[Wh)\r\n1-0:2.8.1(00000.000*kWh)\r\n1-0:2.8.2(00000.\r\n/ABc1\\1AB123-4567\r\n\r\n0-0:96.1.1(1A123456789012345678901234567890)\r\n1-0:1.8.1(00136.787*kWh)\r\n1-0:1.8.2(00131.849*kWh)\r\n1-0:2.8.1(00002.345*kWh)\r\n1-0:2.8.2(00054.976*kWh)\r\n0-0:96.14.0(0002)\r\n1-0:1.7.0(0003.20*kW)\r\n1-0:2.7.0(0000.12*kW)\r\n0-0:17.0.0(0999.00*kW)\r\n0-0:96.3.10(1)\r\n0-0:96.13.1()\r\n0-0:96.13.0()\r\n0-1:24.1.0(3)\r\n0-1:96.1.0(1234567890123456789012345678901234)\r\n0-1:24.3.0(120502150000)(00)(60)(1)(0-1:24.2.1)(m3)\r\n(00092.112)\r\n0-1:24.4.0(1)\r\n!"
10
- @data2 = "//ABc1\u0001AB123-4567\n0-0:96.1.1(1A123456789012345678901234567890)\n1-0:1.8.1(02145.375*kWh)\n1-0:1.8.2(02043.840*kWh)\n1-0:2.8.1(00000.000*kWh)\n1-0:2.8.2(00000.001*kWh)\n0-0:96.14.0(0001)\n1-0:1.7.0(0000.82*kW)\n1-0:2.7.0(0000.00*kW)\n0-0:17.0.0(0999.00*kW)\n0-0:96.3.10(1)\n0-0:96.13.1()\n0-0:96.13.0()\n0-1:24.1.0(3)\n0-1:96.1.0(3338303034303031313338323831383131)\n0-1:24.3.0(130406220000)(00)(60)(1)(0-1:24.2.1)(m3)\n(01878.044)\n0-1:24.4.0(1)\n!"
11
- @data3 = "//ABc1\\1AB123-4567\n0-0:96.1.1(1A123456789012345678901234567890)\n1-0:1.8.1(02145.452*kWh)\n1-0:1.8.2(02043.840*kWh)\n1-0:2.8.1(00000.000*kWh)\n1-0:2.8.2(00000.001*kWh)\n0-0:96.14.0(0001)\n1-0:1.7.0(0000.80*kW)\n1-0:2.7.0(0000.00*kW)\n0-0:17.0.0(0999.00*kW)\n0-0:96.3.10(1)\n0-0:96.13.1()\n0-0:96.13.0()\n0-1:24.1.0(3)\n0-1:96.1.0(3338303034303031313338323831383131)\n0-1:24.3.0(130406220000)(00)(60)(1)(0-1:24.2.1)(m3)\n(01878.044)\n0-1:24.4.0(1)\n!"
12
-
13
10
  @p1 = ParseP1::Base.new(@data)
14
11
  end
15
12
 
@@ -114,19 +111,31 @@ class TestParseP1 < Test::Unit::TestCase
114
111
  end
115
112
 
116
113
  context 'Data with irregularities' do
117
- setup do
118
- @p2 = ParseP1::Base.new(@data2)
119
- @p3 = ParseP1::Base.new(@data3)
120
114
 
115
+ setup do
116
+ @irregular_data = [
117
+ "//ABc1\u0001AB123-4567\n0-0:96.1.1(1A123456789012345678901234567890)\n1-0:1.8.1(02145.375*kWh)\n1-0:1.8.2(02043.840*kWh)\n1-0:2.8.1(00000.000*kWh)\n1-0:2.8.2(00000.001*kWh)\n0-0:96.14.0(0001)\n1-0:1.7.0(0000.82*kW)\n1-0:2.7.0(0000.00*kW)\n0-0:17.0.0(0999.00*kW)\n0-0:96.3.10(1)\n0-0:96.13.1()\n0-0:96.13.0()\n0-1:24.1.0(3)\n0-1:96.1.0(3338303034303031313338323831383131)\n0-1:24.3.0(130406220000)(00)(60)(1)(0-1:24.2.1)(m3)\n(01878.044)\n0-1:24.4.0(1)\n!",
118
+ "//ABc1\\1AB123-4567\n0-0:96.1.1(1A123456789012345678901234567890)\n1-0:1.8.1(02145.452*kWh)\n1-0:1.8.2(02043.840*kWh)\n1-0:2.8.1(00000.000*kWh)\n1-0:2.8.2(00000.001*kWh)\n0-0:96.14.0(0001)\n1-0:1.7.0(0000.80*kW)\n1-0:2.7.0(0000.00*kW)\n0-0:17.0.0(0999.00*kW)\n0-0:96.3.10(1)\n0-0:96.13.1()\n0-0:96.13.0()\n0-1:24.1.0(3)\n0-1:96.1.0(3338303034303031313338323831383131)\n0-1:24.3.0(130406220000)(00)(60)(1)(0-1:24.2.1)(m3)\n(01878.044)\n0-1:24.4.0(1)\n!" ,
119
+ "emonweb.org/api HTTP/1.0\r\nHost: emonweb.org\r\nUser-A/ABc1\\1AB123-4567\r\n\r\n0-0:96.1.1(1A123456789012345678901234567890)\r\n1-0:1.8.1(02167.834*kWh)\r\n1-0:1.8.2(02068.811*kWh)\r\n1-0:2.8.1(00000.000*kWh)\r\n1-0:2.8.2(00000.001*kWh)\r\n0-0:96.14.0(0002)\r\n1-0:1.7.0(0000.26*kW)\r\n1-0:2.7.0(0000.00*kW)\r\n0-0:17.0.0(0999.00*kW)\r\n0-0:96.3.10(1)\r\n0-0:96.13.1()\r\n0-0:96.13.0()\r\n0-1:24.1.0(3)\r\n0-1:96.1.0(1234567890123456789012345678901234)\r\n0-1:24.3.0(130411070000)(00)(60)(1)(0-1:24.2.1)(m3)\r\n(01904.959)\r\n0-1:24.4.0(1)\r\n!agent"
120
+ ]
121
+ end
122
+
123
+ should 'tell if a very meshed string is P1 valid' do
124
+ @irregular_data.each do |record|
125
+ p1 = ParseP1::Base.new(record)
126
+ assert_equal true, p1.valid?
127
+ assert p1.gas_usage.is_a?(Float)
128
+ assert p1.actual_electra.is_a?(Integer)
129
+ assert p1.device_id.is_a?(String)
130
+ assert p1.electra_meter_id.is_a?(String)
131
+ assert p1.gas_meter_id.is_a?(String)
132
+ assert p1.electra_import_low.is_a?(Float)
133
+ assert p1.electra_import_normal.is_a?(Float)
134
+ assert p1.electra_export_low.is_a?(Float)
135
+ assert p1.electra_export_normal.is_a?(Float)
136
+ end
121
137
  end
122
- should 'return the device_id of the meter' do
123
- assert @p2.device_id
124
- assert @p3.device_id
125
- end
126
- should 'return the gas_usage of the meter' do
127
- assert_equal 1878.044, @p2.gas_usage
128
- assert_equal 1878.044, @p3.gas_usage
129
- end
138
+
130
139
  end
131
140
 
132
141
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parse_p1
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-07 00:00:00.000000000 Z
12
+ date: 2013-04-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: shoulda
@@ -106,7 +106,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
106
106
  version: '0'
107
107
  segments:
108
108
  - 0
109
- hash: -4033320981012269
109
+ hash: -231798999645191839
110
110
  required_rubygems_version: !ruby/object:Gem::Requirement
111
111
  none: false
112
112
  requirements:
@@ -115,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
115
115
  version: '0'
116
116
  segments:
117
117
  - 0
118
- hash: -4033320981012269
118
+ hash: -231798999645191839
119
119
  requirements: []
120
120
  rubyforge_project: parse_p1
121
121
  rubygems_version: 1.8.25