rsmp_schemer 0.3.1 → 0.3.2

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
  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.