nstrct 0.1.0 → 0.1.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: e2087a496c196012c63735b96ff04f1ab6d51c79
4
- data.tar.gz: 669624331f0b1a78b122e926ddc1d703ddaa614f
3
+ metadata.gz: db1a1c508992190b0c01e034e988e32cf4d7ce02
4
+ data.tar.gz: 01b7649e0a7dec1ab8c6dcd94181ed2372f8165f
5
5
  SHA512:
6
- metadata.gz: ff6574cb663aca80b4bee655b3e7a93a9a60be152b8213636402c39b33ccbcc3e14c8116a5dab061f820167f6a450d28c40ed4c683ff5a8ecf4096ecef57fd1f
7
- data.tar.gz: 1929493e6b70b29c39d86bdc1e75e91758f123d445e634f462f7ab7c9b44ab5ae1cdc93b811e569a073cd6ee47a1910af4e093d45a72586fd9c070c0f6da99b3
6
+ metadata.gz: b26b325ab0a6dbeaaf3ef10134199c2c763a62c22d9719d610423183956d324f688dd04c27889d7d88bf6fe578c9ebf08501c420768ce62e21efd8ce524b768e
7
+ data.tar.gz: bdeac5be225937e21a8ca9142cf73ab9da2b2036f91fa77d5019930757c52042fdf39cae53b86414c3d080ed6070233d9c66a1b66a56f5cec5ce556d4efd2527
data/.gitignore CHANGED
@@ -1 +1,2 @@
1
1
  .DS_Store
2
+ *.gem
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- nstrct (0.0.3)
4
+ nstrct (0.1.0)
5
5
  digest-crc
6
6
 
7
7
  GEM
@@ -4,6 +4,11 @@ module Nstrct
4
4
 
5
5
  class Frame
6
6
 
7
+ class StartOfFrameInvalid < StandardError; end
8
+ class EndOfFrameInvalid < StandardError; end
9
+ class NoFrameAvailable < StandardError; end
10
+ class ChecksumInvalid < StandardError; end
11
+
7
12
  FRAME_OVERHEAD = 8
8
13
  FRAME_START = 0x55
9
14
  FRAME_END = 0xAA
@@ -14,11 +19,11 @@ module Nstrct
14
19
 
15
20
  def self.available? buffer
16
21
  if buffer.size >= 1
17
- raise 'start of frame invalid' unless buffer.slice(0).unpack('C')[0] == FRAME_START
22
+ raise StartOfFrameInvalid unless buffer.slice(0).unpack('C')[0] == FRAME_START
18
23
  if buffer.size >= 3
19
24
  payload_length = buffer.slice(1..2).unpack('S>')[0]
20
25
  if buffer.size >= (payload_length+FRAME_OVERHEAD)
21
- raise 'end of frame invalid' unless buffer.slice(payload_length+FRAME_OVERHEAD-1).unpack('C')[0] == FRAME_END
26
+ raise EndOfFrameInvalid unless buffer.slice(payload_length+FRAME_OVERHEAD-1).unpack('C')[0] == FRAME_END
22
27
  return true
23
28
  end
24
29
  end
@@ -27,13 +32,13 @@ module Nstrct
27
32
  end
28
33
 
29
34
  def self.parse buffer
30
- raise 'no frame available' unless self.available?(buffer)
35
+ raise NoFrameAvailable unless self.available?(buffer)
31
36
  buffer.slice!(0) # remove start of frame
32
37
  length = buffer.slice!(0..1).unpack('S>')[0]
33
38
  payload = buffer.slice!(0..length-1)
34
39
  checksum = buffer.slice!(0..3).unpack('L>')[0]
35
40
  buffer.slice!(0) # remove end of frame
36
- raise 'checksum invalid' unless checksum == crc32(payload)
41
+ raise ChecksumInvalid unless checksum == crc32(payload)
37
42
  self.new(Instruction.parse(payload))
38
43
  end
39
44
 
@@ -1,3 +1,3 @@
1
1
  module Nstrct
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.1'
3
3
  end
@@ -24,4 +24,31 @@ describe Nstrct::Frame do
24
24
  frame1.inspect.should == frame2.inspect
25
25
  end
26
26
 
27
+ describe 'errors' do
28
+
29
+ let(:frame) { Nstrct::Frame.new(Nstrct::Instruction.new(132, [])) }
30
+
31
+ it 'should raise start of frame invalid' do
32
+ expect{ Nstrct::Frame.parse('hello') }.to raise_error Nstrct::Frame::StartOfFrameInvalid
33
+ end
34
+
35
+ it 'should raise end of frame invalid' do
36
+ data = frame.pack
37
+ data[-1] = 'B'
38
+ expect{ Nstrct::Frame.parse(data) }.to raise_error Nstrct::Frame::EndOfFrameInvalid
39
+ end
40
+
41
+ it 'should raise no frame available' do
42
+ data = frame.pack.slice(-1..-4)
43
+ expect{ Nstrct::Frame.parse(data) }.to raise_error Nstrct::Frame::NoFrameAvailable
44
+ end
45
+
46
+ it 'should raise checksum invalid' do
47
+ data = frame.pack
48
+ data[-2] = 'C'
49
+ expect{ Nstrct::Frame.parse(data) }.to raise_error Nstrct::Frame::ChecksumInvalid
50
+ end
51
+
52
+ end
53
+
27
54
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: nstrct
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joël Gähwiler
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-13 00:00:00.000000000 Z
11
+ date: 2014-01-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: digest-crc