smalltalk
/
osmo-st-sip
Archived
1
0
Fork 0

callagent: Fix the SIPRequests>>#addDefaults: with the OrderedCollection

This commit is contained in:
Holger Hans Peter Freyther 2011-06-25 19:22:32 +02:00
parent dac5de9a28
commit 2a7a1bb3cb
3 changed files with 51 additions and 3 deletions

View File

@ -76,6 +76,14 @@ Object subclass: SIPRequest [
self parameters add: (aPar -> aValue).
]
parameter: aPar ifAbsent: aBlock [
<category: 'accessing'>
self parameters do: [:each |
each key = aPar ifTrue: [^ each value]].
aBlock value.
]
asDatagram [
| out |
@ -108,10 +116,10 @@ Object subclass: SIPRequest [
]
addDefaults: out [
self parameters at: 'To' ifAbsent: [
self parameter: 'To' ifAbsent: [
out
nextPutAll: 'To: %1' % {dialog generateTo}; cr;nl].
self parameters at: 'From' ifAbsent: [
self parameter: 'From' ifAbsent: [
out
nextPutAll: 'From: %1' % {dialog generateFrom}; cr;nl].
]
@ -132,7 +140,7 @@ SIPRequest subclass: SIPInviteRequest [
addDefaults: out [
super addDefaults: out.
self parameters at: 'Contact' ifAbsent: [
self parameter: 'Contact' ifAbsent: [
out nextPutAll: 'Contact: <%1>' % {dialog from};
cr; nl.
].

38
callagent/Tests.st Normal file
View File

@ -0,0 +1,38 @@
"
(C) 2011 by Holger Hans Peter Freyther
All Rights Reserved
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
"
TestCase subclass: SIPRequestTest [
testINVITE [
| dialog req out |
dialog := SIPDialog fromUser: 'sip:1000@on-foo.com' host: '192.168.0.106' port: 5060.
dialog fromTag: 'MzQ4NjQ4MTg0Mjc0MzAzODU5NA__'.
dialog to: 'sip:9198@192.168.0.106'.
req := SIPInviteRequest from: dialog.
out := (WriteStream on: String new)
nextPutAll: 'INVITE sip:9198@192.168.0.106 SIP/2.0'; cr; nl;
nextPutAll: 'To: <sip:9198@192.168.0.106>'; cr; nl;
nextPutAll: 'From: <sip:1000@on-foo.com>;tag=MzQ4NjQ4MTg0Mjc0MzAzODU5NA__'; cr; nl;
nextPutAll: 'Contact: <sip:1000@on-foo.com>'; cr; nl;
cr; nl; contents.
self assert: req asDatagram = out.
]
]

View File

@ -18,7 +18,9 @@
<test>
<sunit>Osmo.SIPGrammarTest</sunit>
<sunit>Osmo.SIPParserTest</sunit>
<sunit>Osmo.SIPRequestTest</sunit>
<filein>grammar/SIPGrammarTest.st</filein>
<filein>callagent/SIPParserTest.st</filein>
<filein>callagent/Tests.st</filein>
</test>
</package>