smalltalk
/
osmo-st-gsm
Archived
1
0
Fork 0
This repository has been archived on 2022-02-17. You can view files and clone it, but cannot push or open issues or pull requests.
osmo-st-gsm/Tests.st

321 lines
9.6 KiB
Smalltalk
Raw Normal View History

TestCase subclass: GSM0808Test [
testLAI [
| lai res |
res := #(16r72 16rF4 16r80) asByteArray.
lai := LAI generateLAI: 274 mnc: 8.
self assert: lai = res.
]
testCellIE [
| ie res msg |
res := #(5 8 0 114 244 128 32 18 117 48) asByteArray.
msg := Osmo.MessageBuffer new.
ie := GSMCellIdentifier initWith: 274 mnc: 8 lac: 8210 ci: 30000.
ie writeOn: msg.
self assert: msg asByteArray = res.
ie := GSMCellIdentifier parseFrom: res.
self assert: ie mcc = 274.
self assert: ie mnc = 8.
self assert: ie lac = 8210.
self assert: ie ci = 30000.
]
testLayer3IE [
| ie res msg |
res := #(23 3 1 2 3) asByteArray.
msg := Osmo.MessageBuffer new.
ie := GSMLayer3Info initWith: #(1 2 3) asByteArray.
ie writeOn: msg.
self assert: msg asByteArray = res.
ie := GSMLayer3Info parseFrom: res.
self assert: ie data = #(1 2 3) asByteArray.
]
testComplL3 [
| msg buf ie res |
msg := IEMessage initWith: GSM0808Helper msgComplL3.
msg addIe: (GSMCellIdentifier initWith: 274 mnc: 8 lac: 8210 ci: 30000).
msg addIe: (GSMLayer3Info initWith: #(1 2 3) asByteArray).
buf := Osmo.MessageBuffer new.
msg writeOn: buf.
res := #(16r57 16r05 16r08 16r00 16r72 16rF4 16r80 16r20 16r12
16r75 16r30 16r17 16r03 16r01 16r02 16r03) asByteArray.
self assert: buf asByteArray = res
]
testCuaseIE [
| buf ie res |
res := #(4 1 32) asByteArray.
ie := GSMCauseIE initWith: 32.
buf := ie toMessage asByteArray.
self assert: buf = res.
ie := GSMCauseIE parseFrom: res.
self assert: ie cause = 32.
]
testIEDecoding [
| inp res |
inp := #(16r57 16r05 16r08 16r00 16r72 16rF4 16r80 16r20 16r12
16r75 16r30 16r17 16r03 16r01 16r02 16r03) asByteArray.
res := IEMessage decode: inp with: GSM0808IE.
self assert: res type = GSM0808Helper msgComplL3.
self assert: res ies size = 2.
]
]
TestCase subclass: BSSAPTest [
testPrependManagment [
| msg |
msg := Osmo.MessageBuffer new.
msg putByteArray: #(1 2 3) asByteArray.
BSSAPHelper prependManagement: msg.
self assert: msg asByteArray = #(0 3 1 2 3) asByteArray.
]
testManagment [
| man |
man := BSSAPManagement initWith: #(1 2 3) asByteArray.
self assert: man toMessage asByteArray = #(0 3 1 2 3) asByteArray.
]
testParseManagement [
| man |
man := BSSAPMessage decode: #(0 3 1 2 3) asByteArray.
self assert: (man isKindOf: BSSAPManagement).
self assert: man data = #(1 2 3) asByteArray.
]
testPrependDTAP [
| msg |
msg := Osmo.MessageBuffer new.
msg putByteArray: #(1 2 3) asByteArray.
BSSAPHelper prependDTAP: msg dlci: 0.
self assert: msg asByteArray = #(1 0 3 1 2 3) asByteArray.
]
]
TestCase subclass: GSM48Test [
testKeySeqLu [
| gsm msg res |
res := #(16r70) asByteArray.
msg := Osmo.MessageBuffer new.
gsm := GSM48KeySeqLuType createDefault.
gsm writeOnDirect: msg.
self assert: msg asByteArray = res.
2010-11-23 22:37:27 +00:00
self assert: (GSM48KeySeqLuType length: res) = 1.
gsm := GSM48KeySeqLuType parseFrom: res.
self assert: gsm val = 16r70.
]
testLai [
| gsm msg res |
res := #(16r02 16rF2 16r50 16rFF 16rFE) asByteArray.
msg := Osmo.MessageBuffer new.
gsm := GSM48Lai createDefault.
gsm mcc: 202; mnc: 5; lac: 65534.
gsm writeOnDirect: msg.
self assert: msg asByteArray = res.
self assert: (GSM48Lai length: res) = res size.
gsm := GSM48Lai parseFrom: res.
self assert: gsm mcc = 202.
self assert: gsm mnc = 5.
self assert: gsm lac = 65534.
]
testCM1 [
| gsm msg res |
res := #(16r33) asByteArray.
msg := Osmo.MessageBuffer new.
gsm := GSM48Classmark1 createDefault.
gsm writeOnDirect: msg.
self assert: msg asByteArray = res.
self assert: (GSM48Classmark1 length: res) = res size.
gsm := GSM48Classmark1 parseFrom: res.
self assert: gsm cm1 = 16r33.
]
testMI [
| gsm msg res imsi |
res := #(8 41 71 128 0 0 0 116 8) asByteArray.
imsi := '274080000004780'.
msg := Osmo.MessageBuffer new.
gsm := GSM48MIdentity createDefault.
gsm imsi: imsi.
gsm writeOnDirect: msg.
self assert: msg asByteArray = res.
self assert: (GSM48MIdentity length: res) = res size.
gsm := GSM48MIdentity parseFrom: res.
self assert: gsm imsi = imsi.
]
2010-11-24 14:12:48 +00:00
testRejectCause [
| rej msg target |
target := #(11) asByteArray.
msg := Osmo.MessageBuffer new.
rej := GSM48RejectCause createDefault.
rej writeOnDirect: msg.
self assert: msg asByteArray = target.
self assert: (GSM48RejectCause length: target) = 1.
rej := GSM48RejectCause parseFrom: target.
self assert: rej cause = 11.
]
testLU [
| gsm msg res |
res := #(5 8 112 2 242 80 255 254 51 8 105 102 1 69 0 114 131 136) asByteArray.
msg := Osmo.MessageBuffer new.
gsm := LocationUpdatingRequest new.
(gsm lai) mcc: 202; mnc: 5; lac: 65534.
(gsm mi) imsi: '666105400273888'.
gsm writeOn: msg.
self assert: msg asByteArray = res
]
]
TestCase subclass: TestMessages [
testLU [
| sccp handler |
handler := SCCPHandler new.
sccp := MessageTests createLU: handler.
self assert: sccp asByteArray = #(1 154 2 0 2 2 4 2 66 254 15 32 0 30 87 5 8 0 114 244 128 16 3 156 64 23 17 5 8 112 0 240 0 0 0 51 7 97 102 102 102 102 102 246 0 ) asByteArray.
]
testMsgParser [
| msg bssap bssmap ies l3 gsm48 inp |
inp := #(1 154 2 0 2 2 4 2 66 254 15 32 0 30 87
5 8 0 114 244 128 16 3 156 64 23 17 5 8
112 0 240 0 0 0 51 7 97 102 102 102 102
102 246 0 ) asByteArray.
msg := MSGParser parse: inp.
self assert: (msg isKindOf: Osmo.SCCPConnectionRequest).
bssap := msg data.
self assert: (bssap isKindOf: BSSAPManagement).
bssmap := bssap data.
self assert: (bssmap isKindOf: IEMessage).
ies := bssmap ies.
self assert: ies size = 2.
l3 := bssmap findIE: (GSMLayer3Info elementId) ifAbsent: [
self assert: false.
].
self assert: (l3 isKindOf: GSMLayer3Info).
gsm48 := l3 data.
self assert: (gsm48 isKindOf: LocationUpdatingRequest).
self assert: gsm48 mi imsi = '666666666666'.
self assert: msg toMessage asByteArray = inp.
]
2010-11-24 14:17:10 +00:00
testMsgParserDt1 [
| inp msg bssap gsm48 |
inp := #(6 154 2 0 0 1 6 1 0 3 5 4 11 ) asByteArray.
msg := MSGParser parse: inp.
self assert: (msg isKindOf: Osmo.SCCPConnectionData).
bssap := msg data.
self assert: (bssap isKindOf: BSSAPDTAP).
gsm48 := bssap data.
self assert: (gsm48 isKindOf: LocationUpdatingReject).
self assert: msg toMessage asByteArray = inp.
]
testMsgparserDt1Clear [
| inp msg bssap bssmap |
inp := #(6 154 2 0 0 1 6 0 4 32 4 1 32) asByteArray.
msg := MSGParser parse: inp.
self assert: (msg isKindOf: Osmo.SCCPConnectionData).
bssap := msg data.
self assert: (bssap isKindOf: BSSAPManagement).
bssmap := bssap data.
self assert: (bssmap isKindOf: IEMessage).
self assert: msg toMessage asByteArray = inp.
]
2010-11-24 20:46:34 +00:00
testRandomMessages [
| inp msg |
"This only tests some parsing... it does not verify the content"
inp := #(6 1 8 101 0 1 3 0 1 33 ) asByteArray.
msg := MSGParser parse: inp.
self assert: msg toMessage asByteArray = inp.
inp := #(6 48 4 5 0 1 22 1 0 19 5 18 1 83 3 123 16 155 119 176 138 215 28 107 26 47 193 59 248 ) asByteArray.
msg := MSGParser parse: inp.
self assert: msg toMessage asByteArray = inp.
inp := #(6 1 8 104 0 1 9 1 0 6 5 84 253 230 198 47) asByteArray.
msg := MSGParser parse: inp.
self assert: msg toMessage asByteArray = inp.
inp := #(6 46 4 5 0 1 20 1 0 17 5 2 114 244 128 16 3 23 8 41 34 1 96 16 85 37 115) asByteArray.
msg := MSGParser parse: inp.
self assert: msg toMessage asByteArray = inp.
"Identity Request"
inp := #(16r06 16r3A 16r04 16r05 16r00 16r01 16r06 16r01 16r00 16r03 16r05 16r18 16r01) asByteArray.
msg := MSGParser parse: inp.
self assert: msg toMessage asByteArray = inp.
2010-11-26 23:17:34 +00:00
"Identity Response"
inp := #(16r06 16r01 16r08 16r76 16r00 16r01 16r0E 16r01 16r00 16r0B 16r05 16r59 16r08 16r29 16r20 16r10 16r31 16r61 16r35 16r45 16r06) asByteArray.
msg := MSGParser parse: inp.
self assert: msg toMessage asByteArray = inp.
"CM Service Request"
inp := #(1 205 4 5 2 2 4 2 66 254 15 33 0 31 87 5 8 0 114 244 128 16 3 156 64 23 16 5 36 17 3 51 25 129 8 41 32 1 153 118 6 1 152 33 1 0) asByteArray.
msg := MSGParser parse: inp.
self assert: msg toMessage asByteArray = inp.
"IMSI Detach Ind"
inp := #(1 255 4 5 2 2 4 2 66 254 15 29 0 27 87 5 8 0 114 244 128 16 3 156 64 23 12 5 1 51 8 41 65 112 6 16 9 71 34 33 1 0 ) asByteArray.
msg := MSGParser parse: inp.
self assert: msg toMessage asByteArray = inp.
2010-11-24 20:46:34 +00:00
]
]