Skip to content

Commit

Permalink
Also allow no space before the '=' #153
Browse files Browse the repository at this point in the history
  • Loading branch information
jmthomas committed Jun 10, 2015
1 parent b33a8cd commit 63f2443
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 8 deletions.
15 changes: 11 additions & 4 deletions lib/cosmos/script/extract.rb
Expand Up @@ -86,13 +86,20 @@ def extract_fields_from_tlm_text(text)
end

def extract_fields_from_set_tlm_text(text)
split_string = text.split
raise "ERROR: Set Telemetry Item must be specified as 'TargetName PacketName ItemName = Value' : #{text}" if split_string[3] and split_string[3][0] != '='
error_msg = "ERROR: Set Telemetry Item must be specified as 'TargetName PacketName ItemName = Value' : #{text}"
# We have to handle these cases:
# set_tlm("TGT PKT ITEM='new item'")
# set_tlm("TGT PKT ITEM = 'new item'")
# set_tlm("TGT PKT ITEM= 'new item'")
# set_tlm("TGT PKT ITEM ='new item'")
split_string = text.split('=')
raise error_msg if split_string.length != 2 || split_string[1].strip.empty?
split_string = split_string[0].strip.split << split_string[1].strip
raise error_msg if split_string.length != 4 # Ensure tgt,pkt,item,value
target_name = split_string[0]
packet_name = split_string[1]
item_name = split_string[2]
index = text.index('=')
value = text[(index + 1)..-1].strip.convert_to_value
value = split_string[3].strip.convert_to_value
value = value.remove_quotes if String === value
return [target_name, packet_name, item_name, value]
end
Expand Down
2 changes: 1 addition & 1 deletion spec/packets/telemetry_spec.rb
Expand Up @@ -457,7 +457,7 @@ module Cosmos
end
end

describe "set_tlm" do
describe "set_value" do
it "complains about non-existant targets" do
expect { @tlm.set_value("TGTX","PKT1","ITEM1", 1) }.to raise_error(RuntimeError, "Telemetry target 'TGTX' does not exist")
end
Expand Down
24 changes: 21 additions & 3 deletions spec/script/telemetry_spec.rb
Expand Up @@ -52,24 +52,42 @@ module Cosmos
sleep(0.1)
end

describe "tlm, tlm_raw, tlm_formatted, tlm_with_units, tlm_variable, set_tlm, set_tlm_raw" do
describe "tlm, tlm_raw, tlm_formatted, tlm_with_units, tlm_variable" do
it "passes through to the cmd_tlm_server" do
expect {
expect(tlm("INST HEALTH_STATUS TEMP1")).to eql -100.0
expect(tlm_raw("INST HEALTH_STATUS TEMP1")).to eql 0
expect(tlm_formatted("INST HEALTH_STATUS TEMP1")).to eql "-100.000"
expect(tlm_with_units("INST HEALTH_STATUS TEMP1")).to eql "-100.000 C"
expect(tlm_variable("INST HEALTH_STATUS TEMP1", :RAW)).to eql 0
}.to_not raise_error
end
end

describe "set_tlm, set_tlm_raw" do
it "passes through to the cmd_tlm_server" do
expect {
set_tlm("INST HEALTH_STATUS TEMP1 = 1")
set_tlm("INST HEALTH_STATUS ASCIICMD = 'Hi'")
set_tlm("INST HEALTH_STATUS ASCIICMD ='Hello'")
set_tlm("INST HEALTH_STATUS ASCIICMD = 'Hello World'")
set_tlm("INST HEALTH_STATUS ASCIICMD= 'Hello World'")
set_tlm("INST HEALTH_STATUS ASCIICMD='Hello World'")
set_tlm_raw("INST HEALTH_STATUS TEMP1 = 0")
set_tlm_raw("INST HEALTH_STATUS ASCIICMD = 'Hi'")
set_tlm_raw("INST HEALTH_STATUS ASCIICMD ='Hello'")
set_tlm_raw("INST HEALTH_STATUS ASCIICMD = 'Hello World'")
set_tlm_raw("INST HEALTH_STATUS ASCIICMD= 'Hello World'")
set_tlm_raw("INST HEALTH_STATUS ASCIICMD='Hello World'")
}.to_not raise_error
end

it "raises with bad syntax" do
error_msg = "ERROR: Set Telemetry Item must be specified as 'TargetName PacketName ItemName = Value'"
expect { set_tlm("INST HEALTH_STATUS = 5") }.to raise_error(/#{error_msg}/)
expect { set_tlm("INST HEALTH_STATUS TEMP1") }.to raise_error(/#{error_msg}/)
expect { set_tlm("INST HEALTH_STATUS TEMP1 = ") }.to raise_error(/#{error_msg}/)
expect { set_tlm("INST HEALTH_STATUS ASCIICMD = 'hi") }.to raise_error(/#{error_msg}/)
expect { set_tlm('INST HEALTH_STATUS ASCIICMD = "hi') }.to raise_error(/#{error_msg}/)
end
end

describe "get_tlm_packet" do
Expand Down

0 comments on commit 63f2443

Please sign in to comment.