blob: aee782fafdfbbf821f2779349ffa8069ee06d34a [file] [log] [blame]
Alexander Afanasyevc169a812014-05-20 20:37:29 -04001/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -08002/**
Alexander Afanasyev1013fd02017-01-03 13:19:03 -08003 * Copyright (c) 2013-2017 Regents of the University of California.
Alexander Afanasyevdfa52c42014-04-24 21:10:11 -07004 *
5 * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
Alexander Afanasyevdfa52c42014-04-24 21:10:11 -07006 *
Alexander Afanasyevc169a812014-05-20 20:37:29 -04007 * ndn-cxx library is free software: you can redistribute it and/or modify it under the
8 * terms of the GNU Lesser General Public License as published by the Free Software
9 * Foundation, either version 3 of the License, or (at your option) any later version.
10 *
11 * ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY
12 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
13 * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
14 *
15 * You should have received copies of the GNU General Public License and GNU Lesser
16 * General Public License along with ndn-cxx, e.g., in COPYING.md file. If not, see
17 * <http://www.gnu.org/licenses/>.
18 *
19 * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -080020 */
21
Alexander Afanasyev09c613f2014-01-29 00:23:58 -080022#include "interest.hpp"
Junxiao Shi2af905b2014-11-27 13:10:54 -070023#include "interest-filter.hpp"
Junxiao Shiaf8eeea2014-03-31 20:10:56 -070024#include "data.hpp"
25#include "security/signature-sha256-with-rsa.hpp"
Yingdi Yubf6a2812014-06-17 15:32:11 -070026#include "security/digest-sha256.hpp"
Alexander Afanasyev258ec2b2014-05-14 16:15:37 -070027#include "encoding/buffer-stream.hpp"
Junxiao Shiaf8eeea2014-03-31 20:10:56 -070028
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -070029#include "boost-test.hpp"
Alexander Afanasyeve4f8c3b2016-06-23 16:03:48 -070030#include "identity-management-fixture.hpp"
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -080031
Alexander Afanasyev0abb2da2014-01-30 18:07:57 -080032namespace ndn {
Alexander Afanasyev90164962014-03-06 08:29:59 +000033namespace tests {
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -080034
Alexander Afanasyeve4f8c3b2016-06-23 16:03:48 -070035BOOST_FIXTURE_TEST_SUITE(TestInterest, IdentityManagementFixture)
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -080036
37const uint8_t Interest1[] = {
Alexander Afanasyev117f5ef2015-06-03 15:07:24 -070038 0x05, 0x59, // NDN Interest
Alexander Afanasyev4b456282014-02-13 00:34:34 -080039 0x07, 0x14, // Name
40 0x08, 0x5, // NameComponent
Alexander Afanasyev636e9f12014-01-07 12:01:03 -080041 0x6c, 0x6f, 0x63, 0x61, 0x6c,
Alexander Afanasyev4b456282014-02-13 00:34:34 -080042 0x08, 0x3, // NameComponent
Alexander Afanasyev636e9f12014-01-07 12:01:03 -080043 0x6e, 0x64, 0x6e,
Alexander Afanasyev4b456282014-02-13 00:34:34 -080044 0x08, 0x6, // NameComponent
Alexander Afanasyev636e9f12014-01-07 12:01:03 -080045 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
Junxiao Shib332e782014-03-31 14:23:46 -070046 0x09, 0x37, // Selectors
Alexander Afanasyev4b456282014-02-13 00:34:34 -080047 0x0d, 0x1, 0x1, // MinSuffix
48 0x0e, 0x1, 0x1, // MaxSuffix
Junxiao Shib332e782014-03-31 14:23:46 -070049 0x1c, 0x16, // KeyLocator
50 0x07, 0x14, // Name
51 0x08, 0x04,
52 0x74, 0x65, 0x73, 0x74,
53 0x08, 0x03,
54 0x6b, 0x65, 0x79,
55 0x08, 0x07,
56 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72,
Alexander Afanasyev4b456282014-02-13 00:34:34 -080057 0x10, 0x14, // Exclude
58 0x08, 0x4, // NameComponent
Alexander Afanasyev636e9f12014-01-07 12:01:03 -080059 0x61, 0x6c, 0x65, 0x78,
Alexander Afanasyev4b456282014-02-13 00:34:34 -080060 0x08, 0x4, // NameComponent
Alexander Afanasyev636e9f12014-01-07 12:01:03 -080061 0x78, 0x78, 0x78, 0x78,
Alexander Afanasyev4b456282014-02-13 00:34:34 -080062 0x13, 0x0, // Any
63 0x08, 0x4, // NameComponent
Alexander Afanasyev636e9f12014-01-07 12:01:03 -080064 0x79, 0x79, 0x79, 0x79,
Alexander Afanasyev4b456282014-02-13 00:34:34 -080065 0x11, 0x1, // ChildSelector
Alexander Afanasyev636e9f12014-01-07 12:01:03 -080066 0x1,
Alexander Afanasyeve881e932014-06-08 14:47:03 +030067 0x0a, 0x4, // Nonce
68 0x1, 0x0, 0x0, 0x00,
Alexander Afanasyeve881e932014-06-08 14:47:03 +030069 0x0c, // InterestLifetime
70 0x2, 0x3, 0xe8
71};
72
73const uint8_t Interest2[] = {
Alexander Afanasyev117f5ef2015-06-03 15:07:24 -070074 0x05, 0x59, // NDN Interest
Alexander Afanasyeve881e932014-06-08 14:47:03 +030075 0x07, 0x14, // Name
76 0x08, 0x5, // NameComponent
77 0x6c, 0x6f, 0x63, 0x61, 0x6c,
78 0x08, 0x3, // NameComponent
79 0x6e, 0x64, 0x6e,
80 0x08, 0x6, // NameComponent
81 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
82 0x09, 0x37, // Selectors
83 0x0d, 0x1, 0x1, // MinSuffix
84 0x0e, 0x1, 0x1, // MaxSuffix
85 0x1c, 0x16, // KeyLocator
86 0x07, 0x14, // Name
87 0x08, 0x04,
88 0x74, 0x65, 0x73, 0x74,
89 0x08, 0x03,
90 0x6b, 0x65, 0x79,
91 0x08, 0x07,
92 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72,
93 0x10, 0x14, // Exclude
94 0x08, 0x4, // NameComponent
95 0x61, 0x6c, 0x65, 0x78,
96 0x08, 0x4, // NameComponent
97 0x78, 0x78, 0x78, 0x78,
98 0x13, 0x0, // Any
99 0x08, 0x4, // NameComponent
100 0x79, 0x79, 0x79, 0x79,
101 0x11, 0x1, // ChildSelector
102 0x1,
103 0x0a, 0x4, // Nonce
104 0x2, 0x0, 0x0, 0x00,
Alexander Afanasyev4b456282014-02-13 00:34:34 -0800105 0x0c, // InterestLifetime
Alexander Afanasyev636e9f12014-01-07 12:01:03 -0800106 0x2, 0x3, 0xe8
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800107};
108
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700109const uint8_t InterestWithLink[] = {
110 0x05, 0xfb, // Interest
111 0x07, 0x14, // Name
112 0x08, 0x5, // NameComponent
113 0x6c, 0x6f, 0x63, 0x61, 0x6c,
114 0x08, 0x3, // NameComponent
115 0x6e, 0x64, 0x6e,
116 0x08, 0x6, // NameComponent
117 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
118 0x0a, 0x4, // Nonce
119 0x1, 0x0, 0x0, 0x00,
120 0x06, 0xda, // Data
121 0x07, 0x14, // Name
122 0x08, 0x05,
123 0x6c, 0x6f, 0x63, 0x61, 0x6c,
124 0x08, 0x03,
125 0x6e, 0x64, 0x6e,
126 0x08, 0x06,
127 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
128 0x14, 0x07, // MetaInfo
129 0x18, 0x01, // ContentType
130 0x01,
131 0x19, 0x02, // FreshnessPeriod
132 0x27, 0x10,
133 0x15, 0x1a, // Content
134 0x1f, 0x0c, // LinkDelegation
135 0x1e, 0x01, // LinkPreference
136 0x0a,
137 0x07, 0x07, // Name
138 0x08, 0x05,
139 0x6c, 0x6f, 0x63, 0x61, 0x6c,
140 0x1f, 0x0a, // LinkDelegation
141 0x1e, 0x01, // LinkPreference
142 0x14,
143 0x07, 0x05, // Name
144 0x08, 0x03,
145 0x6e, 0x64, 0x6e,
146 0x16, 0x1b, // SignatureInfo
147 0x1b, 0x01, // SignatureType
148 0x01,
149 0x1c, 0x16, // KeyLocator
150 0x07, 0x14, // Name
151 0x08, 0x04,
152 0x74, 0x65, 0x73, 0x74,
153 0x08, 0x03,
154 0x6b, 0x65, 0x79,
155 0x08, 0x07,
156 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72,
157 0x17, 0x80, // SignatureValue
158 0x2f, 0xd6, 0xf1, 0x6e, 0x80, 0x6f, 0x10, 0xbe, 0xb1, 0x6f, 0x3e, 0x31, 0xec,
159 0xe3, 0xb9, 0xea, 0x83, 0x30, 0x40, 0x03, 0xfc, 0xa0, 0x13, 0xd9, 0xb3, 0xc6,
160 0x25, 0x16, 0x2d, 0xa6, 0x58, 0x41, 0x69, 0x62, 0x56, 0xd8, 0xb3, 0x6a, 0x38,
161 0x76, 0x56, 0xea, 0x61, 0xb2, 0x32, 0x70, 0x1c, 0xb6, 0x4d, 0x10, 0x1d, 0xdc,
162 0x92, 0x8e, 0x52, 0xa5, 0x8a, 0x1d, 0xd9, 0x96, 0x5e, 0xc0, 0x62, 0x0b, 0xcf,
163 0x3a, 0x9d, 0x7f, 0xca, 0xbe, 0xa1, 0x41, 0x71, 0x85, 0x7a, 0x8b, 0x5d, 0xa9,
164 0x64, 0xd6, 0x66, 0xb4, 0xe9, 0x8d, 0x0c, 0x28, 0x43, 0xee, 0xa6, 0x64, 0xe8,
165 0x55, 0xf6, 0x1c, 0x19, 0x0b, 0xef, 0x99, 0x25, 0x1e, 0xdc, 0x78, 0xb3, 0xa7,
166 0xaa, 0x0d, 0x14, 0x58, 0x30, 0xe5, 0x37, 0x6a, 0x6d, 0xdb, 0x56, 0xac, 0xa3,
167 0xfc, 0x90, 0x7a, 0xb8, 0x66, 0x9c, 0x0e, 0xf6, 0xb7, 0x64, 0xd1,
168 0x20, 0x01, // SelectedDelegation
169 0x00
170};
171
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700172const uint8_t LINK[] = {
173 0x06, 0xda, // Data
174 0x07, 0x14, // Name
175 0x08, 0x05,
176 0x6c, 0x6f, 0x63, 0x61, 0x6c,
177 0x08, 0x03,
178 0x6e, 0x64, 0x6e,
179 0x08, 0x06,
180 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
181 0x14, 0x07, // MetaInfo
182 0x18, 0x01, // ContentType
183 0x01,
184 0x19, 0x02, // FreshnessPeriod
185 0x27, 0x10,
186 0x15, 0x1a, // Content
187 0x1f, 0x0c, // LinkDelegation
188 0x1e, 0x01, // LinkPreference
189 0x0a,
190 0x07, 0x07, // Name
191 0x08, 0x05,
192 0x6c, 0x6f, 0x63, 0x61, 0x6c,
193 0x1f, 0x0a, // LinkDelegation
194 0x1e, 0x01, // LinkPreference
195 0x14,
196 0x07, 0x05, // Name
197 0x08, 0x03,
198 0x6e, 0x64, 0x6e,
199 0x16, 0x1b, // SignatureInfo
200 0x1b, 0x01, // SignatureType
201 0x01,
202 0x1c, 0x16, // KeyLocator
203 0x07, 0x14, // Name
204 0x08, 0x04,
205 0x74, 0x65, 0x73, 0x74,
206 0x08, 0x03,
207 0x6b, 0x65, 0x79,
208 0x08, 0x07,
209 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72,
210 0x17, 0x80, // SignatureValue
211 0x2f, 0xd6, 0xf1, 0x6e, 0x80, 0x6f, 0x10, 0xbe, 0xb1, 0x6f, 0x3e, 0x31, 0xec,
212 0xe3, 0xb9, 0xea, 0x83, 0x30, 0x40, 0x03, 0xfc, 0xa0, 0x13, 0xd9, 0xb3, 0xc6,
213 0x25, 0x16, 0x2d, 0xa6, 0x58, 0x41, 0x69, 0x62, 0x56, 0xd8, 0xb3, 0x6a, 0x38,
214 0x76, 0x56, 0xea, 0x61, 0xb2, 0x32, 0x70, 0x1c, 0xb6, 0x4d, 0x10, 0x1d, 0xdc,
215 0x92, 0x8e, 0x52, 0xa5, 0x8a, 0x1d, 0xd9, 0x96, 0x5e, 0xc0, 0x62, 0x0b, 0xcf,
216 0x3a, 0x9d, 0x7f, 0xca, 0xbe, 0xa1, 0x41, 0x71, 0x85, 0x7a, 0x8b, 0x5d, 0xa9,
217 0x64, 0xd6, 0x66, 0xb4, 0xe9, 0x8d, 0x0c, 0x28, 0x43, 0xee, 0xa6, 0x64, 0xe8,
218 0x55, 0xf6, 0x1c, 0x19, 0x0b, 0xef, 0x99, 0x25, 0x1e, 0xdc, 0x78, 0xb3, 0xa7,
219 0xaa, 0x0d, 0x14, 0x58, 0x30, 0xe5, 0x37, 0x6a, 0x6d, 0xdb, 0x56, 0xac, 0xa3,
220 0xfc, 0x90, 0x7a, 0xb8, 0x66, 0x9c, 0x0e, 0xf6, 0xb7, 0x64, 0xd1
221};
222
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700223const uint8_t InterestWithLinkMissingContentType[] = {
224 0x05, 0xf8, // Interest
225 0x07, 0x14, // Name
226 0x08, 0x5, // NameComponent
227 0x6c, 0x6f, 0x63, 0x61, 0x6c,
228 0x08, 0x3, // NameComponent
229 0x6e, 0x64, 0x6e,
230 0x08, 0x6, // NameComponent
231 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
232 0x0a, 0x4, // Nonce
233 0x1, 0x0, 0x0, 0x00,
234 0x06, 0xd7, // Data
235 0x07, 0x14, // Name
236 0x08, 0x05,
237 0x6c, 0x6f, 0x63, 0x61, 0x6c,
238 0x08, 0x03,
239 0x6e, 0x64, 0x6e,
240 0x08, 0x06,
241 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
242 0x14, 0x04, // MetaInfo
243 0x19, 0x02, // FreshnessPeriod
244 0x27, 0x10,
245 0x15, 0x1a, // Content
246 0x1f, 0x0c, // LinkDelegation
247 0x1e, 0x01, // LinkPreference
248 0x0a,
249 0x07, 0x07, // Name
250 0x08, 0x05,
251 0x6c, 0x6f, 0x63, 0x61, 0x6c,
252 0x1f, 0x0a, // LinkDelegation
253 0x1e, 0x01, // LinkPreference
254 0x14,
255 0x07, 0x05, // Name
256 0x08, 0x03,
257 0x6e, 0x64, 0x6e,
258 0x16, 0x1b, // SignatureInfo
259 0x1b, 0x01, // SignatureType
260 0x01,
261 0x1c, 0x16, // KeyLocator
262 0x07, 0x14, // Name
263 0x08, 0x04,
264 0x74, 0x65, 0x73, 0x74,
265 0x08, 0x03,
266 0x6b, 0x65, 0x79,
267 0x08, 0x07,
268 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72,
269 0x17, 0x80, // SignatureValue
270 0x2f, 0xd6, 0xf1, 0x6e, 0x80, 0x6f, 0x10, 0xbe, 0xb1, 0x6f, 0x3e, 0x31, 0xec,
271 0xe3, 0xb9, 0xea, 0x83, 0x30, 0x40, 0x03, 0xfc, 0xa0, 0x13, 0xd9, 0xb3, 0xc6,
272 0x25, 0x16, 0x2d, 0xa6, 0x58, 0x41, 0x69, 0x62, 0x56, 0xd8, 0xb3, 0x6a, 0x38,
273 0x76, 0x56, 0xea, 0x61, 0xb2, 0x32, 0x70, 0x1c, 0xb6, 0x4d, 0x10, 0x1d, 0xdc,
274 0x92, 0x8e, 0x52, 0xa5, 0x8a, 0x1d, 0xd9, 0x96, 0x5e, 0xc0, 0x62, 0x0b, 0xcf,
275 0x3a, 0x9d, 0x7f, 0xca, 0xbe, 0xa1, 0x41, 0x71, 0x85, 0x7a, 0x8b, 0x5d, 0xa9,
276 0x64, 0xd6, 0x66, 0xb4, 0xe9, 0x8d, 0x0c, 0x28, 0x43, 0xee, 0xa6, 0x64, 0xe8,
277 0x55, 0xf6, 0x1c, 0x19, 0x0b, 0xef, 0x99, 0x25, 0x1e, 0xdc, 0x78, 0xb3, 0xa7,
278 0xaa, 0x0d, 0x14, 0x58, 0x30, 0xe5, 0x37, 0x6a, 0x6d, 0xdb, 0x56, 0xac, 0xa3,
279 0xfc, 0x90, 0x7a, 0xb8, 0x66, 0x9c, 0x0e, 0xf6, 0xb7, 0x64, 0xd1,
280 0x20, 0x01, // SelectedDelegation
281 0x00
282};
283
284const uint8_t InterestWithLinkNoMetaInfo[] = {
285 0x05, 0xf2, // Interest
286 0x07, 0x14, // Name
287 0x08, 0x5, // NameComponent
288 0x6c, 0x6f, 0x63, 0x61, 0x6c,
289 0x08, 0x3, // NameComponent
290 0x6e, 0x64, 0x6e,
291 0x08, 0x6, // NameComponent
292 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
293 0x0a, 0x4, // Nonce
294 0x1, 0x0, 0x0, 0x00,
295 0x06, 0xd1, // Data
296 0x07, 0x14, // Name
297 0x08, 0x05,
298 0x6c, 0x6f, 0x63, 0x61, 0x6c,
299 0x08, 0x03,
300 0x6e, 0x64, 0x6e,
301 0x08, 0x06,
302 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
303 0x15, 0x1a, // Content
304 0x1f, 0x0c, // LinkDelegation
305 0x1e, 0x01, // LinkPreference
306 0x0a,
307 0x07, 0x07, // Name
308 0x08, 0x05,
309 0x6c, 0x6f, 0x63, 0x61, 0x6c,
310 0x1f, 0x0a, // LinkPreference
311 0x1e, 0x01, // LinkPreference
312 0x14,
313 0x07, 0x05, // Name
314 0x08, 0x03,
315 0x6e, 0x64, 0x6e,
316 0x16, 0x1b, // SignatureInfo
317 0x1b, 0x01, // SignatureType
318 0x01,
319 0x1c, 0x16, // KeyLocator
320 0x07, 0x14, // Name
321 0x08, 0x04,
322 0x74, 0x65, 0x73, 0x74,
323 0x08, 0x03,
324 0x6b, 0x65, 0x79,
325 0x08, 0x07,
326 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72,
327 0x17, 0x80, // SignatureValue
328 0x2f, 0xd6, 0xf1, 0x6e, 0x80, 0x6f, 0x10, 0xbe, 0xb1, 0x6f, 0x3e, 0x31, 0xec,
329 0xe3, 0xb9, 0xea, 0x83, 0x30, 0x40, 0x03, 0xfc, 0xa0, 0x13, 0xd9, 0xb3, 0xc6,
330 0x25, 0x16, 0x2d, 0xa6, 0x58, 0x41, 0x69, 0x62, 0x56, 0xd8, 0xb3, 0x6a, 0x38,
331 0x76, 0x56, 0xea, 0x61, 0xb2, 0x32, 0x70, 0x1c, 0xb6, 0x4d, 0x10, 0x1d, 0xdc,
332 0x92, 0x8e, 0x52, 0xa5, 0x8a, 0x1d, 0xd9, 0x96, 0x5e, 0xc0, 0x62, 0x0b, 0xcf,
333 0x3a, 0x9d, 0x7f, 0xca, 0xbe, 0xa1, 0x41, 0x71, 0x85, 0x7a, 0x8b, 0x5d, 0xa9,
334 0x64, 0xd6, 0x66, 0xb4, 0xe9, 0x8d, 0x0c, 0x28, 0x43, 0xee, 0xa6, 0x64, 0xe8,
335 0x55, 0xf6, 0x1c, 0x19, 0x0b, 0xef, 0x99, 0x25, 0x1e, 0xdc, 0x78, 0xb3, 0xa7,
336 0xaa, 0x0d, 0x14, 0x58, 0x30, 0xe5, 0x37, 0x6a, 0x6d, 0xdb, 0x56, 0xac, 0xa3,
337 0xfc, 0x90, 0x7a, 0xb8, 0x66, 0x9c, 0x0e, 0xf6, 0xb7, 0x64, 0xd1,
338 0x20, 0x01, // SelectedDelegation
339 0x00
340};
341
342const uint8_t InterestWithLinkWrongContentType[] = {
343 0x05, 0xfb, // Interest
344 0x07, 0x14, // Name
345 0x08, 0x5, // NameComponent
346 0x6c, 0x6f, 0x63, 0x61, 0x6c,
347 0x08, 0x3, // NameComponent
348 0x6e, 0x64, 0x6e,
349 0x08, 0x6, // NameComponent
350 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
351 0x0a, 0x4, // Nonce
352 0x1, 0x0, 0x0, 0x00,
353 0x06, 0xda, // Data
354 0x07, 0x14, // Name
355 0x08, 0x05,
356 0x6c, 0x6f, 0x63, 0x61, 0x6c,
357 0x08, 0x03,
358 0x6e, 0x64, 0x6e,
359 0x08, 0x06,
360 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
361 0x14, 0x07, // MetaInfo
362 0x18, 0x01, // ContentType
363 0x00,
364 0x19, 0x02, // FreshnessPeriod
365 0x27, 0x10,
366 0x15, 0x1a, // Content
367 0x1f, 0x0c, // LinkDelegation
368 0x1e, 0x01, // LinkPreference
369 0x0a,
370 0x07, 0x07, // Name
371 0x08, 0x05,
372 0x6c, 0x6f, 0x63, 0x61, 0x6c,
373 0x1f, 0x0a, // LinkDelegation
374 0x1e, 0x01, // LinkPreference
375 0x14,
376 0x07, 0x05, // Name
377 0x08, 0x03,
378 0x6e, 0x64, 0x6e,
379 0x16, 0x1b, // SignatureInfo
380 0x1b, 0x01, // SignatureType
381 0x01,
382 0x1c, 0x16, // KeyLocator
383 0x07, 0x14, // Name
384 0x08, 0x04,
385 0x74, 0x65, 0x73, 0x74,
386 0x08, 0x03,
387 0x6b, 0x65, 0x79,
388 0x08, 0x07,
389 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72,
390 0x17, 0x80, // SignatureValue
391 0x2f, 0xd6, 0xf1, 0x6e, 0x80, 0x6f, 0x10, 0xbe, 0xb1, 0x6f, 0x3e, 0x31, 0xec,
392 0xe3, 0xb9, 0xea, 0x83, 0x30, 0x40, 0x03, 0xfc, 0xa0, 0x13, 0xd9, 0xb3, 0xc6,
393 0x25, 0x16, 0x2d, 0xa6, 0x58, 0x41, 0x69, 0x62, 0x56, 0xd8, 0xb3, 0x6a, 0x38,
394 0x76, 0x56, 0xea, 0x61, 0xb2, 0x32, 0x70, 0x1c, 0xb6, 0x4d, 0x10, 0x1d, 0xdc,
395 0x92, 0x8e, 0x52, 0xa5, 0x8a, 0x1d, 0xd9, 0x96, 0x5e, 0xc0, 0x62, 0x0b, 0xcf,
396 0x3a, 0x9d, 0x7f, 0xca, 0xbe, 0xa1, 0x41, 0x71, 0x85, 0x7a, 0x8b, 0x5d, 0xa9,
397 0x64, 0xd6, 0x66, 0xb4, 0xe9, 0x8d, 0x0c, 0x28, 0x43, 0xee, 0xa6, 0x64, 0xe8,
398 0x55, 0xf6, 0x1c, 0x19, 0x0b, 0xef, 0x99, 0x25, 0x1e, 0xdc, 0x78, 0xb3, 0xa7,
399 0xaa, 0x0d, 0x14, 0x58, 0x30, 0xe5, 0x37, 0x6a, 0x6d, 0xdb, 0x56, 0xac, 0xa3,
400 0xfc, 0x90, 0x7a, 0xb8, 0x66, 0x9c, 0x0e, 0xf6, 0xb7, 0x64, 0xd1,
401 0x20, 0x01, // SelectedDelegation
402 0x00
403};
404
405const uint8_t InterestWithSelectedDelegationButNoLink[] = {
406 0x05, 0x1f, // Interest
407 0x07, 0x14, // Name
408 0x08, 0x5, // NameComponent
409 0x6c, 0x6f, 0x63, 0x61, 0x6c,
410 0x08, 0x3, // NameComponent
411 0x6e, 0x64, 0x6e,
412 0x08, 0x6, // NameComponent
413 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
414 0x0a, 0x4, // Nonce
415 0x1, 0x0, 0x0, 0x00,
416 0x20, 0x01, // SelectedDelegation
417 0x00
418};
419
420const uint8_t InterestWithLinkNotNonIntegerSelectedDelegation[] = {
421 0x05, 0xfb, // Interest
422 0x07, 0x14, // Name
423 0x08, 0x5, // NameComponent
424 0x6c, 0x6f, 0x63, 0x61, 0x6c,
425 0x08, 0x3, // NameComponent
426 0x6e, 0x64, 0x6e,
427 0x08, 0x6, // NameComponent
428 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
429 0x0a, 0x4, // Nonce
430 0x1, 0x0, 0x0, 0x00,
431 0x06, 0xda, // Data
432 0x07, 0x14, // Name
433 0x08, 0x05,
434 0x6c, 0x6f, 0x63, 0x61, 0x6c,
435 0x08, 0x03,
436 0x6e, 0x64, 0x6e,
437 0x08, 0x06,
438 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
439 0x14, 0x07, // MetaInfo
440 0x18, 0x01, // ContentType
441 0x01,
442 0x19, 0x02, // FreshnessPeriod
443 0x27, 0x10,
444 0x15, 0x1a, // Content
445 0x1f, 0x0c, // LinkDelegation
446 0x1e, 0x01, // LinkPreference
447 0x0a,
448 0x07, 0x07, // Name
449 0x08, 0x05,
450 0x6c, 0x6f, 0x63, 0x61, 0x6c,
451 0x1f, 0x0a, // LinkDelegation
452 0x1e, 0x01, // LinkPreference
453 0x14,
454 0x07, 0x05, // Name
455 0x08, 0x03,
456 0x6e, 0x64, 0x6e,
457 0x16, 0x1b, // SignatureInfo
458 0x1b, 0x01, // SignatureType
459 0x01,
460 0x1c, 0x16, // KeyLocator
461 0x07, 0x14, // Name
462 0x08, 0x04,
463 0x74, 0x65, 0x73, 0x74,
464 0x08, 0x03,
465 0x6b, 0x65, 0x79,
466 0x08, 0x07,
467 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72,
468 0x17, 0x78, // SignatureValue
469 0x2f, 0xd6, 0xf1, 0x6e, 0x80, 0x6f, 0x10, 0xbe, 0xb1, 0x6f, 0x3e, 0x31, 0xec,
470 0xe3, 0xb9, 0xea, 0x83, 0x30, 0x40, 0x03, 0xfc, 0xa0, 0x13, 0xd9, 0xb3, 0xc6,
471 0x25, 0x16, 0x2d, 0xa6, 0x58, 0x41, 0x69, 0x62, 0x56, 0xd8, 0xb3, 0x6a, 0x38,
472 0x76, 0x56, 0xea, 0x61, 0xb2, 0x32, 0x70, 0x1c, 0xb6, 0x4d, 0x10, 0x1d, 0xdc,
473 0x92, 0x8e, 0x52, 0xa5, 0x8a, 0x1d, 0xd9, 0x96, 0x5e, 0xc0, 0x62, 0x0b, 0xcf,
474 0x3a, 0x9d, 0x7f, 0xca, 0xbe, 0xa1, 0x41, 0x71, 0x85, 0x7a, 0x8b, 0x5d, 0xa9,
475 0x64, 0xd6, 0x66, 0xb4, 0xe9, 0x8d, 0x0c, 0x28, 0x43, 0xee, 0xa6, 0x64, 0xe8,
476 0x55, 0xf6, 0x1c, 0x19, 0x0b, 0xef, 0x99, 0x25, 0x1e, 0xdc, 0x78, 0xb3, 0xa7,
477 0xaa, 0x0d, 0x14, 0x58, 0x30, 0xe5, 0x37, 0x6a, 0x6d, 0xdb, 0x56, 0xac, 0xa3,
478 0xfc, 0x90, 0x7a, 0xb8, 0x66, 0x9c, 0x0e, 0xf6, 0xb7,
479 0x20, 0x03, // SelectedDelegation
480 0xAA, 0xAA, 0xAA
481};
482
483const uint8_t InterestWithLinkNonDecreasingOrder[] = {
484 0x05, 0xfb, // Interest
485 0x07, 0x14, // Name
486 0x08, 0x5, // NameComponent
487 0x6c, 0x6f, 0x63, 0x61, 0x6c,
488 0x08, 0x3, // NameComponent
489 0x6e, 0x64, 0x6e,
490 0x08, 0x6, // NameComponent
491 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
492 0x0a, 0x4, // Nonce
493 0x1, 0x0, 0x0, 0x00,
494 0x06, 0xda, // Data
495 0x07, 0x14, // Name
496 0x08, 0x05,
497 0x6c, 0x6f, 0x63, 0x61, 0x6c,
498 0x08, 0x03,
499 0x6e, 0x64, 0x6e,
500 0x08, 0x06,
501 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
502 0x14, 0x07, // MetaInfo
503 0x18, 0x01, // ContentType
504 0x01,
505 0x19, 0x02, // FreshnessPeriod
506 0x27, 0x10,
507 0x15, 0x1a, // Content
508 0x1f, 0x0c, // LinkDelegation
509 0x1e, 0x01, // LinkPreference
510 0x14,
511 0x07, 0x07, // Name
512 0x08, 0x05,
513 0x6c, 0x6f, 0x63, 0x61, 0x6c,
514 0x1f, 0x0a, // LinkDelegation
515 0x1e, 0x01, // LinkPreference
516 0x0a,
517 0x07, 0x05, // Name
518 0x08, 0x03,
519 0x6e, 0x64, 0x6e,
520 0x16, 0x1b, // SignatureInfo
521 0x1b, 0x01, // SignatureType
522 0x01,
523 0x1c, 0x16, // KeyLocator
524 0x07, 0x14, // Name
525 0x08, 0x04,
526 0x74, 0x65, 0x73, 0x74,
527 0x08, 0x03,
528 0x6b, 0x65, 0x79,
529 0x08, 0x07,
530 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72,
531 0x17, 0x80, // SignatureValue
532 0x2f, 0xd6, 0xf1, 0x6e, 0x80, 0x6f, 0x10, 0xbe, 0xb1, 0x6f, 0x3e, 0x31, 0xec,
533 0xe3, 0xb9, 0xea, 0x83, 0x30, 0x40, 0x03, 0xfc, 0xa0, 0x13, 0xd9, 0xb3, 0xc6,
534 0x25, 0x16, 0x2d, 0xa6, 0x58, 0x41, 0x69, 0x62, 0x56, 0xd8, 0xb3, 0x6a, 0x38,
535 0x76, 0x56, 0xea, 0x61, 0xb2, 0x32, 0x70, 0x1c, 0xb6, 0x4d, 0x10, 0x1d, 0xdc,
536 0x92, 0x8e, 0x52, 0xa5, 0x8a, 0x1d, 0xd9, 0x96, 0x5e, 0xc0, 0x62, 0x0b, 0xcf,
537 0x3a, 0x9d, 0x7f, 0xca, 0xbe, 0xa1, 0x41, 0x71, 0x85, 0x7a, 0x8b, 0x5d, 0xa9,
538 0x64, 0xd6, 0x66, 0xb4, 0xe9, 0x8d, 0x0c, 0x28, 0x43, 0xee, 0xa6, 0x64, 0xe8,
539 0x55, 0xf6, 0x1c, 0x19, 0x0b, 0xef, 0x99, 0x25, 0x1e, 0xdc, 0x78, 0xb3, 0xa7,
540 0xaa, 0x0d, 0x14, 0x58, 0x30, 0xe5, 0x37, 0x6a, 0x6d, 0xdb, 0x56, 0xac, 0xa3,
541 0xfc, 0x90, 0x7a, 0xb8, 0x66, 0x9c, 0x0e, 0xf6, 0xb7, 0x64, 0xd1,
542 0x20, 0x01, // SelectedDelegation
543 0x01
544};
545
Alexander Afanasyevff2d08f2014-04-07 18:28:25 -0700546BOOST_AUTO_TEST_CASE(InterestEqualityChecks)
547{
548 // Interest ::= INTEREST-TYPE TLV-LENGTH
549 // Name
550 // Selectors?
551 // Nonce
Alexander Afanasyevff2d08f2014-04-07 18:28:25 -0700552 // InterestLifetime?
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700553 // Link?
554 // SelectedDelegation?
Alexander Afanasyevff2d08f2014-04-07 18:28:25 -0700555
556 Interest a;
557 Interest b;
558
559 // if nonce is not set, it will be set to a random value
560 a.setNonce(1);
561 b.setNonce(1);
562
563 BOOST_CHECK_EQUAL(a == b, true);
564 BOOST_CHECK_EQUAL(a != b, false);
565
566 // check comparison on Name
567 a.setName("ndn:/A");
568 BOOST_CHECK_EQUAL(a == b, false);
569 BOOST_CHECK_EQUAL(a != b, true);
570
571 b.setName("ndn:/B");
572 BOOST_CHECK_EQUAL(a == b, false);
573 BOOST_CHECK_EQUAL(a != b, true);
574
575 b.setName("ndn:/A");
576 BOOST_CHECK_EQUAL(a == b, true);
577 BOOST_CHECK_EQUAL(a != b, false);
578
579 // check comparison on Selectors
580 a.setChildSelector(1);
581 BOOST_CHECK_EQUAL(a == b, false);
582 BOOST_CHECK_EQUAL(a != b, true);
583
584 b.setChildSelector(1);
585 BOOST_CHECK_EQUAL(a == b, true);
586 BOOST_CHECK_EQUAL(a != b, false);
587
588 // check comparison on Nonce
589 a.setNonce(100);
590 BOOST_CHECK_EQUAL(a == b, false);
591 BOOST_CHECK_EQUAL(a != b, true);
592
593 b.setNonce(100);
594 BOOST_CHECK_EQUAL(a == b, true);
595 BOOST_CHECK_EQUAL(a != b, false);
596
Alexander Afanasyevff2d08f2014-04-07 18:28:25 -0700597 // check comparison on InterestLifetime
598 a.setInterestLifetime(time::seconds(10));
599 BOOST_CHECK_EQUAL(a == b, false);
600 BOOST_CHECK_EQUAL(a != b, true);
601
602 b.setInterestLifetime(time::seconds(10));
603 BOOST_CHECK_EQUAL(a == b, true);
604 BOOST_CHECK_EQUAL(a != b, false);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700605
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700606 a.setLink(Block(LINK, sizeof(LINK)));
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700607 BOOST_CHECK_EQUAL(a == b, false);
608 BOOST_CHECK_EQUAL(a != b, true);
609
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700610 b.setLink(Block(LINK, sizeof(LINK)));
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700611 BOOST_CHECK_EQUAL(a == b, true);
612 BOOST_CHECK_EQUAL(a != b, false);
613
614 // Selected Delegation
615 BOOST_CHECK_EQUAL(a.hasSelectedDelegation(), false);
616 BOOST_CHECK_EQUAL(b.hasSelectedDelegation(), false);
617
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700618 a.setSelectedDelegation(Name("/local"));
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700619 BOOST_CHECK_EQUAL(a == b, false);
620 BOOST_CHECK_EQUAL(a != b, true);
621
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700622 b.setSelectedDelegation(Name("/local"));
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700623 BOOST_CHECK_EQUAL(a == b, true);
624 BOOST_CHECK_EQUAL(a != b, false);
Alexander Afanasyevff2d08f2014-04-07 18:28:25 -0700625}
626
627BOOST_AUTO_TEST_CASE(SelectorsEqualityChecks)
628{
629 // Selectors ::= SELECTORS-TYPE TLV-LENGTH
630 // MinSuffixComponents?
631 // MaxSuffixComponents?
632 // PublisherPublicKeyLocator?
633 // Exclude?
634 // ChildSelector?
635 // MustBeFresh?
636
637 Selectors a;
638 Selectors b;
639 BOOST_CHECK_EQUAL(a == b, true);
640 BOOST_CHECK_EQUAL(a != b, false);
641
642 // MinSuffixComponents
643 a.setMinSuffixComponents(1);
644 BOOST_CHECK_EQUAL(a == b, false);
645 BOOST_CHECK_EQUAL(a != b, true);
646
647 b.setMinSuffixComponents(2);
648 BOOST_CHECK_EQUAL(a == b, false);
649 BOOST_CHECK_EQUAL(a != b, true);
650
651 b.setMinSuffixComponents(1);
652 BOOST_CHECK_EQUAL(a == b, true);
653 BOOST_CHECK_EQUAL(a != b, false);
654
655 // MaxSuffixComponents
656 a.setMaxSuffixComponents(10);
657 BOOST_CHECK_EQUAL(a == b, false);
658 BOOST_CHECK_EQUAL(a != b, true);
659
660 b.setMaxSuffixComponents(10);
661 BOOST_CHECK_EQUAL(a == b, true);
662 BOOST_CHECK_EQUAL(a != b, false);
663
664 // PublisherPublicKeyLocator
665 a.setPublisherPublicKeyLocator(KeyLocator("/key/Locator/name"));
666 BOOST_CHECK_EQUAL(a == b, false);
667 BOOST_CHECK_EQUAL(a != b, true);
668
669 b.setPublisherPublicKeyLocator(KeyLocator("/key/Locator/name"));
670 BOOST_CHECK_EQUAL(a == b, true);
671 BOOST_CHECK_EQUAL(a != b, false);
672
673 // Exclude
674 a.setExclude(Exclude().excludeOne(name::Component("exclude")));
675 BOOST_CHECK_EQUAL(a == b, false);
676 BOOST_CHECK_EQUAL(a != b, true);
677
678 b.setExclude(Exclude().excludeOne(name::Component("exclude")));
679 BOOST_CHECK_EQUAL(a == b, true);
680 BOOST_CHECK_EQUAL(a != b, false);
681
682 // ChildSelector
683 a.setChildSelector(1);
684 BOOST_CHECK_EQUAL(a == b, false);
685 BOOST_CHECK_EQUAL(a != b, true);
686
687 b.setChildSelector(1);
688 BOOST_CHECK_EQUAL(a == b, true);
689 BOOST_CHECK_EQUAL(a != b, false);
690
691 // MustBeFresh
692 a.setMustBeFresh(true);
693 BOOST_CHECK_EQUAL(a == b, false);
694 BOOST_CHECK_EQUAL(a != b, true);
695
696 b.setMustBeFresh(true);
697 BOOST_CHECK_EQUAL(a == b, true);
698 BOOST_CHECK_EQUAL(a != b, false);
699}
700
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700701BOOST_AUTO_TEST_CASE(LinkObject)
702{
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700703 Link link1("test", {{100, "/test3"}, {20, "/test2"}, {10, "/test1"}});
Alexander Afanasyeve4f8c3b2016-06-23 16:03:48 -0700704 m_keyChain.sign(link1);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700705 Block wire = link1.wireEncode();
706
707 Interest a;
708 BOOST_REQUIRE_NO_THROW(a.setLink(wire));
709
710 BOOST_REQUIRE_NO_THROW(a.getLink());
711
712 Link link2 = a.getLink();
713 Name name = link2.getName();
714 BOOST_CHECK_EQUAL(Name("test"), name);
715 BOOST_CHECK_EQUAL(a.hasLink(), true);
716 Link::DelegationSet delegations;
717 delegations = link2.getDelegations();
718
719 auto i = delegations.begin();
720 BOOST_CHECK_EQUAL(std::get<0>(*i), 10);
721 BOOST_CHECK_EQUAL(std::get<1>(*i), Name("test1"));
722 ++i;
723 BOOST_CHECK_EQUAL(std::get<0>(*i), 20);
724 BOOST_CHECK_EQUAL(std::get<1>(*i), Name("test2"));
725 ++i;
726 BOOST_CHECK_EQUAL(std::get<0>(*i), 100);
727 BOOST_CHECK_EQUAL(std::get<1>(*i), Name("test3"));
728
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700729 a.setLink(Block(LINK, sizeof(LINK)));
730 BOOST_CHECK_EQUAL(a.getLink().getDelegations().size(), 2);
731
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700732 a.unsetLink();
733 BOOST_CHECK_EQUAL(a.hasLink(), false);
734}
735
736BOOST_AUTO_TEST_CASE(SelectedDelegationChecks)
737{
738 Link link("test", {{10, "/test1"}, {20, "/test2"}, {100, "/test3"}});
Alexander Afanasyeve4f8c3b2016-06-23 16:03:48 -0700739 m_keyChain.sign(link);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700740 Block wire = link.wireEncode();
741
742 Interest a;
743 a.setLink(wire);
744 BOOST_CHECK_EQUAL(a.hasSelectedDelegation(), false);
745
746 BOOST_REQUIRE_NO_THROW(a.setSelectedDelegation(Name("test2")));
747 BOOST_CHECK_EQUAL(a.getSelectedDelegation(), Name("test2"));
748
749 BOOST_REQUIRE_NO_THROW(a.setSelectedDelegation(uint32_t(2)));
750 BOOST_CHECK_EQUAL(a.getSelectedDelegation(), Name("test3"));
751
752 a.unsetSelectedDelegation();
753 BOOST_CHECK_EQUAL(a.hasSelectedDelegation(), false);
754}
755
756BOOST_AUTO_TEST_CASE(EncodeDecodeWithLink)
757{
758 Link link1("test", {{10, "/test1"}, {20, "/test2"}, {100, "/test3"}});
Alexander Afanasyeve4f8c3b2016-06-23 16:03:48 -0700759 m_keyChain.sign(link1);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700760 Block wire = link1.wireEncode();
761
762 Interest a;
763 a.setName("/Test/Encode/Decode/With/Link");
764 a.setChildSelector(1);
765 a.setNonce(100);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700766 a.setInterestLifetime(time::seconds(10));
767 a.setLink(wire);
768
769 Block interestBlock = a.wireEncode();
770 Interest b(interestBlock);
771
772 BOOST_CHECK_EQUAL(a == b, true);
773
774 Link link2 = b.getLink();
775 Link::DelegationSet delegations;
776 delegations = link2.getDelegations();
777
778 auto i = delegations.begin();
779 BOOST_CHECK_EQUAL(std::get<0>(*i), 10);
780 BOOST_CHECK_EQUAL(std::get<1>(*i), Name("test1"));
781 ++i;
782 BOOST_CHECK_EQUAL(std::get<0>(*i), 20);
783 BOOST_CHECK_EQUAL(std::get<1>(*i), Name("test2"));
784 ++i;
785 BOOST_CHECK_EQUAL(std::get<0>(*i), 100);
786 BOOST_CHECK_EQUAL(std::get<1>(*i), Name("test3"));
787
788}
789
790BOOST_AUTO_TEST_CASE(DecodeInterestWithLink)
791{
792 Block interestBlock(InterestWithLink, sizeof(InterestWithLink));
793
794 ndn::Interest i;
795 BOOST_REQUIRE_NO_THROW(i.wireDecode(interestBlock));
796 Link link = i.getLink();
797 BOOST_CHECK_EQUAL(link.getName(), Name("/local/ndn/prefix"));
798 Link::DelegationSet delegations = link.getDelegations();
799
800 auto it = delegations.begin();
801 BOOST_CHECK_EQUAL(std::get<0>(*it), 10);
802 BOOST_CHECK_EQUAL(std::get<1>(*it), Name("local"));
803 ++it;
804 BOOST_CHECK_EQUAL(std::get<0>(*it), 20);
805 BOOST_CHECK_EQUAL(std::get<1>(*it), Name("ndn"));
806
807 BOOST_REQUIRE_NO_THROW(i.getSelectedDelegation());
808 BOOST_CHECK_EQUAL(i.getSelectedDelegation(), Name("local"));
809}
810
811BOOST_AUTO_TEST_CASE(DecodeInterestWithLinkNonDecreasingOrder)
812{
813 Block interestBlock(InterestWithLinkNonDecreasingOrder,
814 sizeof(InterestWithLinkNonDecreasingOrder));
815
816 ndn::Interest i;
817 BOOST_REQUIRE_NO_THROW(i.wireDecode(interestBlock));
818 BOOST_REQUIRE_NO_THROW(i.getSelectedDelegation());
819 BOOST_CHECK_EQUAL(i.getSelectedDelegation(), Name("ndn"));
820}
821
822BOOST_AUTO_TEST_CASE(LinkObjectMissingContentType)
823{
824 Block interestBlock(InterestWithLinkMissingContentType,
825 sizeof(InterestWithLinkMissingContentType));
826
827 ndn::Interest i;
828 BOOST_REQUIRE_NO_THROW(i.wireDecode(interestBlock));
829 BOOST_REQUIRE_THROW(i.getLink(), Link::Error);
830}
831
832BOOST_AUTO_TEST_CASE(LinkObjectNoMetaInfo)
833{
834 Block interestBlock(InterestWithLinkNoMetaInfo,
835 sizeof(InterestWithLinkNoMetaInfo));
836
837 ndn::Interest i;
838 BOOST_REQUIRE_NO_THROW(i.wireDecode(interestBlock));
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700839 BOOST_CHECK_THROW(i.getLink(), tlv::Error);
840 BOOST_CHECK_THROW(i.getLink(), tlv::Error);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700841}
842
843BOOST_AUTO_TEST_CASE(LinkObjectWrongContentType)
844{
845 Block interestBlock(InterestWithLinkWrongContentType,
846 sizeof(InterestWithLinkWrongContentType));
847
848 ndn::Interest i;
849 BOOST_REQUIRE_NO_THROW(i.wireDecode(interestBlock));
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700850 BOOST_CHECK_THROW(i.getLink(), Link::Error);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700851}
852
853BOOST_AUTO_TEST_CASE(InterestContainingSelectedDelegationButNoLink)
854{
855 Block interestBlock(InterestWithSelectedDelegationButNoLink,
856 sizeof(InterestWithSelectedDelegationButNoLink));
857
858 ndn::Interest i;
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700859 BOOST_CHECK_THROW(i.wireDecode(interestBlock), Interest::Error);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700860}
861
862BOOST_AUTO_TEST_CASE(SelectedDelegationIsNotNonNegativeInteger)
863{
864 Block interestBlock(InterestWithLinkNotNonIntegerSelectedDelegation,
865 sizeof(InterestWithLinkNotNonIntegerSelectedDelegation));
866
867 ndn::Interest i;
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700868 BOOST_CHECK_THROW(i.wireDecode(interestBlock), tlv::Error);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700869}
870
871BOOST_AUTO_TEST_CASE(SelectedDelegationEqualToDelegationCount)
872{
873 Link link1("test", {{10, "/test1"}, {20, "/test2"}, {100, "/test3"}});
Alexander Afanasyeve4f8c3b2016-06-23 16:03:48 -0700874 m_keyChain.sign(link1);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700875 Block wire = link1.wireEncode();
876
877 Interest a;
878 a.setName("/Test/Encode/Decode/With/Link");
879 a.setChildSelector(1);
880 a.setNonce(100);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700881 a.setInterestLifetime(time::seconds(10));
882 a.setLink(wire);
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700883 BOOST_CHECK_THROW(a.setSelectedDelegation(3), Interest::Error);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700884}
885
886BOOST_AUTO_TEST_CASE(SelectedDelegationGreaterThanDelegationCount)
887{
888 Link link1("test", {{10, "/test1"}, {20, "/test2"}, {100, "/test3"}});
Alexander Afanasyeve4f8c3b2016-06-23 16:03:48 -0700889 m_keyChain.sign(link1);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700890 Block wire = link1.wireEncode();
891
892 Interest a;
893 a.setName("/Test/Encode/Decode/With/Link");
894 a.setChildSelector(1);
895 a.setNonce(100);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700896 a.setInterestLifetime(time::seconds(10));
897 a.setLink(wire);
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700898 BOOST_CHECK_THROW(a.setSelectedDelegation(4), Interest::Error);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700899}
900
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700901BOOST_AUTO_TEST_CASE(Decode)
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800902{
903 Block interestBlock(Interest1, sizeof(Interest1));
Alexander Afanasyev636e9f12014-01-07 12:01:03 -0800904
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800905 ndn::Interest i;
Alexander Afanasyev049f8f72013-12-26 19:07:15 -0800906 BOOST_REQUIRE_NO_THROW(i.wireDecode(interestBlock));
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800907
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700908 BOOST_CHECK_EQUAL(i.getName().toUri(), "/local/ndn/prefix");
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700909 BOOST_CHECK_EQUAL(i.getInterestLifetime(), time::milliseconds(1000));
910 BOOST_CHECK_EQUAL(i.getMinSuffixComponents(), 1);
911 BOOST_CHECK_EQUAL(i.getMaxSuffixComponents(), 1);
912 BOOST_CHECK_EQUAL(i.getPublisherPublicKeyLocator().getType(),
913 static_cast<uint32_t>(KeyLocator::KeyLocator_Name));
914 BOOST_CHECK_EQUAL(i.getPublisherPublicKeyLocator().getName(), "ndn:/test/key/locator");
915 BOOST_CHECK_EQUAL(i.getChildSelector(), 1);
916 BOOST_CHECK_EQUAL(i.getMustBeFresh(), false);
917 BOOST_CHECK_EQUAL(i.getExclude().toUri(), "alex,xxxx,*,yyyy");
918 BOOST_CHECK_EQUAL(i.getNonce(), 1U);
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700919 BOOST_CHECK_EQUAL(i.hasLink(), false);
920 BOOST_CHECK_EQUAL(i.hasSelectedDelegation(), false);
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800921}
922
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700923BOOST_AUTO_TEST_CASE(DecodeFromStream)
Alexander Afanasyev6835ad82014-02-12 10:07:20 -0800924{
Alexander Afanasyevdfa52c42014-04-24 21:10:11 -0700925 boost::iostreams::stream<boost::iostreams::array_source> is(
926 reinterpret_cast<const char *>(Interest1), sizeof(Interest1));
Junxiao Shib332e782014-03-31 14:23:46 -0700927
Alexander Afanasyev9c578182014-05-14 17:28:28 -0700928 Block interestBlock = Block::fromStream(is);
Alexander Afanasyev6835ad82014-02-12 10:07:20 -0800929
930 ndn::Interest i;
931 BOOST_REQUIRE_NO_THROW(i.wireDecode(interestBlock));
932
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700933 BOOST_CHECK_EQUAL(i.getName().toUri(), "/local/ndn/prefix");
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700934 BOOST_CHECK_EQUAL(i.getInterestLifetime(), time::milliseconds(1000));
935 BOOST_CHECK_EQUAL(i.getMinSuffixComponents(), 1);
936 BOOST_CHECK_EQUAL(i.getMaxSuffixComponents(), 1);
937 BOOST_CHECK_EQUAL(i.getChildSelector(), 1);
938 BOOST_CHECK_EQUAL(i.getMustBeFresh(), false);
939 BOOST_CHECK_EQUAL(i.getExclude().toUri(), "alex,xxxx,*,yyyy");
940 BOOST_CHECK_EQUAL(i.getNonce(), 1U);
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700941 BOOST_CHECK_EQUAL(i.hasLink(), false);
942 BOOST_CHECK_EQUAL(i.hasSelectedDelegation(), false);
Alexander Afanasyev6835ad82014-02-12 10:07:20 -0800943}
944
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700945BOOST_AUTO_TEST_CASE(Encode)
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800946{
947 ndn::Interest i(ndn::Name("/local/ndn/prefix"));
Alexander Afanasyevaa0e7da2014-03-17 14:37:33 -0700948 i.setInterestLifetime(time::milliseconds(1000));
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800949 i.setMinSuffixComponents(1);
950 i.setMaxSuffixComponents(1);
Junxiao Shib332e782014-03-31 14:23:46 -0700951 i.setPublisherPublicKeyLocator(KeyLocator("ndn:/test/key/locator"));
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800952 i.setChildSelector(1);
953 i.setMustBeFresh(false);
Alexander Afanasyevc348f832014-02-17 16:35:17 -0800954 Exclude exclude;
955 exclude
Alexander Afanasyev52eb20d2014-02-06 18:25:54 -0800956 .excludeOne(name::Component("alex"))
957 .excludeRange(name::Component("xxxx"), name::Component("yyyy"));
Alexander Afanasyevc348f832014-02-17 16:35:17 -0800958 i.setExclude(exclude);
Alexander Afanasyev840139f2013-12-28 15:02:50 -0800959 i.setNonce(1);
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800960
Alexander Afanasyeve881e932014-06-08 14:47:03 +0300961 BOOST_CHECK_EQUAL(i.hasWire(), false);
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800962 const Block &wire = i.wireEncode();
Alexander Afanasyeve881e932014-06-08 14:47:03 +0300963 BOOST_CHECK_EQUAL(i.hasWire(), true);
Alexander Afanasyev809805d2014-02-17 17:20:33 -0800964
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700965 BOOST_CHECK_EQUAL_COLLECTIONS(Interest1, Interest1 + sizeof(Interest1),
Alexander Afanasyev6d48bc12014-02-18 00:10:51 -0800966 wire.begin(), wire.end());
Alexander Afanasyev6d48bc12014-02-18 00:10:51 -0800967
Alexander Afanasyeve881e932014-06-08 14:47:03 +0300968 const uint8_t* originalWire = wire.wire();
969 i.setNonce(2);
970 BOOST_CHECK_EQUAL(i.hasWire(), true);
971 BOOST_CHECK_EQUAL(originalWire, i.wireEncode().wire());
972 BOOST_CHECK_EQUAL(i.hasWire(), true);
973
974 BOOST_CHECK_EQUAL_COLLECTIONS(Interest2, Interest2 + sizeof(Interest2),
975 wire.begin(), wire.end());
Alexander Afanasyeva0c5f832014-06-19 13:27:56 -0700976
977 std::ostringstream strStream;
978 BOOST_CHECK_NO_THROW(strStream << i);
979
980 BOOST_CHECK_EQUAL(strStream.str(),
981 "/local/ndn/prefix?"
982 "ndn.MinSuffixComponents=1&ndn.MaxSuffixComponents=1&"
Alexander Afanasyev117f5ef2015-06-03 15:07:24 -0700983 "ndn.ChildSelector=1&"
Alexander Afanasyeva0c5f832014-06-19 13:27:56 -0700984 "ndn.InterestLifetime=1000&"
985 "ndn.Nonce=2&ndn.Exclude=alex,xxxx,*,yyyy");
Alexander Afanasyevc3932172014-07-10 18:53:56 -0700986
987 i.refreshNonce();
988 BOOST_CHECK_EQUAL(i.hasWire(), true);
989 BOOST_CHECK_EQUAL(originalWire, i.wireEncode().wire());
990 BOOST_CHECK_NE(i.getNonce(), 2);
Alexander Afanasyeve881e932014-06-08 14:47:03 +0300991}
Alexander Afanasyev6d48bc12014-02-18 00:10:51 -0800992
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700993BOOST_AUTO_TEST_CASE(DecodeEncode) // this test case to ensure that wireDecode resets all the fields
994{
995 Interest i1;
996 i1.setName("/test");
997 i1.setMinSuffixComponents(100);
998 i1.setNonce(10);
999 i1.setInterestLifetime(time::seconds(10));
1000 i1.setLink(Block(LINK, sizeof(LINK)));
1001 i1.setSelectedDelegation(0);
1002
1003 Interest i2(i1.wireEncode());
1004
1005 BOOST_CHECK_EQUAL(i2.getName().toUri(), "/test");
1006 BOOST_CHECK_EQUAL(i2.getInterestLifetime(), time::seconds(10));
1007 BOOST_CHECK_EQUAL(i2.getMinSuffixComponents(), 100);
1008 BOOST_CHECK_EQUAL(i2.getNonce(), 10);
1009 BOOST_CHECK_EQUAL(i2.hasLink(), true);
1010 BOOST_CHECK_EQUAL(i2.hasSelectedDelegation(), true);
1011
1012 i2.wireDecode(Interest().wireEncode());
1013
1014 BOOST_CHECK_EQUAL(i2.getName().toUri(), "/");
1015 BOOST_CHECK_EQUAL(i2.getInterestLifetime(), DEFAULT_INTEREST_LIFETIME);
1016 BOOST_CHECK_EQUAL(i2.getMinSuffixComponents(), -1);
1017 BOOST_WARN_NE(i2.getNonce(), 10);
1018 BOOST_CHECK_EQUAL(i2.hasLink(), false);
1019 BOOST_CHECK_EQUAL(i2.hasSelectedDelegation(), false);
1020}
1021
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001022BOOST_AUTO_TEST_CASE(MatchesData)
1023{
1024 Interest interest;
1025 interest.setName("ndn:/A")
1026 .setMinSuffixComponents(2)
1027 .setMaxSuffixComponents(2)
1028 .setPublisherPublicKeyLocator(KeyLocator("ndn:/B"))
Junxiao Shidf4b24e2016-07-14 21:41:43 +00001029 .setExclude(Exclude().excludeAfter(name::Component("J")));
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001030
1031 Data data("ndn:/A/D");
Yingdi Yu4a557052014-07-09 16:40:37 -07001032 SignatureSha256WithRsa signature(KeyLocator("ndn:/B"));
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001033 data.setSignature(signature);
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001034 data.wireEncode();
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001035 BOOST_CHECK_EQUAL(interest.matchesData(data), true);
1036
1037 Data data1 = data;
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001038 data1.setName("ndn:/A"); // violates MinSuffixComponents
1039 data1.wireEncode();
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001040 BOOST_CHECK_EQUAL(interest.matchesData(data1), false);
1041
Junxiao Shidf4b24e2016-07-14 21:41:43 +00001042 Interest interest1 = interest;
1043 interest1.setMinSuffixComponents(1);
1044 BOOST_CHECK_EQUAL(interest1.matchesData(data1), true);
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001045
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001046 Data data2 = data;
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001047 data2.setName("ndn:/A/E/F"); // violates MaxSuffixComponents
1048 data2.wireEncode();
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001049 BOOST_CHECK_EQUAL(interest.matchesData(data2), false);
1050
Junxiao Shidf4b24e2016-07-14 21:41:43 +00001051 Interest interest2 = interest;
1052 interest2.setMaxSuffixComponents(3);
1053 BOOST_CHECK_EQUAL(interest2.matchesData(data2), true);
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001054
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001055 Data data3 = data;
Yingdi Yu4a557052014-07-09 16:40:37 -07001056 SignatureSha256WithRsa signature3(KeyLocator("ndn:/G")); // violates PublisherPublicKeyLocator
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001057 data3.setSignature(signature3);
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001058 data3.wireEncode();
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001059 BOOST_CHECK_EQUAL(interest.matchesData(data3), false);
1060
Junxiao Shidf4b24e2016-07-14 21:41:43 +00001061 Interest interest3 = interest;
1062 interest3.setPublisherPublicKeyLocator(KeyLocator("ndn:/G"));
1063 BOOST_CHECK_EQUAL(interest3.matchesData(data3), true);
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001064
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001065 Data data4 = data;
Yingdi Yubf6a2812014-06-17 15:32:11 -07001066 DigestSha256 signature4; // violates PublisherPublicKeyLocator
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001067 data4.setSignature(signature4);
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001068 data4.wireEncode();
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001069 BOOST_CHECK_EQUAL(interest.matchesData(data4), false);
1070
Junxiao Shidf4b24e2016-07-14 21:41:43 +00001071 Interest interest4 = interest;
1072 interest4.setPublisherPublicKeyLocator(KeyLocator());
1073 BOOST_CHECK_EQUAL(interest4.matchesData(data4), true);
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001074
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001075 Data data5 = data;
Junxiao Shidf4b24e2016-07-14 21:41:43 +00001076 data5.setName("ndn:/A/J"); // violates Exclude
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001077 data5.wireEncode();
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001078 BOOST_CHECK_EQUAL(interest.matchesData(data5), false);
1079
Junxiao Shidf4b24e2016-07-14 21:41:43 +00001080 Interest interest5 = interest;
1081 interest5.setExclude(Exclude().excludeAfter(name::Component("K")));
1082 BOOST_CHECK_EQUAL(interest5.matchesData(data5), true);
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001083
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001084 Data data6 = data;
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001085 data6.setName("ndn:/H/I"); // violates Name
1086 data6.wireEncode();
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001087 BOOST_CHECK_EQUAL(interest.matchesData(data6), false);
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001088
1089 Data data7 = data;
1090 data7.setName("ndn:/A/B");
1091 data7.wireEncode();
1092
Junxiao Shidf4b24e2016-07-14 21:41:43 +00001093 Interest interest7("/A/B/sha256digest=D548DECEFC4B880720DC9257A8D815E9DF4465E63742EE55C29133055DAA67C2");
1094 BOOST_CHECK_EQUAL(interest7.matchesData(data7), true);
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001095
Junxiao Shidf4b24e2016-07-14 21:41:43 +00001096 Interest interest7b("/A/B/sha256digest=0000000000000000000000000000000000000000000000000000000000000000");
1097 BOOST_CHECK_EQUAL(interest7b.matchesData(data7), false); // violates implicit digest
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001098}
1099
Alexander Afanasyev1013fd02017-01-03 13:19:03 -08001100BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES(MatchesInterest, 1)
1101BOOST_AUTO_TEST_CASE(MatchesInterest)
1102{
1103 Interest interest;
1104 interest
1105 .setName("ndn:/A")
1106 .setMinSuffixComponents(2)
1107 .setMaxSuffixComponents(2)
1108 .setPublisherPublicKeyLocator(KeyLocator("ndn:/B"))
1109 .setExclude(Exclude().excludeAfter(name::Component("J")))
1110 .setNonce(10)
1111 .setInterestLifetime(time::seconds(5));
1112
1113 Link link("/A/LINK", {{10, "/test1"}, {20, "/test2"}, {100, "/test3"}});
1114 m_keyChain.sign(link);
1115 interest.setLink(link.wireEncode());
1116
1117 Interest other;
1118 BOOST_CHECK_EQUAL(interest.matchesInterest(other), false);
1119
1120 other.setName(interest.getName());
1121 BOOST_CHECK_EQUAL(interest.matchesInterest(other), false);
1122
1123 // TODO: will match until #3162 implemented
1124 other.setSelectors(interest.getSelectors());
1125 BOOST_CHECK_EQUAL(interest.matchesInterest(other), false);
1126
1127 other.setLink(interest.getLink().wireEncode());
1128 BOOST_CHECK_EQUAL(interest.matchesInterest(other), true);
1129
1130 other.setNonce(200);
1131 BOOST_CHECK_EQUAL(interest.matchesInterest(other), true);
1132
1133 other.setInterestLifetime(time::hours(5));
1134 BOOST_CHECK_EQUAL(interest.matchesInterest(other), true);
1135
1136 other.setSelectedDelegation(0);
1137 BOOST_CHECK_EQUAL(interest.matchesInterest(other), true);
1138}
1139
Alexander Afanasyev90164962014-03-06 08:29:59 +00001140BOOST_AUTO_TEST_CASE(InterestFilterMatching)
1141{
1142 BOOST_CHECK_EQUAL(InterestFilter("/a").doesMatch("/a/b"), true);
1143 BOOST_CHECK_EQUAL(InterestFilter("/a/b").doesMatch("/a/b"), true);
1144 BOOST_CHECK_EQUAL(InterestFilter("/a/b/c").doesMatch("/a/b"), false);
1145
1146 BOOST_CHECK_EQUAL(InterestFilter("/a", "<b>").doesMatch("/a/b"), true);
1147 BOOST_CHECK_EQUAL(InterestFilter("/a/b", "<b>").doesMatch("/a/b"), false);
1148
1149 BOOST_CHECK_EQUAL(InterestFilter("/a/b", "<b>").doesMatch("/a/b/c/b"), false);
1150 BOOST_CHECK_EQUAL(InterestFilter("/a/b", "<>*<b>").doesMatch("/a/b/c/b"), true);
1151
1152 BOOST_CHECK_EQUAL(InterestFilter("/a", "<b>").doesMatch("/a/b/c/d"), false);
1153 BOOST_CHECK_EQUAL(InterestFilter("/a", "<b><>*").doesMatch("/a/b/c/d"), true);
1154 BOOST_CHECK_EQUAL(InterestFilter("/a", "<b><>*").doesMatch("/a/b"), true);
1155 BOOST_CHECK_EQUAL(InterestFilter("/a", "<b><>+").doesMatch("/a/b"), false);
1156 BOOST_CHECK_EQUAL(InterestFilter("/a", "<b><>+").doesMatch("/a/b/c"), true);
1157}
1158
Davide Pesaventoeee3e822016-11-26 19:19:34 +01001159BOOST_AUTO_TEST_SUITE_END() // TestInterest
Alexander Afanasyev0abb2da2014-01-30 18:07:57 -08001160
Alexander Afanasyev90164962014-03-06 08:29:59 +00001161} // namespace tests
Alexander Afanasyev0abb2da2014-01-30 18:07:57 -08001162} // namespace ndn