blob: 6b2f2cf241c51e8b1d5ba063b2c50d20870ef3ee [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[] = {
Junxiao Shid21abd32017-06-30 02:56:40 +0000224 0x05, 0xf5, // Interest
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700225 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,
Junxiao Shid21abd32017-06-30 02:56:40 +0000279 0xfc, 0x90, 0x7a, 0xb8, 0x66, 0x9c, 0x0e, 0xf6, 0xb7, 0x64, 0xd1
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700280};
281
282const uint8_t InterestWithLinkNoMetaInfo[] = {
Junxiao Shid21abd32017-06-30 02:56:40 +0000283 0x05, 0xef, // Interest
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700284 0x07, 0x14, // Name
285 0x08, 0x5, // NameComponent
286 0x6c, 0x6f, 0x63, 0x61, 0x6c,
287 0x08, 0x3, // NameComponent
288 0x6e, 0x64, 0x6e,
289 0x08, 0x6, // NameComponent
290 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
291 0x0a, 0x4, // Nonce
292 0x1, 0x0, 0x0, 0x00,
293 0x06, 0xd1, // Data
294 0x07, 0x14, // Name
295 0x08, 0x05,
296 0x6c, 0x6f, 0x63, 0x61, 0x6c,
297 0x08, 0x03,
298 0x6e, 0x64, 0x6e,
299 0x08, 0x06,
300 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
301 0x15, 0x1a, // Content
302 0x1f, 0x0c, // LinkDelegation
303 0x1e, 0x01, // LinkPreference
304 0x0a,
305 0x07, 0x07, // Name
306 0x08, 0x05,
307 0x6c, 0x6f, 0x63, 0x61, 0x6c,
308 0x1f, 0x0a, // LinkPreference
309 0x1e, 0x01, // LinkPreference
310 0x14,
311 0x07, 0x05, // Name
312 0x08, 0x03,
313 0x6e, 0x64, 0x6e,
314 0x16, 0x1b, // SignatureInfo
315 0x1b, 0x01, // SignatureType
316 0x01,
317 0x1c, 0x16, // KeyLocator
318 0x07, 0x14, // Name
319 0x08, 0x04,
320 0x74, 0x65, 0x73, 0x74,
321 0x08, 0x03,
322 0x6b, 0x65, 0x79,
323 0x08, 0x07,
324 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72,
325 0x17, 0x80, // SignatureValue
326 0x2f, 0xd6, 0xf1, 0x6e, 0x80, 0x6f, 0x10, 0xbe, 0xb1, 0x6f, 0x3e, 0x31, 0xec,
327 0xe3, 0xb9, 0xea, 0x83, 0x30, 0x40, 0x03, 0xfc, 0xa0, 0x13, 0xd9, 0xb3, 0xc6,
328 0x25, 0x16, 0x2d, 0xa6, 0x58, 0x41, 0x69, 0x62, 0x56, 0xd8, 0xb3, 0x6a, 0x38,
329 0x76, 0x56, 0xea, 0x61, 0xb2, 0x32, 0x70, 0x1c, 0xb6, 0x4d, 0x10, 0x1d, 0xdc,
330 0x92, 0x8e, 0x52, 0xa5, 0x8a, 0x1d, 0xd9, 0x96, 0x5e, 0xc0, 0x62, 0x0b, 0xcf,
331 0x3a, 0x9d, 0x7f, 0xca, 0xbe, 0xa1, 0x41, 0x71, 0x85, 0x7a, 0x8b, 0x5d, 0xa9,
332 0x64, 0xd6, 0x66, 0xb4, 0xe9, 0x8d, 0x0c, 0x28, 0x43, 0xee, 0xa6, 0x64, 0xe8,
333 0x55, 0xf6, 0x1c, 0x19, 0x0b, 0xef, 0x99, 0x25, 0x1e, 0xdc, 0x78, 0xb3, 0xa7,
334 0xaa, 0x0d, 0x14, 0x58, 0x30, 0xe5, 0x37, 0x6a, 0x6d, 0xdb, 0x56, 0xac, 0xa3,
Junxiao Shid21abd32017-06-30 02:56:40 +0000335 0xfc, 0x90, 0x7a, 0xb8, 0x66, 0x9c, 0x0e, 0xf6, 0xb7, 0x64, 0xd1
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700336};
337
338const uint8_t InterestWithLinkWrongContentType[] = {
Junxiao Shid21abd32017-06-30 02:56:40 +0000339 0x05, 0xf8, // Interest
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700340 0x07, 0x14, // Name
341 0x08, 0x5, // NameComponent
342 0x6c, 0x6f, 0x63, 0x61, 0x6c,
343 0x08, 0x3, // NameComponent
344 0x6e, 0x64, 0x6e,
345 0x08, 0x6, // NameComponent
346 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
347 0x0a, 0x4, // Nonce
348 0x1, 0x0, 0x0, 0x00,
349 0x06, 0xda, // Data
350 0x07, 0x14, // Name
351 0x08, 0x05,
352 0x6c, 0x6f, 0x63, 0x61, 0x6c,
353 0x08, 0x03,
354 0x6e, 0x64, 0x6e,
355 0x08, 0x06,
356 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
357 0x14, 0x07, // MetaInfo
358 0x18, 0x01, // ContentType
359 0x00,
360 0x19, 0x02, // FreshnessPeriod
361 0x27, 0x10,
362 0x15, 0x1a, // Content
363 0x1f, 0x0c, // LinkDelegation
364 0x1e, 0x01, // LinkPreference
365 0x0a,
366 0x07, 0x07, // Name
367 0x08, 0x05,
368 0x6c, 0x6f, 0x63, 0x61, 0x6c,
369 0x1f, 0x0a, // LinkDelegation
370 0x1e, 0x01, // LinkPreference
371 0x14,
372 0x07, 0x05, // Name
373 0x08, 0x03,
374 0x6e, 0x64, 0x6e,
375 0x16, 0x1b, // SignatureInfo
376 0x1b, 0x01, // SignatureType
377 0x01,
378 0x1c, 0x16, // KeyLocator
379 0x07, 0x14, // Name
380 0x08, 0x04,
381 0x74, 0x65, 0x73, 0x74,
382 0x08, 0x03,
383 0x6b, 0x65, 0x79,
384 0x08, 0x07,
385 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72,
386 0x17, 0x80, // SignatureValue
387 0x2f, 0xd6, 0xf1, 0x6e, 0x80, 0x6f, 0x10, 0xbe, 0xb1, 0x6f, 0x3e, 0x31, 0xec,
388 0xe3, 0xb9, 0xea, 0x83, 0x30, 0x40, 0x03, 0xfc, 0xa0, 0x13, 0xd9, 0xb3, 0xc6,
389 0x25, 0x16, 0x2d, 0xa6, 0x58, 0x41, 0x69, 0x62, 0x56, 0xd8, 0xb3, 0x6a, 0x38,
390 0x76, 0x56, 0xea, 0x61, 0xb2, 0x32, 0x70, 0x1c, 0xb6, 0x4d, 0x10, 0x1d, 0xdc,
391 0x92, 0x8e, 0x52, 0xa5, 0x8a, 0x1d, 0xd9, 0x96, 0x5e, 0xc0, 0x62, 0x0b, 0xcf,
392 0x3a, 0x9d, 0x7f, 0xca, 0xbe, 0xa1, 0x41, 0x71, 0x85, 0x7a, 0x8b, 0x5d, 0xa9,
393 0x64, 0xd6, 0x66, 0xb4, 0xe9, 0x8d, 0x0c, 0x28, 0x43, 0xee, 0xa6, 0x64, 0xe8,
394 0x55, 0xf6, 0x1c, 0x19, 0x0b, 0xef, 0x99, 0x25, 0x1e, 0xdc, 0x78, 0xb3, 0xa7,
395 0xaa, 0x0d, 0x14, 0x58, 0x30, 0xe5, 0x37, 0x6a, 0x6d, 0xdb, 0x56, 0xac, 0xa3,
Junxiao Shid21abd32017-06-30 02:56:40 +0000396 0xfc, 0x90, 0x7a, 0xb8, 0x66, 0x9c, 0x0e, 0xf6, 0xb7, 0x64, 0xd1
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700397};
398
399const uint8_t InterestWithSelectedDelegationButNoLink[] = {
400 0x05, 0x1f, // Interest
401 0x07, 0x14, // Name
402 0x08, 0x5, // NameComponent
403 0x6c, 0x6f, 0x63, 0x61, 0x6c,
404 0x08, 0x3, // NameComponent
405 0x6e, 0x64, 0x6e,
406 0x08, 0x6, // NameComponent
407 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
408 0x0a, 0x4, // Nonce
409 0x1, 0x0, 0x0, 0x00,
410 0x20, 0x01, // SelectedDelegation
411 0x00
412};
413
414const uint8_t InterestWithLinkNotNonIntegerSelectedDelegation[] = {
415 0x05, 0xfb, // Interest
416 0x07, 0x14, // Name
417 0x08, 0x5, // NameComponent
418 0x6c, 0x6f, 0x63, 0x61, 0x6c,
419 0x08, 0x3, // NameComponent
420 0x6e, 0x64, 0x6e,
421 0x08, 0x6, // NameComponent
422 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
423 0x0a, 0x4, // Nonce
424 0x1, 0x0, 0x0, 0x00,
425 0x06, 0xda, // Data
426 0x07, 0x14, // Name
427 0x08, 0x05,
428 0x6c, 0x6f, 0x63, 0x61, 0x6c,
429 0x08, 0x03,
430 0x6e, 0x64, 0x6e,
431 0x08, 0x06,
432 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
433 0x14, 0x07, // MetaInfo
434 0x18, 0x01, // ContentType
435 0x01,
436 0x19, 0x02, // FreshnessPeriod
437 0x27, 0x10,
438 0x15, 0x1a, // Content
439 0x1f, 0x0c, // LinkDelegation
440 0x1e, 0x01, // LinkPreference
441 0x0a,
442 0x07, 0x07, // Name
443 0x08, 0x05,
444 0x6c, 0x6f, 0x63, 0x61, 0x6c,
445 0x1f, 0x0a, // LinkDelegation
446 0x1e, 0x01, // LinkPreference
447 0x14,
448 0x07, 0x05, // Name
449 0x08, 0x03,
450 0x6e, 0x64, 0x6e,
451 0x16, 0x1b, // SignatureInfo
452 0x1b, 0x01, // SignatureType
453 0x01,
454 0x1c, 0x16, // KeyLocator
455 0x07, 0x14, // Name
456 0x08, 0x04,
457 0x74, 0x65, 0x73, 0x74,
458 0x08, 0x03,
459 0x6b, 0x65, 0x79,
460 0x08, 0x07,
461 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72,
462 0x17, 0x78, // SignatureValue
463 0x2f, 0xd6, 0xf1, 0x6e, 0x80, 0x6f, 0x10, 0xbe, 0xb1, 0x6f, 0x3e, 0x31, 0xec,
464 0xe3, 0xb9, 0xea, 0x83, 0x30, 0x40, 0x03, 0xfc, 0xa0, 0x13, 0xd9, 0xb3, 0xc6,
465 0x25, 0x16, 0x2d, 0xa6, 0x58, 0x41, 0x69, 0x62, 0x56, 0xd8, 0xb3, 0x6a, 0x38,
466 0x76, 0x56, 0xea, 0x61, 0xb2, 0x32, 0x70, 0x1c, 0xb6, 0x4d, 0x10, 0x1d, 0xdc,
467 0x92, 0x8e, 0x52, 0xa5, 0x8a, 0x1d, 0xd9, 0x96, 0x5e, 0xc0, 0x62, 0x0b, 0xcf,
468 0x3a, 0x9d, 0x7f, 0xca, 0xbe, 0xa1, 0x41, 0x71, 0x85, 0x7a, 0x8b, 0x5d, 0xa9,
469 0x64, 0xd6, 0x66, 0xb4, 0xe9, 0x8d, 0x0c, 0x28, 0x43, 0xee, 0xa6, 0x64, 0xe8,
470 0x55, 0xf6, 0x1c, 0x19, 0x0b, 0xef, 0x99, 0x25, 0x1e, 0xdc, 0x78, 0xb3, 0xa7,
471 0xaa, 0x0d, 0x14, 0x58, 0x30, 0xe5, 0x37, 0x6a, 0x6d, 0xdb, 0x56, 0xac, 0xa3,
472 0xfc, 0x90, 0x7a, 0xb8, 0x66, 0x9c, 0x0e, 0xf6, 0xb7,
473 0x20, 0x03, // SelectedDelegation
474 0xAA, 0xAA, 0xAA
475};
476
477const uint8_t InterestWithLinkNonDecreasingOrder[] = {
478 0x05, 0xfb, // Interest
479 0x07, 0x14, // Name
480 0x08, 0x5, // NameComponent
481 0x6c, 0x6f, 0x63, 0x61, 0x6c,
482 0x08, 0x3, // NameComponent
483 0x6e, 0x64, 0x6e,
484 0x08, 0x6, // NameComponent
485 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
486 0x0a, 0x4, // Nonce
487 0x1, 0x0, 0x0, 0x00,
488 0x06, 0xda, // Data
489 0x07, 0x14, // Name
490 0x08, 0x05,
491 0x6c, 0x6f, 0x63, 0x61, 0x6c,
492 0x08, 0x03,
493 0x6e, 0x64, 0x6e,
494 0x08, 0x06,
495 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
496 0x14, 0x07, // MetaInfo
497 0x18, 0x01, // ContentType
498 0x01,
499 0x19, 0x02, // FreshnessPeriod
500 0x27, 0x10,
501 0x15, 0x1a, // Content
502 0x1f, 0x0c, // LinkDelegation
503 0x1e, 0x01, // LinkPreference
504 0x14,
505 0x07, 0x07, // Name
506 0x08, 0x05,
507 0x6c, 0x6f, 0x63, 0x61, 0x6c,
508 0x1f, 0x0a, // LinkDelegation
509 0x1e, 0x01, // LinkPreference
510 0x0a,
511 0x07, 0x05, // Name
512 0x08, 0x03,
513 0x6e, 0x64, 0x6e,
514 0x16, 0x1b, // SignatureInfo
515 0x1b, 0x01, // SignatureType
516 0x01,
517 0x1c, 0x16, // KeyLocator
518 0x07, 0x14, // Name
519 0x08, 0x04,
520 0x74, 0x65, 0x73, 0x74,
521 0x08, 0x03,
522 0x6b, 0x65, 0x79,
523 0x08, 0x07,
524 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x6f, 0x72,
525 0x17, 0x80, // SignatureValue
526 0x2f, 0xd6, 0xf1, 0x6e, 0x80, 0x6f, 0x10, 0xbe, 0xb1, 0x6f, 0x3e, 0x31, 0xec,
527 0xe3, 0xb9, 0xea, 0x83, 0x30, 0x40, 0x03, 0xfc, 0xa0, 0x13, 0xd9, 0xb3, 0xc6,
528 0x25, 0x16, 0x2d, 0xa6, 0x58, 0x41, 0x69, 0x62, 0x56, 0xd8, 0xb3, 0x6a, 0x38,
529 0x76, 0x56, 0xea, 0x61, 0xb2, 0x32, 0x70, 0x1c, 0xb6, 0x4d, 0x10, 0x1d, 0xdc,
530 0x92, 0x8e, 0x52, 0xa5, 0x8a, 0x1d, 0xd9, 0x96, 0x5e, 0xc0, 0x62, 0x0b, 0xcf,
531 0x3a, 0x9d, 0x7f, 0xca, 0xbe, 0xa1, 0x41, 0x71, 0x85, 0x7a, 0x8b, 0x5d, 0xa9,
532 0x64, 0xd6, 0x66, 0xb4, 0xe9, 0x8d, 0x0c, 0x28, 0x43, 0xee, 0xa6, 0x64, 0xe8,
533 0x55, 0xf6, 0x1c, 0x19, 0x0b, 0xef, 0x99, 0x25, 0x1e, 0xdc, 0x78, 0xb3, 0xa7,
534 0xaa, 0x0d, 0x14, 0x58, 0x30, 0xe5, 0x37, 0x6a, 0x6d, 0xdb, 0x56, 0xac, 0xa3,
535 0xfc, 0x90, 0x7a, 0xb8, 0x66, 0x9c, 0x0e, 0xf6, 0xb7, 0x64, 0xd1,
536 0x20, 0x01, // SelectedDelegation
537 0x01
538};
539
Eric Newberryb555b002017-05-17 00:30:44 -0700540BOOST_AUTO_TEST_CASE(DefaultValues)
541{
542 Interest i;
543 BOOST_CHECK_EQUAL(i.getInterestLifetime(), DEFAULT_INTEREST_LIFETIME);
544 BOOST_CHECK(!i.hasSelectedDelegation());
545}
546
Eric Newberryb555b002017-05-17 00:30:44 -0700547BOOST_AUTO_TEST_CASE(EncodeInterestLifetime)
548{
549 Interest i;
550 i.setName("/local/ndn/prefix");
551 i.setNonce(1);
552 BOOST_CHECK_EQUAL(i.getInterestLifetime(), DEFAULT_INTEREST_LIFETIME);
553 BOOST_CHECK_THROW(i.setInterestLifetime(time::milliseconds(-1)), std::invalid_argument);
554 BOOST_CHECK_EQUAL(i.getInterestLifetime(), DEFAULT_INTEREST_LIFETIME);
555 BOOST_CHECK_NO_THROW(i.setInterestLifetime(time::milliseconds(1)));
556 BOOST_CHECK_EQUAL(i.getInterestLifetime(), time::milliseconds(1));
557 BOOST_CHECK_NO_THROW(i.setInterestLifetime(DEFAULT_INTEREST_LIFETIME));
558
559 const uint8_t expectedDefault[] = {
Junxiao Shi9bf55812017-07-05 15:04:37 +0000560 0x05, 0x1c, // Interest
Eric Newberryb555b002017-05-17 00:30:44 -0700561 0x07, 0x14, // Name
562 0x08, 0x5, // NameComponent
563 0x6c, 0x6f, 0x63, 0x61, 0x6c,
564 0x08, 0x3, // NameComponent
565 0x6e, 0x64, 0x6e,
566 0x08, 0x6, // NameComponent
567 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
Eric Newberryb555b002017-05-17 00:30:44 -0700568 0x0a, 0x04, // Nonce
569 0x01, 0x00, 0x00, 0x00, // 1
570 };
571
572 BOOST_CHECK_EQUAL_COLLECTIONS(i.wireEncode().begin(), i.wireEncode().end(),
573 expectedDefault, expectedDefault + sizeof(expectedDefault));
574
575 const uint8_t expected1000ms[] = {
Junxiao Shi9bf55812017-07-05 15:04:37 +0000576 0x05, 0x20, // Interest
Eric Newberryb555b002017-05-17 00:30:44 -0700577 0x07, 0x14, // Name
578 0x08, 0x5, // NameComponent
579 0x6c, 0x6f, 0x63, 0x61, 0x6c,
580 0x08, 0x3, // NameComponent
581 0x6e, 0x64, 0x6e,
582 0x08, 0x6, // NameComponent
583 0x70, 0x72, 0x65, 0x66, 0x69, 0x78,
Eric Newberryb555b002017-05-17 00:30:44 -0700584 0x0a, 0x04, // Nonce
585 0x01, 0x00, 0x00, 0x00, // 1
586 0x0c, 0x02, // InterestLifetime
587 0x03, 0xe8
588 };
589
590 BOOST_CHECK_NO_THROW(i.setInterestLifetime(time::milliseconds(1000)));
591 BOOST_CHECK_EQUAL_COLLECTIONS(i.wireEncode().begin(), i.wireEncode().end(),
592 expected1000ms, expected1000ms + sizeof(expected1000ms));
593}
594
Alexander Afanasyevff2d08f2014-04-07 18:28:25 -0700595BOOST_AUTO_TEST_CASE(InterestEqualityChecks)
596{
597 // Interest ::= INTEREST-TYPE TLV-LENGTH
598 // Name
599 // Selectors?
600 // Nonce
Alexander Afanasyevff2d08f2014-04-07 18:28:25 -0700601 // InterestLifetime?
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700602 // Link?
603 // SelectedDelegation?
Alexander Afanasyevff2d08f2014-04-07 18:28:25 -0700604
605 Interest a;
606 Interest b;
607
608 // if nonce is not set, it will be set to a random value
609 a.setNonce(1);
610 b.setNonce(1);
611
612 BOOST_CHECK_EQUAL(a == b, true);
613 BOOST_CHECK_EQUAL(a != b, false);
614
615 // check comparison on Name
616 a.setName("ndn:/A");
617 BOOST_CHECK_EQUAL(a == b, false);
618 BOOST_CHECK_EQUAL(a != b, true);
619
620 b.setName("ndn:/B");
621 BOOST_CHECK_EQUAL(a == b, false);
622 BOOST_CHECK_EQUAL(a != b, true);
623
624 b.setName("ndn:/A");
625 BOOST_CHECK_EQUAL(a == b, true);
626 BOOST_CHECK_EQUAL(a != b, false);
627
628 // check comparison on Selectors
629 a.setChildSelector(1);
630 BOOST_CHECK_EQUAL(a == b, false);
631 BOOST_CHECK_EQUAL(a != b, true);
632
633 b.setChildSelector(1);
634 BOOST_CHECK_EQUAL(a == b, true);
635 BOOST_CHECK_EQUAL(a != b, false);
636
637 // check comparison on Nonce
638 a.setNonce(100);
639 BOOST_CHECK_EQUAL(a == b, false);
640 BOOST_CHECK_EQUAL(a != b, true);
641
642 b.setNonce(100);
643 BOOST_CHECK_EQUAL(a == b, true);
644 BOOST_CHECK_EQUAL(a != b, false);
645
Alexander Afanasyevff2d08f2014-04-07 18:28:25 -0700646 // check comparison on InterestLifetime
647 a.setInterestLifetime(time::seconds(10));
648 BOOST_CHECK_EQUAL(a == b, false);
649 BOOST_CHECK_EQUAL(a != b, true);
650
651 b.setInterestLifetime(time::seconds(10));
652 BOOST_CHECK_EQUAL(a == b, true);
653 BOOST_CHECK_EQUAL(a != b, false);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700654
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700655 a.setLink(Block(LINK, sizeof(LINK)));
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700656 BOOST_CHECK_EQUAL(a == b, false);
657 BOOST_CHECK_EQUAL(a != b, true);
658
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700659 b.setLink(Block(LINK, sizeof(LINK)));
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700660 BOOST_CHECK_EQUAL(a == b, true);
661 BOOST_CHECK_EQUAL(a != b, false);
662
663 // Selected Delegation
664 BOOST_CHECK_EQUAL(a.hasSelectedDelegation(), false);
665 BOOST_CHECK_EQUAL(b.hasSelectedDelegation(), false);
666
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700667 a.setSelectedDelegation(Name("/local"));
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700668 BOOST_CHECK_EQUAL(a == b, false);
669 BOOST_CHECK_EQUAL(a != b, true);
670
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700671 b.setSelectedDelegation(Name("/local"));
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700672 BOOST_CHECK_EQUAL(a == b, true);
673 BOOST_CHECK_EQUAL(a != b, false);
Alexander Afanasyevff2d08f2014-04-07 18:28:25 -0700674}
675
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700676BOOST_AUTO_TEST_CASE(LinkObject)
677{
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700678 Link link1("test", {{100, "/test3"}, {20, "/test2"}, {10, "/test1"}});
Alexander Afanasyeve4f8c3b2016-06-23 16:03:48 -0700679 m_keyChain.sign(link1);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700680 Block wire = link1.wireEncode();
681
682 Interest a;
683 BOOST_REQUIRE_NO_THROW(a.setLink(wire));
684
685 BOOST_REQUIRE_NO_THROW(a.getLink());
686
687 Link link2 = a.getLink();
688 Name name = link2.getName();
689 BOOST_CHECK_EQUAL(Name("test"), name);
690 BOOST_CHECK_EQUAL(a.hasLink(), true);
691 Link::DelegationSet delegations;
692 delegations = link2.getDelegations();
693
694 auto i = delegations.begin();
695 BOOST_CHECK_EQUAL(std::get<0>(*i), 10);
696 BOOST_CHECK_EQUAL(std::get<1>(*i), Name("test1"));
697 ++i;
698 BOOST_CHECK_EQUAL(std::get<0>(*i), 20);
699 BOOST_CHECK_EQUAL(std::get<1>(*i), Name("test2"));
700 ++i;
701 BOOST_CHECK_EQUAL(std::get<0>(*i), 100);
702 BOOST_CHECK_EQUAL(std::get<1>(*i), Name("test3"));
703
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700704 a.setLink(Block(LINK, sizeof(LINK)));
705 BOOST_CHECK_EQUAL(a.getLink().getDelegations().size(), 2);
706
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700707 a.unsetLink();
708 BOOST_CHECK_EQUAL(a.hasLink(), false);
709}
710
711BOOST_AUTO_TEST_CASE(SelectedDelegationChecks)
712{
713 Link link("test", {{10, "/test1"}, {20, "/test2"}, {100, "/test3"}});
Alexander Afanasyeve4f8c3b2016-06-23 16:03:48 -0700714 m_keyChain.sign(link);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700715 Block wire = link.wireEncode();
716
717 Interest a;
718 a.setLink(wire);
719 BOOST_CHECK_EQUAL(a.hasSelectedDelegation(), false);
720
721 BOOST_REQUIRE_NO_THROW(a.setSelectedDelegation(Name("test2")));
722 BOOST_CHECK_EQUAL(a.getSelectedDelegation(), Name("test2"));
723
724 BOOST_REQUIRE_NO_THROW(a.setSelectedDelegation(uint32_t(2)));
725 BOOST_CHECK_EQUAL(a.getSelectedDelegation(), Name("test3"));
726
727 a.unsetSelectedDelegation();
728 BOOST_CHECK_EQUAL(a.hasSelectedDelegation(), false);
729}
730
731BOOST_AUTO_TEST_CASE(EncodeDecodeWithLink)
732{
733 Link link1("test", {{10, "/test1"}, {20, "/test2"}, {100, "/test3"}});
Alexander Afanasyeve4f8c3b2016-06-23 16:03:48 -0700734 m_keyChain.sign(link1);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700735 Block wire = link1.wireEncode();
736
737 Interest a;
738 a.setName("/Test/Encode/Decode/With/Link");
739 a.setChildSelector(1);
740 a.setNonce(100);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700741 a.setInterestLifetime(time::seconds(10));
742 a.setLink(wire);
743
744 Block interestBlock = a.wireEncode();
745 Interest b(interestBlock);
746
747 BOOST_CHECK_EQUAL(a == b, true);
748
749 Link link2 = b.getLink();
750 Link::DelegationSet delegations;
751 delegations = link2.getDelegations();
752
753 auto i = delegations.begin();
754 BOOST_CHECK_EQUAL(std::get<0>(*i), 10);
755 BOOST_CHECK_EQUAL(std::get<1>(*i), Name("test1"));
756 ++i;
757 BOOST_CHECK_EQUAL(std::get<0>(*i), 20);
758 BOOST_CHECK_EQUAL(std::get<1>(*i), Name("test2"));
759 ++i;
760 BOOST_CHECK_EQUAL(std::get<0>(*i), 100);
761 BOOST_CHECK_EQUAL(std::get<1>(*i), Name("test3"));
762
763}
764
765BOOST_AUTO_TEST_CASE(DecodeInterestWithLink)
766{
767 Block interestBlock(InterestWithLink, sizeof(InterestWithLink));
768
769 ndn::Interest i;
770 BOOST_REQUIRE_NO_THROW(i.wireDecode(interestBlock));
771 Link link = i.getLink();
772 BOOST_CHECK_EQUAL(link.getName(), Name("/local/ndn/prefix"));
773 Link::DelegationSet delegations = link.getDelegations();
774
775 auto it = delegations.begin();
776 BOOST_CHECK_EQUAL(std::get<0>(*it), 10);
777 BOOST_CHECK_EQUAL(std::get<1>(*it), Name("local"));
778 ++it;
779 BOOST_CHECK_EQUAL(std::get<0>(*it), 20);
780 BOOST_CHECK_EQUAL(std::get<1>(*it), Name("ndn"));
781
782 BOOST_REQUIRE_NO_THROW(i.getSelectedDelegation());
783 BOOST_CHECK_EQUAL(i.getSelectedDelegation(), Name("local"));
784}
785
786BOOST_AUTO_TEST_CASE(DecodeInterestWithLinkNonDecreasingOrder)
787{
788 Block interestBlock(InterestWithLinkNonDecreasingOrder,
789 sizeof(InterestWithLinkNonDecreasingOrder));
790
791 ndn::Interest i;
792 BOOST_REQUIRE_NO_THROW(i.wireDecode(interestBlock));
793 BOOST_REQUIRE_NO_THROW(i.getSelectedDelegation());
794 BOOST_CHECK_EQUAL(i.getSelectedDelegation(), Name("ndn"));
795}
796
797BOOST_AUTO_TEST_CASE(LinkObjectMissingContentType)
798{
799 Block interestBlock(InterestWithLinkMissingContentType,
800 sizeof(InterestWithLinkMissingContentType));
801
Junxiao Shid21abd32017-06-30 02:56:40 +0000802 BOOST_CHECK_THROW(Interest(interestBlock).getLink(), tlv::Error);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700803}
804
805BOOST_AUTO_TEST_CASE(LinkObjectNoMetaInfo)
806{
807 Block interestBlock(InterestWithLinkNoMetaInfo,
808 sizeof(InterestWithLinkNoMetaInfo));
809
Junxiao Shid21abd32017-06-30 02:56:40 +0000810 BOOST_CHECK_THROW(Interest(interestBlock).getLink(), tlv::Error);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700811}
812
813BOOST_AUTO_TEST_CASE(LinkObjectWrongContentType)
814{
815 Block interestBlock(InterestWithLinkWrongContentType,
816 sizeof(InterestWithLinkWrongContentType));
817
Junxiao Shid21abd32017-06-30 02:56:40 +0000818 BOOST_CHECK_THROW(Interest(interestBlock).getLink(), tlv::Error);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700819}
820
821BOOST_AUTO_TEST_CASE(InterestContainingSelectedDelegationButNoLink)
822{
823 Block interestBlock(InterestWithSelectedDelegationButNoLink,
824 sizeof(InterestWithSelectedDelegationButNoLink));
825
826 ndn::Interest i;
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700827 BOOST_CHECK_THROW(i.wireDecode(interestBlock), Interest::Error);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700828}
829
830BOOST_AUTO_TEST_CASE(SelectedDelegationIsNotNonNegativeInteger)
831{
832 Block interestBlock(InterestWithLinkNotNonIntegerSelectedDelegation,
833 sizeof(InterestWithLinkNotNonIntegerSelectedDelegation));
834
835 ndn::Interest i;
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700836 BOOST_CHECK_THROW(i.wireDecode(interestBlock), tlv::Error);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700837}
838
839BOOST_AUTO_TEST_CASE(SelectedDelegationEqualToDelegationCount)
840{
841 Link link1("test", {{10, "/test1"}, {20, "/test2"}, {100, "/test3"}});
Alexander Afanasyeve4f8c3b2016-06-23 16:03:48 -0700842 m_keyChain.sign(link1);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700843 Block wire = link1.wireEncode();
844
845 Interest a;
846 a.setName("/Test/Encode/Decode/With/Link");
847 a.setChildSelector(1);
848 a.setNonce(100);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700849 a.setInterestLifetime(time::seconds(10));
850 a.setLink(wire);
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700851 BOOST_CHECK_THROW(a.setSelectedDelegation(3), Interest::Error);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700852}
853
854BOOST_AUTO_TEST_CASE(SelectedDelegationGreaterThanDelegationCount)
855{
856 Link link1("test", {{10, "/test1"}, {20, "/test2"}, {100, "/test3"}});
Alexander Afanasyeve4f8c3b2016-06-23 16:03:48 -0700857 m_keyChain.sign(link1);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700858 Block wire = link1.wireEncode();
859
860 Interest a;
861 a.setName("/Test/Encode/Decode/With/Link");
862 a.setChildSelector(1);
863 a.setNonce(100);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700864 a.setInterestLifetime(time::seconds(10));
865 a.setLink(wire);
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700866 BOOST_CHECK_THROW(a.setSelectedDelegation(4), Interest::Error);
Spyridon Mastorakisc8188b32015-04-18 18:33:38 -0700867}
868
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700869BOOST_AUTO_TEST_CASE(Decode)
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800870{
871 Block interestBlock(Interest1, sizeof(Interest1));
Alexander Afanasyev636e9f12014-01-07 12:01:03 -0800872
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800873 ndn::Interest i;
Alexander Afanasyev049f8f72013-12-26 19:07:15 -0800874 BOOST_REQUIRE_NO_THROW(i.wireDecode(interestBlock));
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800875
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700876 BOOST_CHECK_EQUAL(i.getName().toUri(), "/local/ndn/prefix");
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700877 BOOST_CHECK_EQUAL(i.getInterestLifetime(), time::milliseconds(1000));
878 BOOST_CHECK_EQUAL(i.getMinSuffixComponents(), 1);
879 BOOST_CHECK_EQUAL(i.getMaxSuffixComponents(), 1);
880 BOOST_CHECK_EQUAL(i.getPublisherPublicKeyLocator().getType(),
881 static_cast<uint32_t>(KeyLocator::KeyLocator_Name));
882 BOOST_CHECK_EQUAL(i.getPublisherPublicKeyLocator().getName(), "ndn:/test/key/locator");
883 BOOST_CHECK_EQUAL(i.getChildSelector(), 1);
884 BOOST_CHECK_EQUAL(i.getMustBeFresh(), false);
885 BOOST_CHECK_EQUAL(i.getExclude().toUri(), "alex,xxxx,*,yyyy");
886 BOOST_CHECK_EQUAL(i.getNonce(), 1U);
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700887 BOOST_CHECK_EQUAL(i.hasLink(), false);
888 BOOST_CHECK_EQUAL(i.hasSelectedDelegation(), false);
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800889}
890
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700891BOOST_AUTO_TEST_CASE(DecodeFromStream)
Alexander Afanasyev6835ad82014-02-12 10:07:20 -0800892{
Alexander Afanasyevdfa52c42014-04-24 21:10:11 -0700893 boost::iostreams::stream<boost::iostreams::array_source> is(
894 reinterpret_cast<const char *>(Interest1), sizeof(Interest1));
Junxiao Shib332e782014-03-31 14:23:46 -0700895
Alexander Afanasyev9c578182014-05-14 17:28:28 -0700896 Block interestBlock = Block::fromStream(is);
Alexander Afanasyev6835ad82014-02-12 10:07:20 -0800897
898 ndn::Interest i;
899 BOOST_REQUIRE_NO_THROW(i.wireDecode(interestBlock));
900
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700901 BOOST_CHECK_EQUAL(i.getName().toUri(), "/local/ndn/prefix");
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700902 BOOST_CHECK_EQUAL(i.getInterestLifetime(), time::milliseconds(1000));
903 BOOST_CHECK_EQUAL(i.getMinSuffixComponents(), 1);
904 BOOST_CHECK_EQUAL(i.getMaxSuffixComponents(), 1);
905 BOOST_CHECK_EQUAL(i.getChildSelector(), 1);
906 BOOST_CHECK_EQUAL(i.getMustBeFresh(), false);
907 BOOST_CHECK_EQUAL(i.getExclude().toUri(), "alex,xxxx,*,yyyy");
908 BOOST_CHECK_EQUAL(i.getNonce(), 1U);
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700909 BOOST_CHECK_EQUAL(i.hasLink(), false);
910 BOOST_CHECK_EQUAL(i.hasSelectedDelegation(), false);
Alexander Afanasyev6835ad82014-02-12 10:07:20 -0800911}
912
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700913BOOST_AUTO_TEST_CASE(Encode)
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800914{
915 ndn::Interest i(ndn::Name("/local/ndn/prefix"));
Alexander Afanasyevaa0e7da2014-03-17 14:37:33 -0700916 i.setInterestLifetime(time::milliseconds(1000));
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800917 i.setMinSuffixComponents(1);
918 i.setMaxSuffixComponents(1);
Junxiao Shib332e782014-03-31 14:23:46 -0700919 i.setPublisherPublicKeyLocator(KeyLocator("ndn:/test/key/locator"));
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800920 i.setChildSelector(1);
921 i.setMustBeFresh(false);
Alexander Afanasyevc348f832014-02-17 16:35:17 -0800922 Exclude exclude;
923 exclude
Alexander Afanasyev52eb20d2014-02-06 18:25:54 -0800924 .excludeOne(name::Component("alex"))
925 .excludeRange(name::Component("xxxx"), name::Component("yyyy"));
Alexander Afanasyevc348f832014-02-17 16:35:17 -0800926 i.setExclude(exclude);
Alexander Afanasyev840139f2013-12-28 15:02:50 -0800927 i.setNonce(1);
Alexander Afanasyev5fa9e9a2013-12-24 19:45:07 -0800928
Alexander Afanasyeve881e932014-06-08 14:47:03 +0300929 BOOST_CHECK_EQUAL(i.hasWire(), false);
Eric Newberryb555b002017-05-17 00:30:44 -0700930 const Block& wire = i.wireEncode();
Alexander Afanasyeve881e932014-06-08 14:47:03 +0300931 BOOST_CHECK_EQUAL(i.hasWire(), true);
Alexander Afanasyev809805d2014-02-17 17:20:33 -0800932
Alexander Afanasyevb1db7c62014-04-03 14:57:25 -0700933 BOOST_CHECK_EQUAL_COLLECTIONS(Interest1, Interest1 + sizeof(Interest1),
Alexander Afanasyev6d48bc12014-02-18 00:10:51 -0800934 wire.begin(), wire.end());
Alexander Afanasyev6d48bc12014-02-18 00:10:51 -0800935
Alexander Afanasyeve881e932014-06-08 14:47:03 +0300936 const uint8_t* originalWire = wire.wire();
937 i.setNonce(2);
938 BOOST_CHECK_EQUAL(i.hasWire(), true);
939 BOOST_CHECK_EQUAL(originalWire, i.wireEncode().wire());
940 BOOST_CHECK_EQUAL(i.hasWire(), true);
941
942 BOOST_CHECK_EQUAL_COLLECTIONS(Interest2, Interest2 + sizeof(Interest2),
943 wire.begin(), wire.end());
Alexander Afanasyeva0c5f832014-06-19 13:27:56 -0700944
945 std::ostringstream strStream;
946 BOOST_CHECK_NO_THROW(strStream << i);
947
948 BOOST_CHECK_EQUAL(strStream.str(),
949 "/local/ndn/prefix?"
950 "ndn.MinSuffixComponents=1&ndn.MaxSuffixComponents=1&"
Alexander Afanasyev117f5ef2015-06-03 15:07:24 -0700951 "ndn.ChildSelector=1&"
Alexander Afanasyeva0c5f832014-06-19 13:27:56 -0700952 "ndn.InterestLifetime=1000&"
953 "ndn.Nonce=2&ndn.Exclude=alex,xxxx,*,yyyy");
Alexander Afanasyevc3932172014-07-10 18:53:56 -0700954
955 i.refreshNonce();
956 BOOST_CHECK_EQUAL(i.hasWire(), true);
957 BOOST_CHECK_EQUAL(originalWire, i.wireEncode().wire());
958 BOOST_CHECK_NE(i.getNonce(), 2);
Alexander Afanasyeve881e932014-06-08 14:47:03 +0300959}
Alexander Afanasyev6d48bc12014-02-18 00:10:51 -0800960
Alexander Afanasyevcac08382015-09-02 14:52:40 -0700961BOOST_AUTO_TEST_CASE(DecodeEncode) // this test case to ensure that wireDecode resets all the fields
962{
963 Interest i1;
964 i1.setName("/test");
965 i1.setMinSuffixComponents(100);
966 i1.setNonce(10);
967 i1.setInterestLifetime(time::seconds(10));
968 i1.setLink(Block(LINK, sizeof(LINK)));
969 i1.setSelectedDelegation(0);
970
971 Interest i2(i1.wireEncode());
972
973 BOOST_CHECK_EQUAL(i2.getName().toUri(), "/test");
974 BOOST_CHECK_EQUAL(i2.getInterestLifetime(), time::seconds(10));
975 BOOST_CHECK_EQUAL(i2.getMinSuffixComponents(), 100);
976 BOOST_CHECK_EQUAL(i2.getNonce(), 10);
977 BOOST_CHECK_EQUAL(i2.hasLink(), true);
978 BOOST_CHECK_EQUAL(i2.hasSelectedDelegation(), true);
979
980 i2.wireDecode(Interest().wireEncode());
981
982 BOOST_CHECK_EQUAL(i2.getName().toUri(), "/");
983 BOOST_CHECK_EQUAL(i2.getInterestLifetime(), DEFAULT_INTEREST_LIFETIME);
984 BOOST_CHECK_EQUAL(i2.getMinSuffixComponents(), -1);
985 BOOST_WARN_NE(i2.getNonce(), 10);
986 BOOST_CHECK_EQUAL(i2.hasLink(), false);
987 BOOST_CHECK_EQUAL(i2.hasSelectedDelegation(), false);
988}
989
Junxiao Shiaf8eeea2014-03-31 20:10:56 -0700990BOOST_AUTO_TEST_CASE(MatchesData)
991{
992 Interest interest;
993 interest.setName("ndn:/A")
994 .setMinSuffixComponents(2)
995 .setMaxSuffixComponents(2)
996 .setPublisherPublicKeyLocator(KeyLocator("ndn:/B"))
Junxiao Shidf4b24e2016-07-14 21:41:43 +0000997 .setExclude(Exclude().excludeAfter(name::Component("J")));
Junxiao Shiaf8eeea2014-03-31 20:10:56 -0700998
999 Data data("ndn:/A/D");
Yingdi Yu4a557052014-07-09 16:40:37 -07001000 SignatureSha256WithRsa signature(KeyLocator("ndn:/B"));
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001001 data.setSignature(signature);
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001002 data.wireEncode();
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001003 BOOST_CHECK_EQUAL(interest.matchesData(data), true);
1004
1005 Data data1 = data;
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001006 data1.setName("ndn:/A"); // violates MinSuffixComponents
1007 data1.wireEncode();
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001008 BOOST_CHECK_EQUAL(interest.matchesData(data1), false);
1009
Junxiao Shidf4b24e2016-07-14 21:41:43 +00001010 Interest interest1 = interest;
1011 interest1.setMinSuffixComponents(1);
1012 BOOST_CHECK_EQUAL(interest1.matchesData(data1), true);
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001013
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001014 Data data2 = data;
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001015 data2.setName("ndn:/A/E/F"); // violates MaxSuffixComponents
1016 data2.wireEncode();
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001017 BOOST_CHECK_EQUAL(interest.matchesData(data2), false);
1018
Junxiao Shidf4b24e2016-07-14 21:41:43 +00001019 Interest interest2 = interest;
1020 interest2.setMaxSuffixComponents(3);
1021 BOOST_CHECK_EQUAL(interest2.matchesData(data2), true);
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001022
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001023 Data data3 = data;
Yingdi Yu4a557052014-07-09 16:40:37 -07001024 SignatureSha256WithRsa signature3(KeyLocator("ndn:/G")); // violates PublisherPublicKeyLocator
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001025 data3.setSignature(signature3);
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001026 data3.wireEncode();
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001027 BOOST_CHECK_EQUAL(interest.matchesData(data3), false);
1028
Junxiao Shidf4b24e2016-07-14 21:41:43 +00001029 Interest interest3 = interest;
1030 interest3.setPublisherPublicKeyLocator(KeyLocator("ndn:/G"));
1031 BOOST_CHECK_EQUAL(interest3.matchesData(data3), true);
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001032
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001033 Data data4 = data;
Yingdi Yubf6a2812014-06-17 15:32:11 -07001034 DigestSha256 signature4; // violates PublisherPublicKeyLocator
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001035 data4.setSignature(signature4);
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001036 data4.wireEncode();
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001037 BOOST_CHECK_EQUAL(interest.matchesData(data4), false);
1038
Junxiao Shidf4b24e2016-07-14 21:41:43 +00001039 Interest interest4 = interest;
1040 interest4.setPublisherPublicKeyLocator(KeyLocator());
1041 BOOST_CHECK_EQUAL(interest4.matchesData(data4), true);
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001042
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001043 Data data5 = data;
Junxiao Shidf4b24e2016-07-14 21:41:43 +00001044 data5.setName("ndn:/A/J"); // violates Exclude
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001045 data5.wireEncode();
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001046 BOOST_CHECK_EQUAL(interest.matchesData(data5), false);
1047
Junxiao Shidf4b24e2016-07-14 21:41:43 +00001048 Interest interest5 = interest;
1049 interest5.setExclude(Exclude().excludeAfter(name::Component("K")));
1050 BOOST_CHECK_EQUAL(interest5.matchesData(data5), true);
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001051
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001052 Data data6 = data;
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001053 data6.setName("ndn:/H/I"); // violates Name
1054 data6.wireEncode();
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001055 BOOST_CHECK_EQUAL(interest.matchesData(data6), false);
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001056
1057 Data data7 = data;
1058 data7.setName("ndn:/A/B");
1059 data7.wireEncode();
1060
Junxiao Shidf4b24e2016-07-14 21:41:43 +00001061 Interest interest7("/A/B/sha256digest=D548DECEFC4B880720DC9257A8D815E9DF4465E63742EE55C29133055DAA67C2");
1062 BOOST_CHECK_EQUAL(interest7.matchesData(data7), true);
Alexander Afanasyev3b703102014-06-13 17:01:14 -07001063
Junxiao Shidf4b24e2016-07-14 21:41:43 +00001064 Interest interest7b("/A/B/sha256digest=0000000000000000000000000000000000000000000000000000000000000000");
1065 BOOST_CHECK_EQUAL(interest7b.matchesData(data7), false); // violates implicit digest
Junxiao Shiaf8eeea2014-03-31 20:10:56 -07001066}
1067
Alexander Afanasyev1013fd02017-01-03 13:19:03 -08001068BOOST_AUTO_TEST_CASE_EXPECTED_FAILURES(MatchesInterest, 1)
1069BOOST_AUTO_TEST_CASE(MatchesInterest)
1070{
1071 Interest interest;
1072 interest
1073 .setName("ndn:/A")
1074 .setMinSuffixComponents(2)
1075 .setMaxSuffixComponents(2)
1076 .setPublisherPublicKeyLocator(KeyLocator("ndn:/B"))
1077 .setExclude(Exclude().excludeAfter(name::Component("J")))
1078 .setNonce(10)
1079 .setInterestLifetime(time::seconds(5));
1080
1081 Link link("/A/LINK", {{10, "/test1"}, {20, "/test2"}, {100, "/test3"}});
1082 m_keyChain.sign(link);
1083 interest.setLink(link.wireEncode());
1084
1085 Interest other;
1086 BOOST_CHECK_EQUAL(interest.matchesInterest(other), false);
1087
1088 other.setName(interest.getName());
1089 BOOST_CHECK_EQUAL(interest.matchesInterest(other), false);
1090
1091 // TODO: will match until #3162 implemented
1092 other.setSelectors(interest.getSelectors());
1093 BOOST_CHECK_EQUAL(interest.matchesInterest(other), false);
1094
1095 other.setLink(interest.getLink().wireEncode());
1096 BOOST_CHECK_EQUAL(interest.matchesInterest(other), true);
1097
1098 other.setNonce(200);
1099 BOOST_CHECK_EQUAL(interest.matchesInterest(other), true);
1100
1101 other.setInterestLifetime(time::hours(5));
1102 BOOST_CHECK_EQUAL(interest.matchesInterest(other), true);
1103
1104 other.setSelectedDelegation(0);
1105 BOOST_CHECK_EQUAL(interest.matchesInterest(other), true);
1106}
1107
Alexander Afanasyev90164962014-03-06 08:29:59 +00001108BOOST_AUTO_TEST_CASE(InterestFilterMatching)
1109{
1110 BOOST_CHECK_EQUAL(InterestFilter("/a").doesMatch("/a/b"), true);
1111 BOOST_CHECK_EQUAL(InterestFilter("/a/b").doesMatch("/a/b"), true);
1112 BOOST_CHECK_EQUAL(InterestFilter("/a/b/c").doesMatch("/a/b"), false);
1113
1114 BOOST_CHECK_EQUAL(InterestFilter("/a", "<b>").doesMatch("/a/b"), true);
1115 BOOST_CHECK_EQUAL(InterestFilter("/a/b", "<b>").doesMatch("/a/b"), false);
1116
1117 BOOST_CHECK_EQUAL(InterestFilter("/a/b", "<b>").doesMatch("/a/b/c/b"), false);
1118 BOOST_CHECK_EQUAL(InterestFilter("/a/b", "<>*<b>").doesMatch("/a/b/c/b"), true);
1119
1120 BOOST_CHECK_EQUAL(InterestFilter("/a", "<b>").doesMatch("/a/b/c/d"), false);
1121 BOOST_CHECK_EQUAL(InterestFilter("/a", "<b><>*").doesMatch("/a/b/c/d"), true);
1122 BOOST_CHECK_EQUAL(InterestFilter("/a", "<b><>*").doesMatch("/a/b"), true);
1123 BOOST_CHECK_EQUAL(InterestFilter("/a", "<b><>+").doesMatch("/a/b"), false);
1124 BOOST_CHECK_EQUAL(InterestFilter("/a", "<b><>+").doesMatch("/a/b/c"), true);
1125}
1126
Davide Pesaventoeee3e822016-11-26 19:19:34 +01001127BOOST_AUTO_TEST_SUITE_END() // TestInterest
Alexander Afanasyev0abb2da2014-01-30 18:07:57 -08001128
Alexander Afanasyev90164962014-03-06 08:29:59 +00001129} // namespace tests
Alexander Afanasyev0abb2da2014-01-30 18:07:57 -08001130} // namespace ndn