sdp 0.2.8 → 0.2.9

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.
Files changed (110) hide show
  1. data/ChangeLog.rdoc +13 -0
  2. data/LICENSE.rdoc +1 -1
  3. data/README.rdoc +31 -11
  4. data/Rakefile +3 -10
  5. data/lib/sdp/description.rb +132 -16
  6. data/lib/sdp/parser.rb +4 -4
  7. data/lib/sdp/version.rb +1 -1
  8. data/sdp.gemspec +15 -15
  9. data/spec/integration/builds_descriptions_spec.rb +39 -0
  10. data/spec/integration/coverage/assets/0.7.1/application.css +1110 -0
  11. data/spec/integration/coverage/assets/0.7.1/application.js +626 -0
  12. data/spec/integration/coverage/assets/0.7.1/fancybox/blank.gif +0 -0
  13. data/spec/integration/coverage/assets/0.7.1/fancybox/fancy_close.png +0 -0
  14. data/spec/integration/coverage/assets/0.7.1/fancybox/fancy_loading.png +0 -0
  15. data/spec/integration/coverage/assets/0.7.1/fancybox/fancy_nav_left.png +0 -0
  16. data/spec/integration/coverage/assets/0.7.1/fancybox/fancy_nav_right.png +0 -0
  17. data/spec/integration/coverage/assets/0.7.1/fancybox/fancy_shadow_e.png +0 -0
  18. data/spec/integration/coverage/assets/0.7.1/fancybox/fancy_shadow_n.png +0 -0
  19. data/spec/integration/coverage/assets/0.7.1/fancybox/fancy_shadow_ne.png +0 -0
  20. data/spec/integration/coverage/assets/0.7.1/fancybox/fancy_shadow_nw.png +0 -0
  21. data/spec/integration/coverage/assets/0.7.1/fancybox/fancy_shadow_s.png +0 -0
  22. data/spec/integration/coverage/assets/0.7.1/fancybox/fancy_shadow_se.png +0 -0
  23. data/spec/integration/coverage/assets/0.7.1/fancybox/fancy_shadow_sw.png +0 -0
  24. data/spec/integration/coverage/assets/0.7.1/fancybox/fancy_shadow_w.png +0 -0
  25. data/spec/integration/coverage/assets/0.7.1/fancybox/fancy_title_left.png +0 -0
  26. data/spec/integration/coverage/assets/0.7.1/fancybox/fancy_title_main.png +0 -0
  27. data/spec/integration/coverage/assets/0.7.1/fancybox/fancy_title_over.png +0 -0
  28. data/spec/integration/coverage/assets/0.7.1/fancybox/fancy_title_right.png +0 -0
  29. data/spec/integration/coverage/assets/0.7.1/fancybox/fancybox-x.png +0 -0
  30. data/spec/integration/coverage/assets/0.7.1/fancybox/fancybox-y.png +0 -0
  31. data/spec/integration/coverage/assets/0.7.1/fancybox/fancybox.png +0 -0
  32. data/spec/integration/coverage/assets/0.7.1/favicon_green.png +0 -0
  33. data/spec/integration/coverage/assets/0.7.1/favicon_red.png +0 -0
  34. data/spec/integration/coverage/assets/0.7.1/favicon_yellow.png +0 -0
  35. data/spec/integration/coverage/assets/0.7.1/loading.gif +0 -0
  36. data/spec/integration/coverage/assets/0.7.1/magnify.png +0 -0
  37. data/spec/integration/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  38. data/spec/integration/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  39. data/spec/integration/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  40. data/spec/integration/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  41. data/spec/integration/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  42. data/spec/integration/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  43. data/spec/integration/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  44. data/spec/integration/coverage/assets/0.7.1/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  45. data/spec/integration/coverage/assets/0.7.1/smoothness/images/ui-icons_222222_256x240.png +0 -0
  46. data/spec/integration/coverage/assets/0.7.1/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  47. data/spec/integration/coverage/assets/0.7.1/smoothness/images/ui-icons_454545_256x240.png +0 -0
  48. data/spec/integration/coverage/assets/0.7.1/smoothness/images/ui-icons_888888_256x240.png +0 -0
  49. data/spec/integration/coverage/assets/0.7.1/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  50. data/spec/integration/coverage/index.html +72 -0
  51. data/spec/integration/parses_descriptions_spec.rb +129 -0
  52. data/spec/spec_helper.rb +2 -1
  53. data/spec/support/parser_matcher.rb +33 -0
  54. data/{features → spec}/support/sdp_file.txt +0 -0
  55. data/spec/support/test_descriptions.rb +137 -0
  56. data/spec/unit/sdp/coverage/assets/0.7.1/application.css +1110 -0
  57. data/spec/unit/sdp/coverage/assets/0.7.1/application.js +626 -0
  58. data/spec/unit/sdp/coverage/assets/0.7.1/fancybox/blank.gif +0 -0
  59. data/spec/unit/sdp/coverage/assets/0.7.1/fancybox/fancy_close.png +0 -0
  60. data/spec/unit/sdp/coverage/assets/0.7.1/fancybox/fancy_loading.png +0 -0
  61. data/spec/unit/sdp/coverage/assets/0.7.1/fancybox/fancy_nav_left.png +0 -0
  62. data/spec/unit/sdp/coverage/assets/0.7.1/fancybox/fancy_nav_right.png +0 -0
  63. data/spec/unit/sdp/coverage/assets/0.7.1/fancybox/fancy_shadow_e.png +0 -0
  64. data/spec/unit/sdp/coverage/assets/0.7.1/fancybox/fancy_shadow_n.png +0 -0
  65. data/spec/unit/sdp/coverage/assets/0.7.1/fancybox/fancy_shadow_ne.png +0 -0
  66. data/spec/unit/sdp/coverage/assets/0.7.1/fancybox/fancy_shadow_nw.png +0 -0
  67. data/spec/unit/sdp/coverage/assets/0.7.1/fancybox/fancy_shadow_s.png +0 -0
  68. data/spec/unit/sdp/coverage/assets/0.7.1/fancybox/fancy_shadow_se.png +0 -0
  69. data/spec/unit/sdp/coverage/assets/0.7.1/fancybox/fancy_shadow_sw.png +0 -0
  70. data/spec/unit/sdp/coverage/assets/0.7.1/fancybox/fancy_shadow_w.png +0 -0
  71. data/spec/unit/sdp/coverage/assets/0.7.1/fancybox/fancy_title_left.png +0 -0
  72. data/spec/unit/sdp/coverage/assets/0.7.1/fancybox/fancy_title_main.png +0 -0
  73. data/spec/unit/sdp/coverage/assets/0.7.1/fancybox/fancy_title_over.png +0 -0
  74. data/spec/unit/sdp/coverage/assets/0.7.1/fancybox/fancy_title_right.png +0 -0
  75. data/spec/unit/sdp/coverage/assets/0.7.1/fancybox/fancybox-x.png +0 -0
  76. data/spec/unit/sdp/coverage/assets/0.7.1/fancybox/fancybox-y.png +0 -0
  77. data/spec/unit/sdp/coverage/assets/0.7.1/fancybox/fancybox.png +0 -0
  78. data/spec/unit/sdp/coverage/assets/0.7.1/favicon_green.png +0 -0
  79. data/spec/unit/sdp/coverage/assets/0.7.1/favicon_red.png +0 -0
  80. data/spec/unit/sdp/coverage/assets/0.7.1/favicon_yellow.png +0 -0
  81. data/spec/unit/sdp/coverage/assets/0.7.1/loading.gif +0 -0
  82. data/spec/unit/sdp/coverage/assets/0.7.1/magnify.png +0 -0
  83. data/spec/unit/sdp/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  84. data/spec/unit/sdp/coverage/assets/0.7.1/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  85. data/spec/unit/sdp/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  86. data/spec/unit/sdp/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  87. data/spec/unit/sdp/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  88. data/spec/unit/sdp/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  89. data/spec/unit/sdp/coverage/assets/0.7.1/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  90. data/spec/unit/sdp/coverage/assets/0.7.1/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  91. data/spec/unit/sdp/coverage/assets/0.7.1/smoothness/images/ui-icons_222222_256x240.png +0 -0
  92. data/spec/unit/sdp/coverage/assets/0.7.1/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  93. data/spec/unit/sdp/coverage/assets/0.7.1/smoothness/images/ui-icons_454545_256x240.png +0 -0
  94. data/spec/unit/sdp/coverage/assets/0.7.1/smoothness/images/ui-icons_888888_256x240.png +0 -0
  95. data/spec/unit/sdp/coverage/assets/0.7.1/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  96. data/spec/unit/sdp/coverage/index.html +72 -0
  97. data/spec/unit/sdp/description_spec.rb +321 -0
  98. data/spec/unit/sdp/parser_spec.rb +154 -0
  99. data/spec/{sdp_spec.rb → unit/sdp_spec.rb} +2 -2
  100. metadata +189 -43
  101. data/features/accepts_description_text.feature +0 -12
  102. data/features/sdp_create.feature +0 -15
  103. data/features/sdp_get.feature +0 -37
  104. data/features/step_definitions/accepts_description_text_steps.rb +0 -15
  105. data/features/step_definitions/sdp_create_steps.rb +0 -48
  106. data/features/step_definitions/sdp_get_steps.rb +0 -23
  107. data/features/support/env.rb +0 -3
  108. data/lib/sdp/session_template.erb +0 -46
  109. data/spec/sdp/description_spec.rb +0 -392
  110. data/spec/sdp/parser_spec.rb +0 -207
@@ -0,0 +1,72 @@
1
+ <!DOCTYPE html>
2
+ <html xmlns='http://www.w3.org/1999/xhtml'>
3
+ <head>
4
+ <title>Code coverage for Integration</title>
5
+ <meta http-equiv="content-type" content="text/html; charset=utf-8" />
6
+ <script src='./assets/0.7.1/application.js' type='text/javascript'></script>
7
+ <link href='./assets/0.7.1/application.css' media='screen, projection, print' rel='stylesheet' type='text/css'>
8
+ <link rel="shortcut icon" type="image/png" href="./assets/0.7.1/favicon_green.png" />
9
+ <link rel="icon" type="image/png" href="./assets/0.7.1/favicon.png" />
10
+ </head>
11
+
12
+ <body>
13
+ <div id="loading">
14
+ <img src="./assets/0.7.1/loading.gif" alt="loading"/>
15
+ </div>
16
+ <div id="wrapper" style="display:none;">
17
+ <div class="timestamp">Generated <abbr class="timeago" title="2012-11-19T18:10:30-08:00">2012-11-19T18:10:30-08:00</abbr></div>
18
+ <ul class="group_tabs"></ul>
19
+
20
+ <div id="content">
21
+ <div class="file_list_container" id="AllFiles">
22
+ <h2>
23
+ <span class="group_name">All Files</span>
24
+ (<span class="covered_percent"><span class="green">100.0%</span></span>
25
+ covered at
26
+ <span class="covered_strength">
27
+ <span class="red">
28
+ 0.0
29
+ </span>
30
+ </span> hits/line)
31
+ </h2>
32
+ <a name="AllFiles"></a>
33
+ <div>
34
+ <b>0</b> files in total.
35
+ <b>0.0</b> relevant lines.
36
+ <span class="green"><b>0.0</b> lines covered</span> and
37
+ <span class="red"><b>0.0</b> lines missed </span>
38
+ </div>
39
+ <table class="file_list">
40
+ <thead>
41
+ <tr>
42
+ <th>File</th>
43
+ <th>% covered</th>
44
+ <th>Lines</th>
45
+ <th>Relevant Lines</th>
46
+ <th>Lines covered</th>
47
+ <th>Lines missed</th>
48
+ <th>Avg. Hits / Line</th>
49
+ </tr>
50
+ </thead>
51
+ <tbody>
52
+
53
+ </tbody>
54
+ </table>
55
+ </div>
56
+
57
+
58
+
59
+ </div>
60
+
61
+ <div id="footer">
62
+ Generated by <a href="http://github.com/colszowka/simplecov">simplecov</a> v0.7.1
63
+ and simplecov-html v0.7.1<br/>
64
+ using RSpec
65
+ </div>
66
+
67
+ <div class="source_files">
68
+
69
+ </div>
70
+ </div>
71
+ </body>
72
+ </html>
@@ -0,0 +1,129 @@
1
+ require 'spec_helper'
2
+ require 'sdp/parser'
3
+ require 'base64'
4
+
5
+ describe "Parsing and creating descriptions" do
6
+ subject { SDP::Parser.new }
7
+
8
+ context "required fields only" do
9
+ let(:description) { REQUIRED_ONLY }
10
+
11
+ it "successfully parses and is valid" do
12
+ result = subject.should parse(description)
13
+ result.should be_a_valid_description
14
+ end
15
+ end
16
+
17
+ context "missing required values" do
18
+ %w[NO_VERSION NO_ORIGIN NO_NAME NO_CONNECT NO_TIMING].each do |missing_line|
19
+ context missing_line.downcase.sub!(/_/, " ") do
20
+ let(:description) { TestDescriptions.const_get(missing_line.to_sym) }
21
+
22
+ it "successfully parses but is not valid" do
23
+ result = subject.should parse(description)
24
+ result.should_not be_a_valid_description
25
+ end
26
+ end
27
+ end
28
+ end
29
+
30
+ context "more than one time description" do
31
+ let(:description) { TWO_TIME_DESCRIPTIONS }
32
+
33
+ it "successfully parses and is valid" do
34
+ pending "https://github.com/turboladen/sdp/issues/8"
35
+
36
+ result = subject.should parse(description)
37
+ result.should be_a_valid_description
38
+ end
39
+ end
40
+
41
+ context "one media section" do
42
+ context "required media lines" do
43
+ context "no sections contain connect line" do
44
+ let(:description) { ONE_MEDIA_SECTION_NO_CONNECT }
45
+
46
+ it "successfully parses and is not valid" do
47
+ result = subject.should parse(description)
48
+ result.should_not be_a_valid_description
49
+ end
50
+ end
51
+
52
+ context "session section contains connect line" do
53
+ let(:description) { ONE_MEDIA_SECTION_CONNECT_IN_SESSION }
54
+
55
+ it "successfully parses and is valid" do
56
+ result = subject.should parse(description)
57
+ result.should be_a_valid_description
58
+ end
59
+ end
60
+
61
+ context "media section contains connect line" do
62
+ let(:description) { ONE_MEDIA_SECTION_CONNECT_IN_MEDIA }
63
+
64
+ it "successfully parses and is valid" do
65
+ result = subject.should parse(description)
66
+ result.should be_a_valid_description
67
+ end
68
+ end
69
+ end
70
+ end
71
+
72
+ context "two media sections" do
73
+ context "required media lines" do
74
+ context "no sections contain connect line" do
75
+ let(:description) { TWO_MEDIA_SECTIONS_NO_CONNECT }
76
+
77
+ it "successfully parses and is not valid" do
78
+ result = subject.should parse(description)
79
+ result.should_not be_a_valid_description
80
+ end
81
+ end
82
+
83
+ context "session section contains connect line" do
84
+ let(:description) { TWO_MEDIA_SECTIONS_CONNECT_IN_SESSION }
85
+
86
+ it "successfully parses and is valid" do
87
+ result = subject.should parse(description)
88
+ result.should be_a_valid_description
89
+ end
90
+ end
91
+
92
+ context "media sections contain connect line" do
93
+ let(:description) { TWO_MEDIA_SECTIONS_CONNECT_IN_MEDIA }
94
+
95
+ it "successfully parses and is valid" do
96
+ result = subject.should parse(description)
97
+ result.should be_a_valid_description
98
+ end
99
+ end
100
+ end
101
+ end
102
+
103
+ context "other combinations" do
104
+ let(:valid_sdps) do
105
+ [
106
+ "v=1\no=steve 1234 5555 IN IP4 123.33.22.123\ns=This is a test session\ni=And here's some info\nu=http://bobo.net/thispdf.pdf\ne=bob@thing.com (Bob!)\np=+1 555 123 0987\nc=IN IP4 224.5.234.22/24\nb=CT:1000\nt=11111 22222\nr=7d 1h 0 25h\nz=2882844526 -1h 2898848070 0\n\k=prompt\na=recvonly\na=bobo:the clown\nm=video 49170/2 RTP/AVP 31\na=hotness\na=attribute2:do stuff\nm=audio 12335 RTP/AVP 99\na=make:it now\n",
107
+ "v=1\no=steve 1234 5555 IN IP4 123.33.22.123\ns=This is a test session\ni=And here's some info\nu=http://bobo.net/thispdf.pdf\ne=bob@thing.com (Bob!)\np=+1 555 123 0987\nc=IN IP4 224.5.234.22/24\nb=CT:1000\nt=11111 22222\nr=7d 1h 0 25h\nz=2882844526 -1h 2898848070 0\n\k=prompt\na=recvonly\na=bobo:the clown\n",
108
+ "v=1\no=steve 1234 5555 IN IP4 123.33.22.123\ns=This is a test session\ni=And here's some info\nu=http://bobo.net/thispdf.pdf\ne=bob@thing.com (Bob!)\np=+1 555 123 0987\nc=IN IP4 224.5.234.22/24\nb=CT:1000\nt=11111 22222\nr=7d 1h 0 25h\nz=2882844526 -1h 2898848070 0\n\k=prompt\n",
109
+ "v=1\no=steve 1234 5555 IN IP4 123.33.22.123\ns=This is a test session\ni=And here's some info\nu=http://bobo.net/thispdf.pdf\ne=bob@thing.com (Bob!)\np=+1 555 123 0987\nc=IN IP4 224.5.234.22/24\nb=CT:1000\nt=11111 22222\nr=7d 1h 0 25h\nz=2882844526 -1h 2898848070 0\n\k=clear:password\n",
110
+ "v=1\no=steve 1234 5555 IN IP4 123.33.22.123\ns=This is a test session\ni=And here's some info\nu=http://bobo.net/thispdf.pdf\ne=bob@thing.com (Bob!)\np=+1 555 123 0987\nc=IN IP4 224.5.234.22/24\nb=CT:1000\nt=11111 22222\nr=7d 1h 0 25h\nz=2882844526 -1h 2898848070 0\n",
111
+ "v=1\no=steve 1234 5555 IN IP4 123.33.22.123\ns=This is a test session\ni=And here's some info\nu=http://bobo.net/thispdf.pdf\ne=bob@thing.com (Bob!)\np=+1 555 123 0987\nc=IN IP4 224.5.234.22/24\nb=CT:1000\nt=11111 22222\nr=7d 1h 0 25h\nz=2882844526 -1h\n",
112
+ "v=1\no=steve 1234 5555 IN IP4 123.33.22.123\ns=This is a test session\ni=And here's some info\nu=http://bobo.net/thispdf.pdf\ne=bob@thing.com (Bob!)\np=+1 555 123 0987\nc=IN IP4 224.5.234.22/24\nb=CT:1000\nt=11111 22222\nr=7d 1h 0 25h\n",
113
+ "v=1\no=steve 1234 5555 IN IP4 123.33.22.123\ns=This is a test session\ni=And here's some info\nu=http://bobo.net/thispdf.pdf\ne=bob@thing.com (Bob!)\np=+1 555 123 0987\nc=IN IP4 224.5.234.22/24\nb=CT:1000\nt=11111 22222\n",
114
+ "v=1\no=steve 1234 5555 IN IP4 123.33.22.123\ns=This is a test session\ni=And here's some info\nu=http://bobo.net/thispdf.pdf\ne=bob@thing.com (Bob!)\np=+1 555 123 0987\nc=IN IP4 224.5.234.22/24\nt=11111 22222\n",
115
+ "v=1\no=steve 1234 5555 IN IP4 123.33.22.123\ns=This is a test session\ni=And here's some info\nu=http://bobo.net/thispdf.pdf\ne=bob@thing.com (Bob!)\nc=IN IP4 224.5.234.22/24\nt=11111 22222\n",
116
+ "v=1\no=steve 1234 5555 IN IP4 123.33.22.123\ns=This is a test session\ni=And here's some info\nu=http://bobo.net/thispdf.pdf\nc=IN IP4 224.5.234.22/24\nt=11111 22222\n",
117
+ "v=1\no=steve 1234 5555 IN IP4 123.33.22.123\ns=This is a test session\ni=And here's some info\nc=IN IP4 224.5.234.22/24\nt=11111 22222\n",
118
+ #BANDWIDTH_BETWEEN_ATTRIBUTES
119
+ ]
120
+ end
121
+
122
+ it "successfully parses and is valid" do
123
+ valid_sdps.each do |sdp|
124
+ result = subject.should parse(sdp)
125
+ result.should be_a_valid_description
126
+ end
127
+ end
128
+ end
129
+ end
@@ -4,4 +4,5 @@ SimpleCov.start
4
4
  $:.unshift(File.dirname(__FILE__) + '/../lib')
5
5
  require 'sdp/version'
6
6
 
7
- SDP_MISSING_TIME = "v=0\r\no=- 1809368942 3379601213 IN IP4 127.0.0.1\r\ns=Secret Agent from SomaFM\r\ni=Downtempo Spy Lounge\r\nc=IN IP4 0.0.0.0\r\nt=0 0\r\na=x-qt-text-cmt:Orban Opticodec-PCx-qt-text-nam:Secret Agent from SomaFMx-qt-text-inf:Downtempo Spy Loungecontrol:*\r\nm=audio 0 RTP/AVP 96\r\na=rtpmap:96 MP4A-LATM/44100/2a=fmtp:96 cpresent=0;config=400027200000a=control:trackID=1\r\n"
7
+ Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each { |f| require f }
8
+ include TestDescriptions
@@ -0,0 +1,33 @@
1
+ RSpec::Matchers.define :parse do |expected|
2
+ match do
3
+ begin
4
+ result = SDP::Parser.new.parse(expected)
5
+ rescue Parslet::ParseFailed => ex
6
+ puts ex
7
+ raise
8
+ end
9
+
10
+ result
11
+ end
12
+ end
13
+
14
+ RSpec::Matchers.define :be_a_valid_description do |expected|
15
+ match do |actual|
16
+ @result = if actual.is_a? SDP::Description
17
+ actual
18
+ else
19
+ SDP::Description.new(actual)
20
+ end
21
+
22
+ @result.valid?
23
+ end
24
+
25
+ failure_message_for_should do
26
+ "Expected had errors: #{@result.errors}"
27
+ end
28
+
29
+ failure_message_for_should_not do
30
+ "Expected description not be valid, but it was. #{@result.inspect}"
31
+ end
32
+ end
33
+
File without changes
@@ -0,0 +1,137 @@
1
+ module TestDescriptions
2
+ REQUIRED_ONLY = %{v=0\r
3
+ o=guy 1234 5555 IN IP4 123.33.22.123\r
4
+ s=This is a test session\r
5
+ c=IN IP4 0.0.0.0\r
6
+ t=11111 22222\r
7
+ }
8
+
9
+ #-------------------------------------------------------------------------------
10
+ # Missing lines
11
+ #-------------------------------------------------------------------------------
12
+ NO_VERSION = %{o=- 1809368942 3379601213 IN IP4 127.0.0.1\r
13
+ s=Test session\r
14
+ c=IN IP4 0.0.0.0\r
15
+ t=0 0\r
16
+ }
17
+
18
+ NO_ORIGIN = %{v=0\r
19
+ s=Test session\r
20
+ c=IN IP4 0.0.0.0\r
21
+ t=0 0\r
22
+ }
23
+
24
+ NO_NAME = %{v=0\r
25
+ o=- 1809368942 3379601213 IN IP4 127.0.0.1\r
26
+ c=IN IP4 0.0.0.0\r
27
+ t=0 0\r
28
+ }
29
+
30
+ NO_CONNECT = %{v=0\r
31
+ o=guy 1234 5555 IN IP4 123.33.22.123\r
32
+ s=This is a test session\r
33
+ t=11111 22222\r
34
+ }
35
+
36
+ NO_TIMING = %{v=0\r
37
+ o=- 1809368942 3379601213 IN IP4 127.0.0.1\r
38
+ s=Test session\r
39
+ c=IN IP4 0.0.0.0\r
40
+ }
41
+
42
+
43
+ TWO_TIME_DESCRIPTIONS = %{v=0\r
44
+ o=user 1809368942 3379601213 IN IP4 127.0.0.1\r
45
+ s=Test session\r
46
+ t=0 0\r
47
+ t=1 2\r
48
+ }
49
+
50
+ ONE_MEDIA_SECTION_NO_CONNECT = %{v=0\r
51
+ o=person 1809368942 3379601213 IN IP4 127.0.0.1\r
52
+ s=Test session\r
53
+ t=1234 5678\r
54
+ m=audio 0 RTP/AVP 96\r
55
+ }
56
+
57
+ ONE_MEDIA_SECTION_CONNECT_IN_SESSION = %{v=0\r
58
+ o=person 1809368942 3379601213 IN IP4 127.0.0.1\r
59
+ s=Test session\r
60
+ c=IN IP4 0.0.0.0\r
61
+ t=1234 5678\r
62
+ m=audio 0 RTP/AVP 96\r
63
+ }
64
+
65
+ ONE_MEDIA_SECTION_CONNECT_IN_MEDIA = %{v=0\r
66
+ o=person 1809368942 3379601213 IN IP4 127.0.0.1\r
67
+ s=Test session\r
68
+ t=1234 5678\r
69
+ m=audio 0 RTP/AVP 96\r
70
+ c=IN IP4 0.0.0.0\r
71
+ }
72
+
73
+ TWO_MEDIA_SECTIONS_NO_CONNECT = %{v=0\r
74
+ o=person 1809368942 3379601213 IN IP4 127.0.0.1\r
75
+ s=Test session\r
76
+ t=1234 5678\r
77
+ m=audio 0 RTP/AVP 96\r
78
+ m=audio 0 RTP/AVP 97\r
79
+ }
80
+
81
+ TWO_MEDIA_SECTIONS_CONNECT_IN_SESSION = %{v=0\r
82
+ o=person 1809368942 3379601213 IN IP4 127.0.0.1\r
83
+ s=Test session\r
84
+ c=IN IP4 0.0.0.0\r
85
+ t=1234 5678\r
86
+ m=audio 0 RTP/AVP 96\r
87
+ m=audio 0 RTP/AVP 97\r
88
+ }
89
+
90
+ TWO_MEDIA_SECTIONS_CONNECT_IN_MEDIA = %{v=0\r
91
+ o=person 1809368942 3379601213 IN IP4 127.0.0.1\r
92
+ s=Test session\r
93
+ t=1234 5678\r
94
+ m=audio 0 RTP/AVP 96\r
95
+ c=IN IP4 0.0.0.0\r
96
+ m=audio 0 RTP/AVP 97\r
97
+ c=IN IP4 0.0.0.0\r
98
+ }
99
+
100
+ SDP_MISSING_TIME = %Q{v=0\r
101
+ o=- 1809368942 3379601213 IN IP4 127.0.0.1\r
102
+ s=Secret Agent from SomaFM\r
103
+ i=Downtempo Spy Lounge\r
104
+ c=IN IP4 0.0.0.0\r
105
+ t=0 0\r
106
+ a=x-qt-text-cmt:Orban Opticodec-PCx-qt-text-nam:Secret Agent from SomaFMx-qt-text-inf:Downtempo Spy Loungecontrol:*\r
107
+ m=audio 0 RTP/AVP 96\r
108
+ a=rtpmap:96 MP4A-LATM/44100/2a=fmtp:96 cpresent=0;config=400027200000a=control:trackID=1\r
109
+ }
110
+
111
+ BANDWIDTH_BETWEEN_ATTRIBUTES = %{v=0\r
112
+ o=- 1729430249 1729430249 IN IP4 127.0.0.0\r
113
+ s=Wirecast\r
114
+ c=IN IP4 0.0.0.0\r
115
+ t=0 0\r
116
+ a=x-qt-text-nam:ACT Legislative Assembly\r
117
+ a=x-qt-text-cpy:Copyright ACT 2010\r
118
+ a=x-qt-text-aut:ACT Government\r
119
+ a=x-qt-text-inf:http://www.parliament.act.gov.au\r
120
+ a=range:npt=now-\r
121
+ a=control:*\r
122
+ m=audio 0 RTP/AVP 96\r
123
+ a=3GPP-Adaptation-Support:1\r
124
+ a=rtpmap:96 mpeg4-generic/32000/2\r
125
+ a=fmtp:96 profile-level-id=15;mode=AAC-hbr;sizelength=13;indexlength=3;indexdeltalength=3;config=1290\r
126
+ a=control:trackID=1\r
127
+ m=video 0 RTP/AVP 97\r
128
+ a=3GPP-Adaptation-Support:1\r
129
+ a=rtpmap:97 H264/90000\r
130
+ a=fmtp:97 packetization-mode=1;profile-level-id=4D400D;sprop-parameter-sets=J01ADakYKD5gDUGAQa2wrXvfAQ==,KN4JiA==\r
131
+ a=cliprect:0,0,240,320\r
132
+ a=framesize:97 320-240\r
133
+ b=AS:256\r
134
+ a=control:trackID=2\r
135
+ }
136
+ end
137
+