test/parser_test.rb in ardtweeno-0.2.5 vs test/parser_test.rb in ardtweeno-0.3.0
- old
+ new
@@ -1,147 +1,90 @@
+####################################################################################################
+# @author David Kirwan https://github.com/davidkirwan/ardtweeno
+# @description Ardtweeno serialparser subsystem test fixtures
+#
+# @date 05-06-2013
+####################################################################################################
+
require 'rubygems'
require 'test/unit'
require 'rack/test'
require 'ardtweeno'
require 'logger'
require 'json'
+require File.join(File.expand_path(File.dirname(__FILE__)), '/serialport_mock.rb')
ENV['RACK_ENV'] = 'test'
class ParserTest < Test::Unit::TestCase
include Rack::Test::Methods
- attr_accessor :parser, :mock, :modem, :validdata, :invaliddata, :validdata_invalidnode, :thenode,
- :themanager
+ attr_accessor :parser, :mock, :modem, :validdata, :invaliddata, :validdata_invalidnode
# Test suite fixtures
def setup
Ardtweeno.setup({:test=>true, :log=>Logger.new(STDOUT), :level=>Logger::DEBUG})
- @modem = fork do
- Signal.trap("SIGTERM") { `killall tty0tty`; exit }
- `test/tty0tty-1.1/pts/tty0tty`
+ before = Dir.glob("/dev/pts/*")
+
+ @modem = Thread.new do
+ `test/debug/tty0tty-1.1/pts/tty0tty`
end
sleep(1)
-
- one = "/dev/pts/2"
- two = "/dev/pts/3"
+ after = Dir.glob("/dev/pts/*")
+ after.reject! {|i| before.include? i}
+ puts after[0]
+ puts after[1]
+
+ theParser = after[0]
+ theMock = after[1]
+
+ options = {:log=>Logger.new(STDOUT), :level=>Logger::DEBUG, :testing=>true}
+
begin
- @mock = SerialDeviceMock.new(one, 9600, 100)
- @parser = Ardtweeno::SerialParser.new(two, 9600, 100)
+ @parser = Ardtweeno::SerialParser.new(theParser, 9600, 100, options)
+ @mock = SerialDeviceMock.new(theMock, 9600, 100)
rescue Exception => e
puts e.message
`killall tty0tty`
exit
end
@validdata = Ardtweeno::Packet.new(1, "abcvalidkey", [1,2,3])
@validdata_invalidnode = Ardtweeno::Packet.new(2, "abcinvalidkey", [1,2,3])
@invaliddata = {}
- @thenode = Ardtweeno::Node.new("validnode", "abcvalidkey", {:sensors=>["a", "b", "c"]})
- @themanager = Ardtweeno::NodeManager.new
- @themanager.addNode(thenode)
-
end
# tear down the test fixtures between each test
def teardown
+ `killall tty0tty`
@validdata = nil
@validdata_invalidnode = nil
@invaliddata = nil
- @themanager = nil
- @thenode = nil
@mock.close
@parser.close
- Process.kill("SIGTERM", @modem)
- Process.wait
+ @modem.kill
end
- # Test Ardtweeno::SerialParser#store can store data correctly
- def test_parser_store
+ # Test the Ardtweeno::SerialParser#postToAPI method to ensure it is posting the right data
+ def test_postToAPI
+ key = "abc"
+ testdata = '{"test":"abcdefg"}'
+ compareTo = {:key=>key, :payload=>testdata}
- # Valid data, with no NodeManager should raise Ardtweeno::ManagerNotDefined
- assert_raise Ardtweeno::ManagerNotDefined do
- @parser.store(@validdata)
-
- end
+ @mock.write(testdata)
+ result = @parser.listen(key)
- # Now add the manager to the SerialParser
- @parser.manager = @themanager
-
- # Valid data, with valid NodeManager, but invalid node should raise Ardtweeno::NodeNotAuthorised
- assert_raise Ardtweeno::NodeNotAuthorised do
- @parser.store(@validdata_invalidnode)
- end
-
- # Valid data, with valid NodeManager, and valid node should store successfully
- assert_equal(true, @parser.store(@validdata))
-
- # Invalid data, should raise Ardtweeno::InvalidData exception
- assert_raise Ardtweeno::InvalidData do
- @parser.store(@invaliddata)
- end
-
+ assert_equal(result, compareTo)
end
-
-
- # Check Ardtweeno::SerialParser#write operates correctly
- def test_parser_write
-
- #Valid output
- testData = {"seqNo" => 5, "data" => [23.5, 997.5, 65], "key" => "1234567890abcdef" }.to_json
- assert_equal(true, @parser.write(testData))
- val = @mock.read
- assert_equal('{"seqNo":5,"data":[23.5,997.5,65],"key":"1234567890abcdef"}', val)
-
- # Invalid Input
- testData2 = '{seqNo:5,"data":[23.5,997.5,65],"key":"1234567890abcdef"}'
- assert_equal(false, @parser.write(testData2))
-
- end
-
-
- # Check Ardtweeno::SerialParser#read can read data on serial device correctly
- def test_parser_read
-
- # Valid input
- testData = {"seqNo" => 5, "data" => [23.5, 997.5, 65], "key" => "1234567890abcdef" }.to_json
- @mock.write(testData)
- val = @parser.read
- assert_equal('{"seqNo":5,"data":[23.5,997.5,65],"key":"1234567890abcdef"}', val)
-
- # Invalid Input
- testData2 = '{seqNo:5,"data":[23.5,997.5,65],"key":"1234567890abcdef"}'
- @mock.write(testData2)
- val2 = @parser.read
- assert_equal('{}', val2)
-
- end
-
-
- # Check Ardtweeno::SerialParser#valid_json? can validate JSON data correctly
- def test_parser_validate_input
- valid = '{"seqNo":5,"data":[23.5,997.5,65],"key":"1234567890abcdef"}'
- assert_equal(true, Ardtweeno::SerialParser.valid_json?(valid))
-
- invalid = '{seqNo:5,"data":[23.5,997.5,65],"key":"1234567890abcdef"}'
- assert_equal(false, Ardtweeno::SerialParser.valid_json?(invalid))
- end
-
- # Check Ardtweeno::SerialParser#nextSeq returns unique values each call
- def test_parser_next_seq
- 20.times do |i|
- assert_equal(i, @parser.nextSeq)
- end
- end
end