dmm_util 0.1.0
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/.document +5 -0
- data/Gemfile +15 -0
- data/Gemfile.lock +24 -0
- data/LICENSE.txt +20 -0
- data/README.rdoc +19 -0
- data/Rakefile +55 -0
- data/VERSION +1 -0
- data/bin/dmm_util +127 -0
- data/dmm_util.gemspec +84 -0
- data/lib/dmm_util/cursor.rb +31 -0
- data/lib/dmm_util/fluke28x_driver.rb +440 -0
- data/lib/dmm_util/format_convertors.rb +46 -0
- data/lib/dmm_util/measurement.rb +64 -0
- data/lib/dmm_util/meter.rb +39 -0
- data/lib/dmm_util/reading.rb +64 -0
- data/lib/dmm_util/recording.rb +35 -0
- data/lib/dmm_util/recording_measurement.rb +62 -0
- data/lib/dmm_util/recording_measurement_cursor.rb +26 -0
- data/lib/dmm_util.rb +36 -0
- data/test/communication_test.rb +183 -0
- data/test/dmm_command_test.rb +489 -0
- data/test/format_convertors_test.rb +61 -0
- data/test/integration_itest.rb +290 -0
- data/test/measurement_test.rb +57 -0
- data/test/meter_test.rb +178 -0
- data/test/reading_test.rb +48 -0
- data/test/recording_measurement_test.rb +55 -0
- data/test/recording_test.rb +75 -0
- data/test/test_helper.rb +176 -0
- metadata +181 -0
@@ -0,0 +1,290 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
class IntegrationItest < Test::Unit::TestCase
|
4
|
+
include DMMTestHelper
|
5
|
+
|
6
|
+
def test_open
|
7
|
+
m = DmmUtil.open
|
8
|
+
assert m.driver.valid?
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_id
|
12
|
+
@meter = DmmUtil::open_driver("/dev/tty.usbserial-A7004rWH")
|
13
|
+
res = @meter.id
|
14
|
+
assert_equal({:model_number=>"FLUKE 289",
|
15
|
+
:software_version=>"V1.10",
|
16
|
+
:serial_number=>"12540010"}, res)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_qemap
|
20
|
+
@meter = DmmUtil::open_driver("/dev/tty.usbserial-A7004rWH")
|
21
|
+
QEMAP.each do |key, val|
|
22
|
+
assert_equal(val, @meter.qemap(key))
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_mpq_props
|
27
|
+
@meter = DmmUtil::open_driver("/dev/tty.usbserial-A7004rWH")
|
28
|
+
assert_sets_equal DmmUtil::Fluke28xDriver::MPQ_PROPS, @meter.qemap(:mpq_props).values.map{|val| val.downcase.to_sym}
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_mp_props
|
32
|
+
@meter = DmmUtil::open_driver("/dev/tty.usbserial-A7004rWH")
|
33
|
+
assert_sets_equal DmmUtil::Fluke28xDriver::MP_PROPS.keys.map{|v|v.to_s}, @meter.qemap(:mp_props).values.map{|val| val.downcase}
|
34
|
+
DmmUtil::Fluke28xDriver::MP_PROPS.each do |key, val|
|
35
|
+
next unless val.is_a?(Array)
|
36
|
+
if val.first.is_a?(Integer)
|
37
|
+
real = @meter.qemap(key).values.map{|v| Integer(v)}
|
38
|
+
else
|
39
|
+
real = @meter.qemap(key).values.map{|v| v.downcase.to_sym}
|
40
|
+
end
|
41
|
+
assert_sets_equal val, real
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# Time
|
46
|
+
# qdda/qddb query setting consistent
|
47
|
+
# Hitting backlight key / query backlight status
|
48
|
+
|
49
|
+
# def test_qdda
|
50
|
+
# result = @meter.meter_command("qdda")
|
51
|
+
# puts result.inspect
|
52
|
+
# end
|
53
|
+
#
|
54
|
+
# def test_qddb
|
55
|
+
# result = @meter.meter_command("qddb")
|
56
|
+
# puts hex(result)
|
57
|
+
# end
|
58
|
+
|
59
|
+
# def test_qsmr
|
60
|
+
# #saved meassurement
|
61
|
+
# result = @meter.meter_command("qsmr 0")
|
62
|
+
# puts "qsmr"
|
63
|
+
# puts hex(result)
|
64
|
+
# # 01 00 00 00 01 00 00 00 01 00 02 00 00 00 14 40 ...............@
|
65
|
+
# # 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
|
66
|
+
# # 04 00 00 00 01 00 02 00 34 EF C0 3F E5 61 A1 D6 ........4..?.a..
|
67
|
+
# # 02 00 00 00 04 00 05 00 02 00 00 00 25 F9 D2 41 ............%..A
|
68
|
+
# # 00 30 A0 A8 52 65 63 6F 72 64 69 6E 67 20 31 .0..Recording.1
|
69
|
+
# end
|
70
|
+
#
|
71
|
+
# def test_qmmsi
|
72
|
+
# #saved min/max
|
73
|
+
# result = @meter.meter_command("qmmsi 0")
|
74
|
+
# puts "qmmsi"
|
75
|
+
# puts hex(result)
|
76
|
+
# # 2B 00 00 00 2C F9 D2 41 00 40 3D 40 2C F9 D2 41 +...,..A.@=@,..A
|
77
|
+
# # 00 20 BA 46 01 00 00 00 01 00 02 00 00 00 14 40 ...F...........@
|
78
|
+
# # 00 00 00 00 00 00 01 00 2C F9 D2 41 00 40 3D 40 ........,..A.@=@
|
79
|
+
# # 10 00 00 00 04 00 02 00 7B F2 A0 3F 6E C5 FE B2 ........{..?n...
|
80
|
+
# # 02 00 00 00 04 00 05 00 02 00 00 00 2C F9 D2 41 ............,..A
|
81
|
+
# # 00 20 BA 46 07 00 76 4F 9E 3F AC AD D8 5F 02 00 ...F..vO.?..._..
|
82
|
+
# # 00 00 04 00 05 00 02 00 00 00 2C F9 D2 41 00 00 ..........,..A..
|
83
|
+
# # 8F 43 08 00 F2 1F A2 3F 72 8A 8E E4 02 00 00 00 .C.....?r.......
|
84
|
+
# # 04 00 05 00 02 00 00 00 2C F9 D2 41 00 90 BD 44 ........,..A...D
|
85
|
+
# # 09 00 A0 89 A0 3F 61 54 52 27 02 00 00 00 04 00 .....?aTR'......
|
86
|
+
# # 05 00 02 00 00 00 2C F9 D2 41 00 20 BA 46 43 69 ......,..A...FCi
|
87
|
+
# # 72 63 75 69 74 20 31 rcuit.1
|
88
|
+
# end
|
89
|
+
#
|
90
|
+
# def test_qpsi
|
91
|
+
# #saved peak
|
92
|
+
# result = @meter.meter_command("qpsi 0")
|
93
|
+
# puts "qpsi"
|
94
|
+
# puts hex(result)
|
95
|
+
# # 2C 00 00 00 2C F9 D2 41 00 60 A1 79 2C F9 D2 41 ,...,..A.`.y,..A
|
96
|
+
# # 00 60 11 7A 01 00 09 00 01 00 02 00 00 00 14 40 .`.z...........@
|
97
|
+
# # 00 00 00 00 00 00 01 00 2C F9 D2 41 00 60 A1 79 ........,..A.`.y
|
98
|
+
# # 10 00 00 00 04 00 02 00 72 68 A1 3F 9C C4 20 B0 ........rh.?....
|
99
|
+
# # 02 00 00 00 03 00 05 00 02 00 00 00 2C F9 D2 41 ............,..A
|
100
|
+
# # 00 60 11 7A 07 00 45 B6 B3 BF 83 C0 CA A1 04 00 .`.z..E.........
|
101
|
+
# # 00 00 03 00 05 00 02 00 00 00 2C F9 D2 41 00 70 ..........,..A.p
|
102
|
+
# # B1 79 08 00 C0 CA C1 3F 98 6E 12 83 04 00 00 00 .y.....?.n......
|
103
|
+
# # 03 00 05 00 02 00 00 00 2C F9 D2 41 00 60 A1 79 ........,..A.`.y
|
104
|
+
# # 09 00 72 68 A1 3F 9C C4 20 B0 02 00 00 00 03 00 ..rh.?..........
|
105
|
+
# # 05 00 02 00 00 00 2C F9 D2 41 00 60 11 7A 43 69 ......,..A.`.zCi
|
106
|
+
# # 72 63 75 69 74 20 32 rcuit.2
|
107
|
+
# endx
|
108
|
+
#
|
109
|
+
# def test_qrsi
|
110
|
+
# # Recorded session info / header
|
111
|
+
# result = @meter.meter_command("qrsi 0")
|
112
|
+
# puts "qrsi"
|
113
|
+
# puts hex(result)
|
114
|
+
# # 06 00 00 00 26 F9 D2 41 00 00 D4 30 26 F9 D2 41 ....&..A...0&..A
|
115
|
+
# # 00 B0 CB 33 00 20 8C 40 00 00 00 00 E1 7A A4 3F ...3...@.....z.?
|
116
|
+
# # 7B 14 AE 47 07 00 00 00 02 00 00 00 01 00 00 00 {..G............
|
117
|
+
# # 01 00 02 00 00 00 14 40 00 00 00 00 00 00 01 00 .......@........
|
118
|
+
# # 00 00 00 00 00 00 00 00 20 00 00 00 01 00 02 00 ................
|
119
|
+
# # D7 12 A2 3F 51 FC 18 73 02 00 00 00 04 00 05 00 ...?Q..s........
|
120
|
+
# # 02 00 00 00 26 F9 D2 41 00 B0 CB 33 42 61 74 74 ....&..A...3Batt
|
121
|
+
# # 65 72 79 20 31 ery.1
|
122
|
+
# end
|
123
|
+
#
|
124
|
+
# def test_qsrr
|
125
|
+
# # Recorded session record/sample
|
126
|
+
# puts "qsrr"
|
127
|
+
# result = @meter.meter_command("qsrr 7,0")
|
128
|
+
# puts hex(result)
|
129
|
+
# # 26 F9 D2 41 00 00 D4 30 26 F9 D2 41 00 B0 CB 33 &..A...0&..A...3
|
130
|
+
# # 08 00 CE 88 A2 3F 7F FB 3A 70 02 00 00 00 04 00 .....?..:p......
|
131
|
+
# # 05 00 02 00 00 00 26 F9 D2 41 00 10 01 31 07 00 ......&..A...1..
|
132
|
+
# # 4E D1 A1 3F A9 35 CD 3B 02 00 00 00 04 00 05 00 N..?.5.;........
|
133
|
+
# # 02 00 00 00 26 F9 D2 41 00 60 14 31 09 00 55 B0 ....&..A.`.1..U.
|
134
|
+
# # 10 40 1C 7C 61 32 02 00 00 00 04 00 05 00 02 00 .@.|a2..........
|
135
|
+
# # 00 00 26 F9 D2 41 00 00 D4 30 76 00 00 00 02 00 ..&..A...0v.....
|
136
|
+
# # F2 1F A2 3F 72 8A 8E E4 02 00 00 00 04 00 05 00 ...?r...........
|
137
|
+
# # 02 00 00 00 26 F9 D2 41 00 00 D4 30 00 00 01 00 ....&..A...0....
|
138
|
+
# # 00 00 ..
|
139
|
+
# end
|
140
|
+
#
|
141
|
+
#
|
142
|
+
#
|
143
|
+
# def xtest_other_maps
|
144
|
+
# @meter.qemap(:fileMode)
|
145
|
+
# @meter.qemap(:beeperTestState)
|
146
|
+
# @meter.qemap(:sessionType)
|
147
|
+
# @meter.qemap(:calStatus)
|
148
|
+
# @meter.qemap(:mode)
|
149
|
+
# @meter.qemap(:readingID)
|
150
|
+
# @meter.qemap(:attribute)
|
151
|
+
# @meter.qemap(:jackName)
|
152
|
+
# @meter.qemap(:jackPositionStatus)
|
153
|
+
# @meter.qemap(:testPattern)
|
154
|
+
# @meter.qemap(:lcdModeState)
|
155
|
+
# @meter.qemap(:ledState)
|
156
|
+
# @meter.qemap(:mp_props)
|
157
|
+
# @meter.qemap(:mpdev_props)
|
158
|
+
# @meter.qemap(:mpq_props)
|
159
|
+
# @meter.qemap(:memSize)
|
160
|
+
# @meter.qemap(:powerMode)
|
161
|
+
# @meter.qemap(:buttonName)
|
162
|
+
# @meter.qemap(:presstype)
|
163
|
+
# @meter.qemap(:channel)
|
164
|
+
# @meter.qemap(:sampleTime)
|
165
|
+
# @meter.qemap(:recordType)
|
166
|
+
# @meter.qemap(:isStableFlag)
|
167
|
+
# @meter.qemap(:transientState)
|
168
|
+
# @meter.qemap(:xaJackName)
|
169
|
+
# end
|
170
|
+
#
|
171
|
+
# def xtest_other_maps2
|
172
|
+
# @meter.qemap(:rsob)
|
173
|
+
# @meter.qemap(:blightVals)
|
174
|
+
# @meter.qemap(:blVals)
|
175
|
+
# @meter.qemap(:memVals)
|
176
|
+
# @meter.qemap(:primFunction)
|
177
|
+
# @meter.qemap(:secFunction)
|
178
|
+
# @meter.qemap(:MODE)
|
179
|
+
# @meter.qemap(:jackDetect)
|
180
|
+
# @meter.qemap(:updateMode)
|
181
|
+
# @meter.qemap(:acSmooth)
|
182
|
+
# @meter.qemap(:SI)
|
183
|
+
# @meter.qemap(:tempUnit)
|
184
|
+
# @meter.qemap(:dBmRef)
|
185
|
+
# @meter.qemap(:pwPol)
|
186
|
+
# @meter.qemap(:hzEdge)
|
187
|
+
# @meter.qemap(:dcPol)
|
188
|
+
# @meter.qemap(:contBeep)
|
189
|
+
# @meter.qemap(:contBeepOS)
|
190
|
+
# @meter.qemap(:timeFmt)
|
191
|
+
# @meter.qemap(:numFmt)
|
192
|
+
# @meter.qemap(:lang)
|
193
|
+
# @meter.qemap(:dateFmt)
|
194
|
+
# @meter.qemap(:recEventTh)
|
195
|
+
# @meter.qemap(:rsm)
|
196
|
+
# @meter.qemap(:ablto)
|
197
|
+
# @meter.qemap(:digits)
|
198
|
+
# @meter.qemap(:beeper)
|
199
|
+
# @meter.qemap(:apoffto)
|
200
|
+
# @meter.qemap(:UNIT)
|
201
|
+
# @meter.qemap(:ATTRIBUTE)
|
202
|
+
# @meter.qemap(:STATE)
|
203
|
+
# @meter.qemap(:autoRange)
|
204
|
+
# @meter.qemap(:unit)
|
205
|
+
# @meter.qemap(:bolt)
|
206
|
+
# end
|
207
|
+
|
208
|
+
|
209
|
+
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
|
214
|
+
|
215
|
+
|
216
|
+
#"Map fileMode: {0=>\"READ\", 1=>\"APPEND\", 2=>\"TRUNCATE\"}"
|
217
|
+
#"Map beeperTestState: {0=>\"OFF\", 1=>\"ON\"}"
|
218
|
+
#"Map sessionType: {0=>\"ALL\", 1=>\"RECORDED\", 2=>\"MIN_MAX\", 3=>\"PEAK\", 4=>\"MEASUREMENT\"}"
|
219
|
+
#"Map calStatus: {5=>\"CAL_COMPLETE\", 0=>\"INACTIVE\", 1=>\"WAITING\", 2=>\"CALIBRATING\", 3=>\"INVALID_ROTARY_SWITCH\"}"
|
220
|
+
#"Map mode: {16=>\"MIN_MAX_AVG\", 0=>\"NONE\", 1=>\"AUTO_HOLD\", 128=>\"REL_PERCENT\", 2=>\"AUTO_SAVE\", 8=>\"LOW_PASS_FILTER\", 256=>\"CALIBRATION\", 64=>\"REL\", 4=>\"HOLD\", 32=>\"RECORD\"}"
|
221
|
+
#"Map readingID: {5=>\"BARGRAPH\", 11=>\"REL_REFERENCE\", 12=>\"DB_REF\", 1=>\"LIVE\", 7=>\"MINIMUM\", 13=>\"TEMP_OFFSET\", 2=>\"PRIMARY\", 8=>\"MAXIMUM\", 3=>\"SECONDARY\", 9=>\"AVERAGE\", 4=>\"REL_LIVE\"}"
|
222
|
+
#"Map attribute: {5=>\"LO_OHMS\", 0=>\"NONE\", 6=>\"NEGATIVE_EDGE\", 1=>\"OPEN_CIRCUIT\", 7=>\"POSITIVE_EDGE\", 2=>\"SHORT_CIRCUIT\", 8=>\"HIGH_CURRENT\", 3=>\"GLITCH_CIRCUIT\", 4=>\"GOOD_DIODE\"}"
|
223
|
+
#"Map jackName: {0=>\"AMPS\", 1=>\"m_uAMPS\"}"
|
224
|
+
#"Map jackPositionStatus: {0=>\"IN\", 1=>\"OUT\"}"
|
225
|
+
#"Map testPattern: {5=>\"HORIZ_LINES\", 0=>\"OFF\", 6=>\"VERT_LINES\", 1=>\"BLANK\", 7=>\"HORIZ_LINES_OFFSET\", 2=>\"BOX\", 8=>\"VERT_LINES_OFFSET\", 3=>\"SOLID\", 4=>\"CONTRAST\"}"
|
226
|
+
#"Map lcdModeState: {0=>\"ON\", 1=>\"OFF\"}"
|
227
|
+
#"Map ledState: {0=>\"ON\", 1=>\"OFF\"}"
|
228
|
+
#"Map mp_props: {16=>\"dcPol\", 5=>\"rsm\", 22=>\"SI\", 11=>\"lang\", 0=>\"apoffto\", 17=>\"hzEdge\", 6=>\"lcdCont\", 23=>\"acSmooth\", 12=>\"numFmt\", 1=>\"beeper\", 18=>\"pwPol\", 7=>\"ahEventTh\", 13=>\"timeFmt\", 2=>\"cusDBm\", 19=>\"dBmRef\", 8=>\"recEventTh\", 14=>\"contBeepOS\", 3=>\"digits\", 20=>\"tempOS\", 9=>\"Clock\", 15=>\"contBeep\", 4=>\"ablto\", 21=>\"tempUnit\", 10=>\"dateFmt\"}"
|
229
|
+
#"Map mpdev_props: {0=>\"ablto\", 1=>\"apoffto\", 2=>\"recEventTh\"}"
|
230
|
+
#"Map mpq_props: {0=>\"COMPANY\", 1=>\"CONTACT\", 2=>\"OPERATOR\", 3=>\"SITE\"}"
|
231
|
+
#"Map memSize: {1=>\"1\", 2=>\"2\", 4=>\"4\"}"
|
232
|
+
#"Map powerMode: {0=>\"ON\", 1=>\"BATTERY_SAVER\", 2=>\"OFF\", 3=>\"OFF_WITH_WAKEUP\", 4=>\"RESTART\"}"
|
233
|
+
#"Map buttonName: {654=>\"HOLD\", 660=>\"ONOFF\", 655=>\"MINMAX\", 650=>\"F1\", 606=>\"UP\", 656=>\"RANGE\", 651=>\"F2\", 607=>\"DOWN\", 657=>\"INFO\", 652=>\"F3\", 608=>\"LEFT\", 658=>\"BACKLIGHT\", 653=>\"F4\", 609=>\"RIGHT\"}"
|
234
|
+
#"Map presstype: {0=>\"PRESSED\", 1=>\"HELD_DOWN\", 2=>\"RELEASED\", 3=>\"REPEATED\"}"
|
235
|
+
#"Map channel: {5=>\"5\", 0=>\"0\", 6=>\"6\", 1=>\"1\", 7=>\"7\", 2=>\"2\", 3=>\"3\", 4=>\"4\"}"
|
236
|
+
#"Map sampleTime: {5=>\"5\", 11=>\"11\", 0=>\"0\", 6=>\"6\", 12=>\"12\", 1=>\"1\", 7=>\"7\", 13=>\"13\", 2=>\"2\", 8=>\"8\", 14=>\"14\", 3=>\"3\", 9=>\"9\", 15=>\"15\", 4=>\"4\", 10=>\"10\"}"
|
237
|
+
#"Map recordType: {0=>\"INPUT\", 1=>\"INTERVAL\"}"
|
238
|
+
#"Map isStableFlag: {0=>\"UNSTABLE\", 1=>\"STABLE\"}"
|
239
|
+
#"Map transientState: {0=>\"NON_T\", 1=>\"RANGE_UP\", 2=>\"RANGE_DOWN\", 3=>\"OVERLOAD\", 4=>\"OPEN_TC\"}"
|
240
|
+
#"Map xaJackName: {5=>\"JACK\", 0=>\"AMPS\", 1=>\"m_uAMPS\", 2=>\"BOTH\", 3=>\"NONE\", 4=>\"IGNORE\"}"
|
241
|
+
|
242
|
+
|
243
|
+
## Can be set?
|
244
|
+
#"Map rsob: {5=>\"4\", 11=>\"NUM\", 0=>\"LIMBO\", 6=>\"5\", 12=>\"INVALID\", 1=>\"0\", 7=>\"6\", 2=>\"1\", 8=>\"7\", 3=>\"2\", 9=>\"8\", 4=>\"3\", 10=>\"9\"}"
|
245
|
+
#"Map blightVals: {1=>\"OFF\", 2=>\"LOW\", 3=>\"HIGH\"}"
|
246
|
+
#"Map blVals: {5=>\"PARTLY_EMPTY_3\", 6=>\"FULL\", 1=>\"EMPTY\", 2=>\"ALMOST_EMPTY\", 3=>\"PARTLY_EMPTY_1\", 4=>\"PARTLY_EMPTY_2\"}"
|
247
|
+
#"Map memVals: {0=>\"EXHAUSTED\", 1=>\"SEVERE\", 2=>\"WARNING\", 3=>\"OK\"}"
|
248
|
+
#"Map primFunction: {38=>\"CAL_FILT_AMP\", 27=>\"OHMS\", 16=>\"UA_DC\", 5=>\"V_AC_OVER_DC\", 44=>\"CAL_ACDC_AC_COMP\", 33=>\"OHMS_LOW\", 22=>\"MA_AC_PLUS_DC\", 11=>\"A_AC\", 0=>\"LIMBO\", 39=>\"CAL_DC_AMP_X5\", 28=>\"CONDUCTANCE\", 17=>\"A_AC_OVER_DC\", 6=>\"V_DC_OVER_AC\", 45=>\"CAL_V_AC_LOZ\", 34=>\"CAL_V_DC_LOZ\", 23=>\"UA_AC_OVER_DC\", 12=>\"MA_AC\", 1=>\"V_AC\", 40=>\"CAL_DC_AMP_X10\", 29=>\"CONTINUITY\", 18=>\"A_DC_OVER_AC\", 7=>\"V_AC_PLUS_DC\", 46=>\"CAL_V_AC_PEAK\", 35=>\"CAL_AD_GAIN_X2\", 24=>\"UA_DC_OVER_AC\", 13=>\"UA_AC\", 2=>\"MV_AC\", 41=>\"CAL_NINV_AC_AMP\", 30=>\"CAPACITANCE\", 19=>\"A_AC_PLUS_DC\", 8=>\"MV_AC_OVER_DC\", 47=>\"CAL_MV_AC_PEAK\", 36=>\"CAL_AD_GAIN_X1\", 25=>\"UA_AC_PLUS_DC\", 14=>\"A_DC\", 3=>\"V_DC\", 42=>\"CAL_ISRC_500NA\", 31=>\"DIODE_TEST\", 20=>\"MA_AC_OVER_DC\", 9=>\"MV_DC_OVER_AC\", 48=>\"CAL_TEMPERATURE\", 37=>\"CAL_RMS\", 26=>\"TEMPERATURE\", 15=>\"MA_DC\", 4=>\"MV_DC\", 43=>\"CAL_COMP_TRIM_MV_DC\", 32=>\"V_AC_LOZ\", 21=>\"MA_DC_OVER_AC\", 10=>\"MV_AC_PLUS_DC\"}"
|
249
|
+
#"Map secFunction: {5=>\"DBV\", 0=>\"NONE\", 6=>\"DBM_HERTZ\", 1=>\"HERTZ\", 7=>\"DBV_HERTZ\", 2=>\"DUTY_CYCLE\", 8=>\"CREST_FACTOR\", 3=>\"PULSE_WIDTH\", 9=>\"PEAK_MIN_MAX\", 4=>\"DBM\"}"
|
250
|
+
#"Map MODE: {16=>\"MIN_MAX_AVG\", 0=>\"NONE\", 1=>\"AUTO_HOLD\", 128=>\"REL_PERCENT\", 2=>\"AUTO_SAVE\", 8=>\"LOW_PASS_FILTER\", 256=>\"CALIBRATION\", 64=>\"REL\", 4=>\"HOLD\", 32=>\"RECORD\"}"
|
251
|
+
#"Map jackDetect: {1=>\"OK\", 2=>\"ATTENTION\", 3=>\"WARNING\"}"
|
252
|
+
#"Map updateMode: {0=>\"DISABLED\", 1=>\"ENABLED_UNLOCKED\", 2=>\"ENABLED_LOCKED\", 3=>\"RETURNED_TO_ORIGINAL\", 4=>\"SUCCESSFUL\"}"
|
253
|
+
#"Map acSmooth: {0=>\"OFF\", 1=>\"ON\"}"
|
254
|
+
#"Map SI: {0=>\"OFF\", 1=>\"ON\"}"
|
255
|
+
#"Map tempUnit: {0=>\"C\", 1=>\"F\"}"
|
256
|
+
#"Map dBmRef: {16=>\"16\", 0=>\"0\", 600=>\"600\", 50=>\"50\", 8=>\"8\", 25=>\"25\", 75=>\"75\", 4=>\"4\", 1000=>\"1000\", 32=>\"32\"}"
|
257
|
+
#"Map pwPol: {0=>\"POS\", 1=>\"NEG\"}"
|
258
|
+
#"Map hzEdge: {0=>\"RISING\", 1=>\"FALLING\"}"
|
259
|
+
#"Map dcPol: {0=>\"POS\", 1=>\"NEG\"}"
|
260
|
+
#"Map contBeep: {0=>\"OFF\", 1=>\"ON\"}"
|
261
|
+
#"Map contBeepOS: {0=>\"SHORT\", 1=>\"OPEN\"}"
|
262
|
+
#"Map timeFmt: {0=>\"12\", 1=>\"24\"}"
|
263
|
+
#"Map numFmt: {0=>\"POINT\", 1=>\"COMMA\"}"
|
264
|
+
#"Map lang: {5=>\"JAPANESE\", 0=>\"ENGLISH\", 6=>\"CHINESE\", 1=>\"GERMAN\", 2=>\"FRENCH\", 3=>\"SPANISH\", 4=>\"ITALIAN\"}"
|
265
|
+
#"Map dateFmt: {0=>\"MM_DD\", 1=>\"DD_MM\"}"
|
266
|
+
#"Map recEventTh: {5=>\"5\", 0=>\"0\", 1=>\"1\", 25=>\"25\", 20=>\"20\", 15=>\"15\", 4=>\"4\", 10=>\"10\"}"
|
267
|
+
#"Map rsm: {0=>\"OFF\", 1=>\"ON\"}"
|
268
|
+
#"Map ablto: {0=>\"0\", 600=>\"600\", 1200=>\"1200\", 1800=>\"1800\", 300=>\"300\", 900=>\"900\", 1500=>\"1500\"}"
|
269
|
+
#"Map digits: {5=>\"5\", 4=>\"4\"}"
|
270
|
+
#"Map beeper: {0=>\"OFF\", 1=>\"ON\"}"
|
271
|
+
#"Map apoffto: {2700=>\"2700\", 0=>\"0\", 3600=>\"3600\", 900=>\"900\", 1500=>\"1500\", 2100=>\"2100\"}"
|
272
|
+
|
273
|
+
#"Map UNIT: {16=>\"PCT\", 5=>\"ADC\", 11=>\"Hz\", 0=>\"NONE\", 17=>\"dB\", 6=>\"AAC\", 12=>\"S\", 1=>\"VDC\", 18=>\"dBV\", 7=>\"AAC_PLUS_DC\", 13=>\"F\", 2=>\"VAC\", 19=>\"dBm\", 8=>\"A\", 14=>\"CEL\", 3=>\"VAC_PLUS_DC\", 20=>\"CREST_FACTOR\", 9=>\"OHM\", 15=>\"FAR\", 4=>\"V\", 10=>\"SIE\"}"
|
274
|
+
#"Map ATTRIBUTE: {5=>\"LO_OHMS\", 0=>\"NONE\", 6=>\"NEGATIVE_EDGE\", 1=>\"OPEN_CIRCUIT\", 7=>\"POSITIVE_EDGE\", 2=>\"SHORT_CIRCUIT\", 8=>\"HIGH_CURRENT\", 3=>\"GLITCH_CIRCUIT\", 4=>\"GOOD_DIODE\"}"
|
275
|
+
#"Map STATE: {5=>\"OL\", 0=>\"INACTIVE\", 6=>\"OL_MINUS\", 1=>\"INVALID\", 7=>\"OPEN_TC\", 2=>\"NORMAL\", 3=>\"BLANK\", 4=>\"DISCHARGE\"}"
|
276
|
+
#"Map autoRange: {0=>\"MANUAL\", 1=>\"AUTO\"}"
|
277
|
+
#"Map unit: {16=>\"PCT\", 5=>\"ADC\", 11=>\"Hz\", 0=>\"NONE\", 17=>\"dB\", 6=>\"AAC\", 12=>\"S\", 1=>\"VDC\", 18=>\"dBV\", 7=>\"AAC_PLUS_DC\", 13=>\"F\", 2=>\"VAC\", 19=>\"dBm\", 8=>\"A\", 14=>\"CEL\", 3=>\"VAC_PLUS_DC\", 20=>\"CREST_FACTOR\", 9=>\"OHM\", 15=>\"FAR\", 4=>\"V\", 10=>\"SIE\"}"
|
278
|
+
#"Map bolt: {0=>\"OFF\", 1=>\"ON\"}"
|
279
|
+
|
280
|
+
|
281
|
+
|
282
|
+
|
283
|
+
|
284
|
+
|
285
|
+
|
286
|
+
|
287
|
+
|
288
|
+
|
289
|
+
|
290
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
|
4
|
+
class MeasurementTest < Test::Unit::TestCase
|
5
|
+
include DMMTestHelper
|
6
|
+
|
7
|
+
def test_basic_getters
|
8
|
+
measurement = DmmUtil::Measurement.new(:name=>"This Was Saved", :prim_function => "VAC",
|
9
|
+
:ts=>Time.parse("Fri May 07 22:48:36.0166 2010"))
|
10
|
+
assert_equal "This Was Saved", measurement.name
|
11
|
+
assert_equal "VAC", measurement.prim_function
|
12
|
+
assert_equal Time.parse("Fri May 07 22:48:36.0166 2010"), measurement.ts
|
13
|
+
|
14
|
+
measurement = DmmUtil::Measurement.new(:prim_function => "VDC",
|
15
|
+
:readings => {
|
16
|
+
"PRIMARY" => {:ts=>Time.parse("Fri May 07 22:48:36.0166 2011")}
|
17
|
+
})
|
18
|
+
assert_equal Time.parse("Fri May 07 22:48:36.0166 2011"), measurement.ts
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_reading_names
|
22
|
+
measurement = DmmUtil::Measurement.new(:readings => {
|
23
|
+
"PRIMARY" => {},
|
24
|
+
"MAXIMUM" => {},
|
25
|
+
"MINIMUM" => {}
|
26
|
+
})
|
27
|
+
|
28
|
+
assert_sets_equal [:primary, :maximum, :minimum], measurement.reading_names
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_to_s
|
32
|
+
measurement = DmmUtil::Measurement.new(:readings => {
|
33
|
+
"PRIMARY" => {:value=>0.0362, :unit => "VAC",
|
34
|
+
:unit_multiplier=>0, :decimals => 4, :state=>"NORMAL"},
|
35
|
+
"SECONDARY" => {:value => 1.03e-06, :unit => "AAC",
|
36
|
+
:unit_multiplier => -6, :decimals => 2, :state=>"NORMAL"},
|
37
|
+
"LIVE" => {:value => 9.99999999e+37, :unit => "OHM",
|
38
|
+
:unit_multiplier => 6, :decimals => 1, :state=>"OL"}
|
39
|
+
})
|
40
|
+
|
41
|
+
expected = "0.0362 VAC (secondary: 1.03 uAAC, live: OL MOHM)"
|
42
|
+
assert_equal expected, measurement.to_s
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_to_s__live_is_same_as_primary
|
46
|
+
measurement = DmmUtil::Measurement.new(:readings => {
|
47
|
+
"PRIMARY" => {:value=>0.0362, :unit => "VAC",
|
48
|
+
:unit_multiplier=>0, :decimals => 4, :state=>"NORMAL"},
|
49
|
+
"LIVE" => {:value=>0.0362, :unit => "VAC",
|
50
|
+
:unit_multiplier=>0, :decimals => 4, :state=>"NORMAL"}
|
51
|
+
})
|
52
|
+
|
53
|
+
expected = "0.0362 VAC"
|
54
|
+
assert_equal expected, measurement.to_s
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
data/test/meter_test.rb
ADDED
@@ -0,0 +1,178 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
|
4
|
+
class MeterTest < Test::Unit::TestCase
|
5
|
+
include DMMTestHelper
|
6
|
+
|
7
|
+
def setup
|
8
|
+
@driver_mock = mock()
|
9
|
+
@meter = DmmUtil::Meter.new(@driver_mock)
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_recordings_each
|
13
|
+
@driver_mock.expects(:qsls).returns({:recording => 2})
|
14
|
+
@driver_mock.expects(:qrsi).with(0).returns({:name => "Recording1"})
|
15
|
+
@driver_mock.expects(:qrsi).with(1).returns({:name => "Recording2"})
|
16
|
+
|
17
|
+
res = []
|
18
|
+
@meter.recordings.each do |val|
|
19
|
+
res << val.name
|
20
|
+
end
|
21
|
+
|
22
|
+
assert_equal ["Recording1", "Recording2"], res
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_recordings_count
|
26
|
+
@driver_mock.expects(:qsls).returns({:recording => 3})
|
27
|
+
assert_equal 3, @meter.recordings.count
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_recordings_index
|
31
|
+
@driver_mock.expects(:qrsi).with(1).returns({:name => "Recording2"})
|
32
|
+
assert_equal "Recording2", @meter.recordings[1].name
|
33
|
+
end
|
34
|
+
|
35
|
+
def test_recordings_find_from_enumerable
|
36
|
+
@driver_mock.expects(:qsls).returns({:recording => 4})
|
37
|
+
@driver_mock.expects(:qrsi).with(0).returns({:name => "Recording1"})
|
38
|
+
@driver_mock.expects(:qrsi).with(1).returns({:name => "Recording2"})
|
39
|
+
|
40
|
+
rec = @meter.recordings.find{|r| r.name == "Recording2" }
|
41
|
+
assert_equal "Recording2", rec.name
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_saved_measurements_each
|
45
|
+
@driver_mock.expects(:qsls).returns({:measurement => 2})
|
46
|
+
@driver_mock.expects(:qsmr).with(0).returns({:name => "Measurement1"})
|
47
|
+
@driver_mock.expects(:qsmr).with(1).returns({:name => "Measurement2"})
|
48
|
+
|
49
|
+
res = []
|
50
|
+
@meter.saved_measurements.each do |val|
|
51
|
+
res << val.name
|
52
|
+
end
|
53
|
+
|
54
|
+
assert_equal ["Measurement1", "Measurement2"], res
|
55
|
+
end
|
56
|
+
|
57
|
+
def test_saved_measurements_count
|
58
|
+
@driver_mock.expects(:qsls).returns({:measurement => 4})
|
59
|
+
assert_equal 4, @meter.saved_measurements.count
|
60
|
+
end
|
61
|
+
|
62
|
+
def test_saved_measurements_index
|
63
|
+
@driver_mock.expects(:qsmr).with(1).returns({
|
64
|
+
:name => "Measurement2",
|
65
|
+
:readings => {"PRIMARY"=> {:value => 6.66}}
|
66
|
+
})
|
67
|
+
m = @meter.saved_measurements[1]
|
68
|
+
assert_equal "Measurement2", m.name
|
69
|
+
assert_equal 6.66, m.primary.value
|
70
|
+
end
|
71
|
+
|
72
|
+
def test_saved_measurements_find_from_enumerable
|
73
|
+
@driver_mock.expects(:qsls).returns({:measurement => 4})
|
74
|
+
@driver_mock.expects(:qsmr).with(0).returns({:name => "Measurement1"})
|
75
|
+
@driver_mock.expects(:qsmr).with(1).returns({:name => "Measurement2"})
|
76
|
+
|
77
|
+
m = @meter.saved_measurements.find{|m| m.name == "Measurement2" }
|
78
|
+
assert_equal "Measurement2", m.name
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_saved_min_max_each
|
82
|
+
@driver_mock.expects(:qsls).returns({:min_max => 2})
|
83
|
+
@driver_mock.expects(:qmmsi).with(0).returns({:name => "Measurement1"})
|
84
|
+
@driver_mock.expects(:qmmsi).with(1).returns({:name => "Measurement2"})
|
85
|
+
|
86
|
+
res = []
|
87
|
+
@meter.saved_min_max.each do |val|
|
88
|
+
res << val.name
|
89
|
+
end
|
90
|
+
|
91
|
+
assert_equal ["Measurement1", "Measurement2"], res
|
92
|
+
end
|
93
|
+
|
94
|
+
def test_saved_min_max_count
|
95
|
+
@driver_mock.expects(:qsls).returns({:min_max => 4})
|
96
|
+
assert_equal 4, @meter.saved_min_max.count
|
97
|
+
end
|
98
|
+
|
99
|
+
def test_saved_min_max_index
|
100
|
+
@driver_mock.expects(:qmmsi).with(1).returns({
|
101
|
+
:name => "Measurement2",
|
102
|
+
:readings => {"PRIMARY"=> {:value => 6.66}}
|
103
|
+
})
|
104
|
+
m = @meter.saved_min_max[1]
|
105
|
+
assert_equal "Measurement2", m.name
|
106
|
+
assert_equal 6.66, m.primary.value
|
107
|
+
end
|
108
|
+
|
109
|
+
def test_saved_min_max_find_from_enumerable
|
110
|
+
@driver_mock.expects(:qsls).returns({:min_max => 4})
|
111
|
+
@driver_mock.expects(:qmmsi).with(0).returns({:name => "Measurement1"})
|
112
|
+
@driver_mock.expects(:qmmsi).with(1).returns({:name => "Measurement2"})
|
113
|
+
|
114
|
+
m = @meter.saved_min_max.find{|m| m.name == "Measurement2" }
|
115
|
+
assert_equal "Measurement2", m.name
|
116
|
+
end
|
117
|
+
|
118
|
+
def test_saved_peak_each
|
119
|
+
@driver_mock.expects(:qsls).returns({:peak => 2})
|
120
|
+
@driver_mock.expects(:qpsi).with(0).returns({:name => "Measurement1"})
|
121
|
+
@driver_mock.expects(:qpsi).with(1).returns({:name => "Measurement2"})
|
122
|
+
|
123
|
+
res = []
|
124
|
+
@meter.saved_peak.each do |val|
|
125
|
+
res << val.name
|
126
|
+
end
|
127
|
+
|
128
|
+
assert_equal ["Measurement1", "Measurement2"], res
|
129
|
+
end
|
130
|
+
|
131
|
+
def test_saved_peak_count
|
132
|
+
@driver_mock.expects(:qsls).returns({:peak => 4})
|
133
|
+
assert_equal 4, @meter.saved_peak.count
|
134
|
+
end
|
135
|
+
|
136
|
+
def test_saved_peak_index
|
137
|
+
@driver_mock.expects(:qpsi).with(1).returns({
|
138
|
+
:name => "Measurement2",
|
139
|
+
:readings => {"PRIMARY"=> {:value => 6.66}}
|
140
|
+
})
|
141
|
+
m = @meter.saved_peak[1]
|
142
|
+
assert_equal "Measurement2", m.name
|
143
|
+
assert_equal 6.66, m.primary.value
|
144
|
+
end
|
145
|
+
|
146
|
+
def test_saved_peak_find_from_enumerable
|
147
|
+
@driver_mock.expects(:qsls).returns({:peak => 4})
|
148
|
+
@driver_mock.expects(:qpsi).with(0).returns({:name => "Measurement1"})
|
149
|
+
@driver_mock.expects(:qpsi).with(1).returns({:name => "Measurement2"})
|
150
|
+
|
151
|
+
m = @meter.saved_peak.find{|m| m.name == "Measurement2" }
|
152
|
+
assert_equal "Measurement2", m.name
|
153
|
+
end
|
154
|
+
|
155
|
+
def test_measure_now
|
156
|
+
@driver_mock.expects(:qddb).returns({
|
157
|
+
:prim_function => "V_DC",
|
158
|
+
:sec_function => "NONE",
|
159
|
+
:mode => ["MIN_MAX_AVG", "REL"],
|
160
|
+
:auto_range => "MANUAL",
|
161
|
+
:range_max => 5,
|
162
|
+
:readings => {
|
163
|
+
"PRIMARY"=> {:decimals=>4, :unit_multiplier=>0,
|
164
|
+
:state=>"NORMAL", :ts => Time.parse("Sat May 15 13:14:48.54199 2010"),
|
165
|
+
:un1 => 5, :attribute => "NONE", :value=>-1.5821, :unit=>"VDC"},
|
166
|
+
"MAXIMUM"=> {:decimals=>4, :unit_multiplier=>0,
|
167
|
+
:state=>"NORMAL", :ts => Time.parse("Sat May 15 13:14:35.26465 2010"),
|
168
|
+
:un1 => 5, :attribute => "NONE", :value=>-1.5352, :unit=>"VDC"}
|
169
|
+
}
|
170
|
+
})
|
171
|
+
|
172
|
+
m = @meter.measure_now
|
173
|
+
assert_equal "V_DC", m.prim_function
|
174
|
+
assert_equal Time.parse("Sat May 15 13:14:35.26465 2010"), m.maximum.ts
|
175
|
+
assert_equal -1.5821, m.primary.value
|
176
|
+
end
|
177
|
+
|
178
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
|
4
|
+
class ReadingTest < Test::Unit::TestCase
|
5
|
+
include DMMTestHelper
|
6
|
+
|
7
|
+
def test_basic_getters
|
8
|
+
reading = DmmUtil::Reading.new(:value=>0.0362, :unit => "VAC",
|
9
|
+
:ts=>Time.parse("Fri May 07 22:48:36.0166 2010"))
|
10
|
+
assert_equal 0.0362, reading.value
|
11
|
+
assert_equal "VAC", reading.unit
|
12
|
+
assert_equal Time.parse("Fri May 07 22:48:36.0166 2010"), reading.ts
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_to_s
|
16
|
+
reading = DmmUtil::Reading.new({})
|
17
|
+
reading.expects(:scaled_value).returns(["foo", "bar"])
|
18
|
+
assert_equal "foo bar", reading.to_s
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_scaled_value
|
22
|
+
reading = DmmUtil::Reading.new(:value=>0.0362, :unit => "VAC",
|
23
|
+
:unit_multiplier=>0, :decimals => 4, :state=>"NORMAL")
|
24
|
+
|
25
|
+
assert_equal ["0.0362", "VAC"], reading.scaled_value
|
26
|
+
|
27
|
+
reading = DmmUtil::Reading.new(:value => 1.1e-05, :unit => "VDC",
|
28
|
+
:unit_multiplier => -3, :decimals => 3, :state=>"NORMAL")
|
29
|
+
assert_equal ["0.011", "mVDC"], reading.scaled_value
|
30
|
+
|
31
|
+
reading = DmmUtil::Reading.new(:value => 1135700.0, :unit => "OHM",
|
32
|
+
:unit_multiplier => 6, :decimals => 4, :state=>"NORMAL")
|
33
|
+
assert_equal ["1.1357", "MOHM"], reading.scaled_value
|
34
|
+
|
35
|
+
reading = DmmUtil::Reading.new(:value => 1.03e-06, :unit => "AAC",
|
36
|
+
:unit_multiplier => -6, :decimals => 2, :state=>"NORMAL")
|
37
|
+
assert_equal ["1.03", "uAAC"], reading.scaled_value
|
38
|
+
|
39
|
+
reading = DmmUtil::Reading.new(:value => 9.99999999e+37, :unit => "OHM",
|
40
|
+
:unit_multiplier => 6, :decimals => 1, :state=>"OL")
|
41
|
+
assert_equal ["OL", "MOHM"], reading.scaled_value
|
42
|
+
|
43
|
+
reading = DmmUtil::Reading.new(:value=>9.99999999e+37, :unit=>"VDC",
|
44
|
+
:unit_multiplier=>-3, :decimals=>2, :state=>"OL_MINUS")
|
45
|
+
assert_equal ["-OL", "mVDC"], reading.scaled_value
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
|
4
|
+
class RecordingMeasurementTest < Test::Unit::TestCase
|
5
|
+
include DMMTestHelper
|
6
|
+
|
7
|
+
def test_basic_getters
|
8
|
+
measurement = DmmUtil::RecordingMeasurement.new(:start_ts=>Time.parse("Fri May 07 22:48:36.0166 2010"),
|
9
|
+
:end_ts=>Time.parse("Sat May 07 22:48:36.0166 2011")
|
10
|
+
)
|
11
|
+
|
12
|
+
assert_equal Time.parse("Fri May 07 22:48:36.0166 2010"), measurement.start_ts
|
13
|
+
assert_equal Time.parse("Sat May 07 22:48:36.0166 2011"), measurement.end_ts
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_reading_names
|
17
|
+
measurement = DmmUtil::RecordingMeasurement.new(:readings => {
|
18
|
+
"MAXIMUM" => {},
|
19
|
+
"MINIMUM" => {}
|
20
|
+
}, :readings2 => {"PRIMARY" => {}})
|
21
|
+
|
22
|
+
assert_sets_equal [:primary, :maximum, :minimum], measurement.reading_names
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_to_s
|
26
|
+
measurement = DmmUtil::RecordingMeasurement.new(:readings2 => {
|
27
|
+
"PRIMARY" => {:value=>0.0362, :unit => "VAC",
|
28
|
+
:unit_multiplier=>0, :decimals => 4, :state=>"NORMAL"},
|
29
|
+
},
|
30
|
+
:readings => {
|
31
|
+
"SECONDARY" => {:value => 1.03e-06, :unit => "AAC",
|
32
|
+
:unit_multiplier => -6, :decimals => 2, :state=>"NORMAL"},
|
33
|
+
"LIVE" => {:value => 9.99999999e+37, :unit => "OHM",
|
34
|
+
:unit_multiplier => 6, :decimals => 1, :state=>"OL"}
|
35
|
+
})
|
36
|
+
|
37
|
+
expected = "0.0362 VAC (secondary: 1.03 uAAC, live: OL MOHM)"
|
38
|
+
assert_equal expected, measurement.to_s
|
39
|
+
end
|
40
|
+
|
41
|
+
def test_to_s__live_is_same_as_primary
|
42
|
+
measurement = DmmUtil::RecordingMeasurement.new(:readings2 => {
|
43
|
+
"PRIMARY" => {:value=>0.0362, :unit => "VAC",
|
44
|
+
:unit_multiplier=>0, :decimals => 4, :state=>"NORMAL"},
|
45
|
+
},
|
46
|
+
:readings => {
|
47
|
+
"LIVE" => {:value=>0.0362, :unit => "VAC",
|
48
|
+
:unit_multiplier=>0, :decimals => 4, :state=>"NORMAL"}
|
49
|
+
})
|
50
|
+
|
51
|
+
expected = "0.0362 VAC"
|
52
|
+
assert_equal expected, measurement.to_s
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|