OLD | NEW |
1 // Copyright (c) 2015, the Fletch project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, the Fletch project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE.md file. | 3 // BSD-style license that can be found in the LICENSE.md file. |
4 | 4 |
5 import 'package:expect/expect.dart'; | 5 import 'package:expect/expect.dart'; |
| 6 import 'package:mdns/src/constants.dart'; |
6 import 'package:mdns/src/packet.dart'; | 7 import 'package:mdns/src/packet.dart'; |
7 | 8 |
8 main() { | 9 main() { |
9 testValidPackages(); | 10 testValidPackages(); |
10 testBadPackages(); | 11 testBadPackages(); |
11 testHexDumpList(); | 12 testHexDumpList(); |
| 13 testPTRRData(); |
| 14 testSRVRData(); |
12 } | 15 } |
13 | 16 |
14 testValidPackages() { | 17 testValidPackages() { |
15 var result; | 18 var result; |
16 result = decodeMDnsResponse(package1); | 19 result = decodeMDnsResponse(package1); |
17 Expect.equals(1, result.length); | 20 Expect.equals(1, result.length); |
18 Expect.equals('raspberrypi.local', result[0].name); | 21 Expect.equals('raspberrypi.local', result[0].name); |
19 Expect.equals('192.168.1.191', result[0].address.address); | 22 Expect.equals('192.168.1.191', result[0].address.address); |
20 | 23 |
21 result = decodeMDnsResponse(package2); | 24 result = decodeMDnsResponse(package2); |
(...skipping 29 matching lines...) Expand all Loading... |
51 } | 54 } |
52 | 55 |
53 testBadPackages() { | 56 testBadPackages() { |
54 for (var p in [package1, package2, package3]) { | 57 for (var p in [package1, package2, package3]) { |
55 for (int i = 0; i < p.length; i++) { | 58 for (int i = 0; i < p.length; i++) { |
56 decodeMDnsResponse(p.sublist(0, i)); | 59 decodeMDnsResponse(p.sublist(0, i)); |
57 } | 60 } |
58 } | 61 } |
59 } | 62 } |
60 | 63 |
| 64 testPTRRData() { |
| 65 Expect.equals( |
| 66 'sgjesse-macbookpro2 [78:31:c1:b8:55:38]._workstation._tcp.local', |
| 67 readFQDN(ptrRData)); |
| 68 print(readFQDN(ptrRData2)); |
| 69 Expect.equals('fletch-agent._fletch_agent._tcp.local', readFQDN(ptrRData2)); |
| 70 } |
| 71 |
| 72 testSRVRData() { |
| 73 Expect.equals('fletch.local', readFQDN(srvRData, srvHeaderSize)); |
| 74 } |
| 75 |
61 testHexDumpList() { | 76 testHexDumpList() { |
62 // Call hexDumpList to get rid of hint. | 77 // Call hexDumpList to get rid of hint. |
63 formatHexStream(""); | 78 formatHexStream(""); |
64 hexDumpList([]); | 79 hexDumpList([]); |
65 } | 80 } |
66 | 81 |
67 // One address. | 82 // One address. |
68 var package1 = [ | 83 var package1 = [ |
69 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x01, | 84 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x00, 0x01, |
70 0x00, 0x00, 0x00, 0x00, 0x0b, 0x72, 0x61, 0x73, | 85 0x00, 0x00, 0x00, 0x00, 0x0b, 0x72, 0x61, 0x73, |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
137 0x69, 0xc0, 0x1f, 0xc0, 0x6d, 0x00, 0x1c, 0x80, | 152 0x69, 0xc0, 0x1f, 0xc0, 0x6d, 0x00, 0x1c, 0x80, |
138 0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x10, 0xfe, | 153 0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x10, 0xfe, |
139 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, | 154 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xba, |
140 0x27, 0xeb, 0xff, 0xfe, 0x69, 0x6e, 0x3a, 0xc0, | 155 0x27, 0xeb, 0xff, 0xfe, 0x69, 0x6e, 0x3a, 0xc0, |
141 0x6d, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, | 156 0x6d, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, |
142 0x78, 0x00, 0x04, 0xc0, 0xa8, 0x01, 0x01, 0xc0, | 157 0x78, 0x00, 0x04, 0xc0, 0xa8, 0x01, 0x01, 0xc0, |
143 0x6d, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, | 158 0x6d, 0x00, 0x01, 0x80, 0x01, 0x00, 0x00, 0x00, |
144 0x78, 0x00, 0x04, 0xa9, 0xfe, 0xa7, 0xac | 159 0x78, 0x00, 0x04, 0xa9, 0xfe, 0xa7, 0xac |
145 ]; | 160 ]; |
146 | 161 |
| 162 var ptrRData = <int>[ |
| 163 0x27, 0x73, 0x67, 0x6a, 0x65, 0x73, 0x73, 0x65, |
| 164 0x2d, 0x6d, 0x61, 0x63, 0x62, 0x6f, 0x6f, 0x6b, |
| 165 0x70, 0x72, 0x6f, 0x32, 0x20, 0x5b, 0x37, 0x38, |
| 166 0x3a, 0x33, 0x31, 0x3a, 0x63, 0x31, 0x3a, 0x62, |
| 167 0x38, 0x3a, 0x35, 0x35, 0x3a, 0x33, 0x38, 0x5d, |
| 168 0x0c, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x74, |
| 169 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x04, 0x5f, 0x74, |
| 170 0x63, 0x70, 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, |
| 171 0x00 |
| 172 ]; |
| 173 |
| 174 var ptrRData2 = <int>[ |
| 175 0x0c, 0x66, 0x6c, 0x65, 0x74, 0x63, 0x68, 0x2d, |
| 176 0x61, 0x67, 0x65, 0x6e, 0x74, 0x0d, 0x5f, 0x66, |
| 177 0x6c, 0x65, 0x74, 0x63, 0x68, 0x5f, 0x61, 0x67, |
| 178 0x65, 0x6e, 0x74, 0x04, 0x5f, 0x74, 0x63, 0x70, |
| 179 0x05, 0x6c, 0x6f, 0x63, 0x61, 0x6c, 0x00 |
| 180 ]; |
| 181 |
| 182 var srvRData = <int> [ |
| 183 0x00, 0x00, 0x00, 0x00, 0x2f, 0x59, 0x06, 0x66, |
| 184 0x6c, 0x65, 0x74, 0x63, 0x68, 0x05, 0x6c, 0x6f, |
| 185 0x63, 0x61, 0x6c, 0x00 |
| 186 ]; |
| 187 |
147 // Support code to generate the hex-lists above from | 188 // Support code to generate the hex-lists above from |
148 // a hex-stream. | 189 // a hex-stream. |
149 void formatHexStream(String hexStream) { | 190 void formatHexStream(String hexStream) { |
150 var s = ''; | 191 var s = ''; |
151 for (int i = 0; i < hexStream.length / 2; i++) { | 192 for (int i = 0; i < hexStream.length / 2; i++) { |
152 if (s.length != 0) s += ', '; | 193 if (s.length != 0) s += ', '; |
153 s += '0x'; | 194 s += '0x'; |
154 var x = hexStream.substring(i * 2, i * 2 + 2); | 195 var x = hexStream.substring(i * 2, i * 2 + 2); |
155 s += x; | 196 s += x; |
156 if (((i + 1) % 8) == 0) { | 197 if (((i + 1) % 8) == 0) { |
(...skipping 15 matching lines...) Expand all Loading... |
172 if (x.length == 1) s += '0'; | 213 if (x.length == 1) s += '0'; |
173 s += x; | 214 s += x; |
174 if (((i + 1) % 8) == 0) { | 215 if (((i + 1) % 8) == 0) { |
175 s += ','; | 216 s += ','; |
176 print(s); | 217 print(s); |
177 s = ''; | 218 s = ''; |
178 } | 219 } |
179 } | 220 } |
180 if (s.length != 0) print(s); | 221 if (s.length != 0) print(s); |
181 } | 222 } |
OLD | NEW |