parse_p1 0.0.8 → 0.0.9

Sign up to get free protection for your applications and to get access to all the features.
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