rsmp_schemer 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3d922949f9fd92682d6f3af16ddebbb63c339724b397ced40ddc3406493f3853
4
- data.tar.gz: 92185faeffff9f0c2be6178cf784baf171e8bf9897a2e6a89407cceb25612133
3
+ metadata.gz: a5ded20247c8a17c4c9408c1936de71fe1782041241280ea9e0dcc352e67649f
4
+ data.tar.gz: 85829fef328b91fa96068d01f6b8410370ec34393a2cf631f67f37c2901c9f8d
5
5
  SHA512:
6
- metadata.gz: 7dfdee34f17658596adee8541f650e6fa018f3aa1571c50c019d0944c100465e775baed876bf9d855b1830e5198f7cf2cc0cec810b73113b53e215ada168230c
7
- data.tar.gz: 9278d033f5ed1b1f7211b8e5392bf8c1b2ed2e364abb0b1f39715adba339c9b3b6ac48b1dc342783b0523080e0e2a1b40d3e959492e1a49b14e2ec9611baf7db
6
+ metadata.gz: e670455f64901cb3cff4b9445309f57f143865dbd67a08f628f0d541aa0b1f934914829d7d85f2f4e5c19a8db8968599ca29005c8ab1f7a8522988b4846b3863
7
+ data.tar.gz: 1fcabd99fd4dcff846fa372e1f6c928a1edeacfc06a0c25014a676e7c5369052f0b502fc21b91aa6ad504981052f080b053b8c78726bc48ab912e86e701eb25f
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rsmp_schemer (0.3.1)
4
+ rsmp_schemer (0.3.2)
5
5
  json_schemer (~> 0.2.18)
6
6
 
7
7
  GEM
@@ -2,6 +2,6 @@
2
2
 
3
3
  module RSMP
4
4
  module Schemer
5
- VERSION = "0.3.1"
5
+ VERSION = "0.3.2"
6
6
  end
7
7
  end
@@ -26,7 +26,7 @@
26
26
  "s" : {
27
27
  "description" : "Dynamic bands.\nEach dynamic band are written as pp-dd-ee where:\npp=Time plan\ndd=Dynamic band number (from 1-10)\nee=Extension in seconds in this band\n\nEach dynamic band is separated with a comma.\n\nE.g.\npp-dd-ee,pp-dd-ee",
28
28
  "type" : "string",
29
- "pattern" : "^(\\d{1,2}\\-\\d{1,2}-\\d{1,2})(?:,(\\d{1,2}\\-\\d{1,2}-\\d{1,2}))*$"
29
+ "pattern" : "(^$)|(^(?<item>(\\d{1,2})\\-\\d{1,2}-\\d{1,2})(,\\g<item>)*$)"
30
30
  }
31
31
  }
32
32
  }
@@ -0,0 +1,96 @@
1
+ RSpec.describe "Traffic Light Controller RSMP SXL Schema validation" do
2
+ let(:message) {{
3
+ "mType" => "rSMsg",
4
+ "mId" => "4173c2c8-a933-43cb-9425-66d4613731ed",
5
+ "type" => "StatusResponse",
6
+ "cId" => "O+14439=481WA001",
7
+ "sTs" => "2015-06-08T09:15:18.266Z",
8
+ "sS" => [
9
+ { "sCI" => "S0023", "n" => "status", "s" => "", "q" => "recent" }
10
+ ]
11
+ }}
12
+
13
+ it 'accepts empty list' do
14
+ message["sS"][0]['s'] = ''
15
+ expect( validate(message) ).to be_nil
16
+ end
17
+ it 'accepts one digit' do
18
+ message["sS"][0]['s'] = '1-1-0'
19
+ expect( validate(message) ).to be_nil
20
+ end
21
+
22
+ it 'accepts two digits' do
23
+ message["sS"][0]['s'] = '01-01-20'
24
+ expect( validate(message) ).to be_nil
25
+ end
26
+
27
+ it 'rejects three digits or more' do
28
+ message["sS"][0]['s'] = '01-01-100'
29
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
30
+
31
+ message["sS"][0]['s'] = '100-01-01'
32
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
33
+ end
34
+
35
+ it 'accepts comma-separated items' do
36
+ message["sS"][0]['s'] = '1-1-0,1-2-0'
37
+ expect( validate(message) ).to be_nil
38
+
39
+ message["sS"][0]['s'] = '1-1-0,1-2-0,2-4-5'
40
+ expect( validate(message) ).to be_nil
41
+ end
42
+
43
+ it 'rejects comma-separated lists with spaces' do
44
+ message["sS"][0]['s'] = '1-1-0, 1-2-0'
45
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
46
+
47
+ message["sS"][0]['s'] = '1-1-0 ,1-2-0'
48
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
49
+ end
50
+
51
+ it 'rejects comma-separated lists with trailing comma' do
52
+ message["sS"][0]['s'] = '1-1-0,'
53
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
54
+ end
55
+
56
+ it 'rejects comma-separated lists with leading comma' do
57
+ message["sS"][0]['s'] = ',1-1-0'
58
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
59
+ end
60
+
61
+ it 'rejects comma-separated lists with empty items' do
62
+ message["sS"][0]['s'] = '1-1-0,,1-2-0'
63
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
64
+ end
65
+
66
+ it 'rejects negatives' do
67
+ message["sS"][0]['s'] = '-1-2-3'
68
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
69
+
70
+ message["sS"][0]['s'] = '1--2-3'
71
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
72
+
73
+ message["sS"][0]['s'] = '1-2--3'
74
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
75
+ end
76
+
77
+ it 'rejects floats' do
78
+ message["sS"][0]['s'] = '.1-2-3'
79
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
80
+
81
+ message["sS"][0]['s'] = '1-.2-3'
82
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
83
+
84
+ message["sS"][0]['s'] = '1-2-.3'
85
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
86
+
87
+ message["sS"][0]['s'] = '1.-2-3'
88
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
89
+
90
+ message["sS"][0]['s'] = '1-2.-3'
91
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
92
+
93
+ message["sS"][0]['s'] = '1-2-3.'
94
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
95
+ end
96
+ end
@@ -26,7 +26,7 @@
26
26
  "s" : {
27
27
  "description" : "Dynamic bands.\nEach dynamic band are written as pp-dd-ee where:\npp=Time plan\ndd=Dynamic band number (from 1-10)\nee=Extension in seconds in this band\n\nEach dynamic band is separated with a comma.\n\nE.g.\npp-dd-ee,pp-dd-ee",
28
28
  "type" : "string",
29
- "pattern" : "^(\\d{1,2}\\-\\d{1,2}-\\d{1,2})(?:,(\\d{1,2}\\-\\d{1,2}-\\d{1,2}))*$"
29
+ "pattern" : "(^$)|(^(?<item>(\\d{1,2})\\-\\d{1,2}-\\d{1,2})(,\\g<item>)*$)"
30
30
  }
31
31
  }
32
32
  }
@@ -0,0 +1,96 @@
1
+ RSpec.describe "Traffic Light Controller RSMP SXL Schema validation" do
2
+ let(:message) {{
3
+ "mType" => "rSMsg",
4
+ "mId" => "4173c2c8-a933-43cb-9425-66d4613731ed",
5
+ "type" => "StatusResponse",
6
+ "cId" => "O+14439=481WA001",
7
+ "sTs" => "2015-06-08T09:15:18.266Z",
8
+ "sS" => [
9
+ { "sCI" => "S0023", "n" => "status", "s" => "", "q" => "recent" }
10
+ ]
11
+ }}
12
+
13
+ it 'accepts empty list' do
14
+ message["sS"][0]['s'] = ''
15
+ expect( validate(message) ).to be_nil
16
+ end
17
+ it 'accepts one digit' do
18
+ message["sS"][0]['s'] = '1-1-0'
19
+ expect( validate(message) ).to be_nil
20
+ end
21
+
22
+ it 'accepts two digits' do
23
+ message["sS"][0]['s'] = '01-01-20'
24
+ expect( validate(message) ).to be_nil
25
+ end
26
+
27
+ it 'rejects three digits or more' do
28
+ message["sS"][0]['s'] = '01-01-100'
29
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
30
+
31
+ message["sS"][0]['s'] = '100-01-01'
32
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
33
+ end
34
+
35
+ it 'accepts comma-separated items' do
36
+ message["sS"][0]['s'] = '1-1-0,1-2-0'
37
+ expect( validate(message) ).to be_nil
38
+
39
+ message["sS"][0]['s'] = '1-1-0,1-2-0,2-4-5'
40
+ expect( validate(message) ).to be_nil
41
+ end
42
+
43
+ it 'rejects comma-separated lists with spaces' do
44
+ message["sS"][0]['s'] = '1-1-0, 1-2-0'
45
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
46
+
47
+ message["sS"][0]['s'] = '1-1-0 ,1-2-0'
48
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
49
+ end
50
+
51
+ it 'rejects comma-separated lists with trailing comma' do
52
+ message["sS"][0]['s'] = '1-1-0,'
53
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
54
+ end
55
+
56
+ it 'rejects comma-separated lists with leading comma' do
57
+ message["sS"][0]['s'] = ',1-1-0'
58
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
59
+ end
60
+
61
+ it 'rejects comma-separated lists with empty items' do
62
+ message["sS"][0]['s'] = '1-1-0,,1-2-0'
63
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
64
+ end
65
+
66
+ it 'rejects negatives' do
67
+ message["sS"][0]['s'] = '-1-2-3'
68
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
69
+
70
+ message["sS"][0]['s'] = '1--2-3'
71
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
72
+
73
+ message["sS"][0]['s'] = '1-2--3'
74
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
75
+ end
76
+
77
+ it 'rejects floats' do
78
+ message["sS"][0]['s'] = '.1-2-3'
79
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
80
+
81
+ message["sS"][0]['s'] = '1-.2-3'
82
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
83
+
84
+ message["sS"][0]['s'] = '1-2-.3'
85
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
86
+
87
+ message["sS"][0]['s'] = '1.-2-3'
88
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
89
+
90
+ message["sS"][0]['s'] = '1-2.-3'
91
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
92
+
93
+ message["sS"][0]['s'] = '1-2-3.'
94
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
95
+ end
96
+ end
@@ -26,7 +26,7 @@
26
26
  "s" : {
27
27
  "description" : "Dynamic bands.\nEach dynamic band are written as pp-dd-ee where:\npp=Time plan\ndd=Dynamic band number (from 1-10)\nee=Extension in seconds in this band\n\nEach dynamic band is separated with a comma.\n\nE.g.\npp-dd-ee,pp-dd-ee",
28
28
  "type" : "string",
29
- "pattern" : "^(\\d{1,2}\\-\\d{1,2}-\\d{1,2})(?:,(\\d{1,2}\\-\\d{1,2}-\\d{1,2}))*$"
29
+ "pattern" : "(^$)|(^(?<item>(\\d{1,2})\\-\\d{1,2}-\\d{1,2})(,\\g<item>)*$)"
30
30
  }
31
31
  }
32
32
  }
@@ -0,0 +1,96 @@
1
+ RSpec.describe "Traffic Light Controller RSMP SXL Schema validation" do
2
+ let(:message) {{
3
+ "mType" => "rSMsg",
4
+ "mId" => "4173c2c8-a933-43cb-9425-66d4613731ed",
5
+ "type" => "StatusResponse",
6
+ "cId" => "O+14439=481WA001",
7
+ "sTs" => "2015-06-08T09:15:18.266Z",
8
+ "sS" => [
9
+ { "sCI" => "S0023", "n" => "status", "s" => "", "q" => "recent" }
10
+ ]
11
+ }}
12
+
13
+ it 'accepts empty list' do
14
+ message["sS"][0]['s'] = ''
15
+ expect( validate(message) ).to be_nil
16
+ end
17
+ it 'accepts one digit' do
18
+ message["sS"][0]['s'] = '1-1-0'
19
+ expect( validate(message) ).to be_nil
20
+ end
21
+
22
+ it 'accepts two digits' do
23
+ message["sS"][0]['s'] = '01-01-20'
24
+ expect( validate(message) ).to be_nil
25
+ end
26
+
27
+ it 'rejects three digits or more' do
28
+ message["sS"][0]['s'] = '01-01-100'
29
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
30
+
31
+ message["sS"][0]['s'] = '100-01-01'
32
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
33
+ end
34
+
35
+ it 'accepts comma-separated items' do
36
+ message["sS"][0]['s'] = '1-1-0,1-2-0'
37
+ expect( validate(message) ).to be_nil
38
+
39
+ message["sS"][0]['s'] = '1-1-0,1-2-0,2-4-5'
40
+ expect( validate(message) ).to be_nil
41
+ end
42
+
43
+ it 'rejects comma-separated lists with spaces' do
44
+ message["sS"][0]['s'] = '1-1-0, 1-2-0'
45
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
46
+
47
+ message["sS"][0]['s'] = '1-1-0 ,1-2-0'
48
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
49
+ end
50
+
51
+ it 'rejects comma-separated lists with trailing comma' do
52
+ message["sS"][0]['s'] = '1-1-0,'
53
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
54
+ end
55
+
56
+ it 'rejects comma-separated lists with leading comma' do
57
+ message["sS"][0]['s'] = ',1-1-0'
58
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
59
+ end
60
+
61
+ it 'rejects comma-separated lists with empty items' do
62
+ message["sS"][0]['s'] = '1-1-0,,1-2-0'
63
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
64
+ end
65
+
66
+ it 'rejects negatives' do
67
+ message["sS"][0]['s'] = '-1-2-3'
68
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
69
+
70
+ message["sS"][0]['s'] = '1--2-3'
71
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
72
+
73
+ message["sS"][0]['s'] = '1-2--3'
74
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
75
+ end
76
+
77
+ it 'rejects floats' do
78
+ message["sS"][0]['s'] = '.1-2-3'
79
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
80
+
81
+ message["sS"][0]['s'] = '1-.2-3'
82
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
83
+
84
+ message["sS"][0]['s'] = '1-2-.3'
85
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
86
+
87
+ message["sS"][0]['s'] = '1.-2-3'
88
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
89
+
90
+ message["sS"][0]['s'] = '1-2.-3'
91
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
92
+
93
+ message["sS"][0]['s'] = '1-2-3.'
94
+ expect( validate(message) ).to eq([["/sS/0/s", "pattern"]])
95
+ end
96
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rsmp_schemer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Emil Tin
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-06-21 00:00:00.000000000 Z
11
+ date: 2021-11-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: json_schemer
@@ -501,6 +501,7 @@ files:
501
501
  - schemas/tlc_1.0.13/spec/spec_helper.rb
502
502
  - schemas/tlc_1.0.13/spec/tlc/M0001_spec.rb
503
503
  - schemas/tlc_1.0.13/spec/tlc/S0007_spec.rb
504
+ - schemas/tlc_1.0.13/spec/tlc/S0023_spec.rb
504
505
  - schemas/tlc_1.0.14/.gitignore
505
506
  - schemas/tlc_1.0.14/.rspec
506
507
  - schemas/tlc_1.0.14/Gemfile
@@ -593,6 +594,7 @@ files:
593
594
  - schemas/tlc_1.0.14/spec/spec_helper.rb
594
595
  - schemas/tlc_1.0.14/spec/tlc/M0001_spec.rb
595
596
  - schemas/tlc_1.0.14/spec/tlc/S0007_spec.rb
597
+ - schemas/tlc_1.0.14/spec/tlc/S0023_spec.rb
596
598
  - schemas/tlc_1.0.15/.gitignore
597
599
  - schemas/tlc_1.0.15/.rspec
598
600
  - schemas/tlc_1.0.15/Gemfile
@@ -692,6 +694,7 @@ files:
692
694
  - schemas/tlc_1.0.15/spec/spec_helper.rb
693
695
  - schemas/tlc_1.0.15/spec/tlc/M0001_spec.rb
694
696
  - schemas/tlc_1.0.15/spec/tlc/S0007_spec.rb
697
+ - schemas/tlc_1.0.15/spec/tlc/S0023_spec.rb
695
698
  - schemas/tlc_1.0.7/.gitignore
696
699
  - schemas/tlc_1.0.7/.rspec
697
700
  - schemas/tlc_1.0.7/Gemfile
@@ -936,7 +939,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
936
939
  - !ruby/object:Gem::Version
937
940
  version: '0'
938
941
  requirements: []
939
- rubygems_version: 3.2.3
942
+ rubygems_version: 3.2.15
940
943
  signing_key:
941
944
  specification_version: 4
942
945
  summary: Validate RSMP message against RSMP JSON Schema.