1*cfb92d14SAndroid Build Coastguard Worker /*
2*cfb92d14SAndroid Build Coastguard Worker * Copyright (c) 2022, The OpenThread Authors.
3*cfb92d14SAndroid Build Coastguard Worker * All rights reserved.
4*cfb92d14SAndroid Build Coastguard Worker *
5*cfb92d14SAndroid Build Coastguard Worker * Redistribution and use in source and binary forms, with or without
6*cfb92d14SAndroid Build Coastguard Worker * modification, are permitted provided that the following conditions are met:
7*cfb92d14SAndroid Build Coastguard Worker * 1. Redistributions of source code must retain the above copyright
8*cfb92d14SAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer.
9*cfb92d14SAndroid Build Coastguard Worker * 2. Redistributions in binary form must reproduce the above copyright
10*cfb92d14SAndroid Build Coastguard Worker * notice, this list of conditions and the following disclaimer in the
11*cfb92d14SAndroid Build Coastguard Worker * documentation and/or other materials provided with the distribution.
12*cfb92d14SAndroid Build Coastguard Worker * 3. Neither the name of the copyright holder nor the
13*cfb92d14SAndroid Build Coastguard Worker * names of its contributors may be used to endorse or promote products
14*cfb92d14SAndroid Build Coastguard Worker * derived from this software without specific prior written permission.
15*cfb92d14SAndroid Build Coastguard Worker *
16*cfb92d14SAndroid Build Coastguard Worker * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17*cfb92d14SAndroid Build Coastguard Worker * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18*cfb92d14SAndroid Build Coastguard Worker * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19*cfb92d14SAndroid Build Coastguard Worker * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
20*cfb92d14SAndroid Build Coastguard Worker * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21*cfb92d14SAndroid Build Coastguard Worker * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22*cfb92d14SAndroid Build Coastguard Worker * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23*cfb92d14SAndroid Build Coastguard Worker * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24*cfb92d14SAndroid Build Coastguard Worker * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25*cfb92d14SAndroid Build Coastguard Worker * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26*cfb92d14SAndroid Build Coastguard Worker * POSSIBILITY OF SUCH DAMAGE.
27*cfb92d14SAndroid Build Coastguard Worker */
28*cfb92d14SAndroid Build Coastguard Worker
29*cfb92d14SAndroid Build Coastguard Worker #include <openthread/config.h>
30*cfb92d14SAndroid Build Coastguard Worker
31*cfb92d14SAndroid Build Coastguard Worker #include "test_platform.h"
32*cfb92d14SAndroid Build Coastguard Worker #include "test_util.hpp"
33*cfb92d14SAndroid Build Coastguard Worker
34*cfb92d14SAndroid Build Coastguard Worker #include "common/frame_builder.hpp"
35*cfb92d14SAndroid Build Coastguard Worker
36*cfb92d14SAndroid Build Coastguard Worker namespace ot {
37*cfb92d14SAndroid Build Coastguard Worker
TestFrameBuilder(void)38*cfb92d14SAndroid Build Coastguard Worker void TestFrameBuilder(void)
39*cfb92d14SAndroid Build Coastguard Worker {
40*cfb92d14SAndroid Build Coastguard Worker const uint8_t kData1[] = {0x01, 0x02, 0x03, 0x04, 0x05};
41*cfb92d14SAndroid Build Coastguard Worker const uint8_t kData2[] = {0xff, 0xee, 0xdd, 0xcc, 0xbb, 0xaa};
42*cfb92d14SAndroid Build Coastguard Worker const uint8_t kData3[] = {0xca, 0xfe, 0xbe, 0xef};
43*cfb92d14SAndroid Build Coastguard Worker
44*cfb92d14SAndroid Build Coastguard Worker static constexpr uint16_t kMaxBufferSize = sizeof(kData1) * 2 + sizeof(kData2);
45*cfb92d14SAndroid Build Coastguard Worker
46*cfb92d14SAndroid Build Coastguard Worker Instance *instance;
47*cfb92d14SAndroid Build Coastguard Worker Message *message;
48*cfb92d14SAndroid Build Coastguard Worker uint16_t offset;
49*cfb92d14SAndroid Build Coastguard Worker uint8_t buffer[kMaxBufferSize];
50*cfb92d14SAndroid Build Coastguard Worker uint8_t zeroBuffer[kMaxBufferSize];
51*cfb92d14SAndroid Build Coastguard Worker FrameBuilder frameBuilder;
52*cfb92d14SAndroid Build Coastguard Worker
53*cfb92d14SAndroid Build Coastguard Worker printf("TestFrameBuilder\n");
54*cfb92d14SAndroid Build Coastguard Worker
55*cfb92d14SAndroid Build Coastguard Worker instance = static_cast<Instance *>(testInitInstance());
56*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(instance != nullptr);
57*cfb92d14SAndroid Build Coastguard Worker
58*cfb92d14SAndroid Build Coastguard Worker message = instance->Get<MessagePool>().Allocate(Message::kTypeIp6);
59*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(message != nullptr);
60*cfb92d14SAndroid Build Coastguard Worker
61*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(message->Append(kData1));
62*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(message->Append(kData2));
63*cfb92d14SAndroid Build Coastguard Worker
64*cfb92d14SAndroid Build Coastguard Worker memset(buffer, 0, sizeof(buffer));
65*cfb92d14SAndroid Build Coastguard Worker memset(zeroBuffer, 0, sizeof(zeroBuffer));
66*cfb92d14SAndroid Build Coastguard Worker
67*cfb92d14SAndroid Build Coastguard Worker frameBuilder.Init(buffer, sizeof(buffer));
68*cfb92d14SAndroid Build Coastguard Worker
69*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetBytes() == buffer);
70*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetLength() == 0);
71*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetMaxLength() == sizeof(buffer));
72*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer, zeroBuffer, sizeof(buffer)) == 0);
73*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.CanAppend(sizeof(buffer)));
74*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!frameBuilder.CanAppend(sizeof(buffer) + 1));
75*cfb92d14SAndroid Build Coastguard Worker
76*cfb92d14SAndroid Build Coastguard Worker frameBuilder.SetMaxLength(sizeof(kData1));
77*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetBytes() == buffer);
78*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetLength() == 0);
79*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetMaxLength() == sizeof(kData1));
80*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer, zeroBuffer, sizeof(buffer)) == 0);
81*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.CanAppend(sizeof(kData1)));
82*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!frameBuilder.CanAppend(sizeof(kData1) + 1));
83*cfb92d14SAndroid Build Coastguard Worker
84*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(frameBuilder.Append(kData1));
85*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetLength() == sizeof(kData1));
86*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetBytes() == buffer);
87*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer, kData1, sizeof(kData1)) == 0);
88*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer + sizeof(kData1), zeroBuffer, sizeof(buffer) - sizeof(kData1)) == 0);
89*cfb92d14SAndroid Build Coastguard Worker
90*cfb92d14SAndroid Build Coastguard Worker frameBuilder.SetMaxLength(sizeof(buffer));
91*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetMaxLength() == sizeof(buffer));
92*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.CanAppend(sizeof(buffer) - sizeof(kData1)));
93*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!frameBuilder.CanAppend(sizeof(buffer) - sizeof(kData1) + 1));
94*cfb92d14SAndroid Build Coastguard Worker
95*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(frameBuilder.AppendUint8(0x01));
96*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(frameBuilder.AppendBigEndianUint16(0x0203));
97*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(frameBuilder.AppendLittleEndianUint16(0x0504));
98*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetLength() == sizeof(kData1) * 2);
99*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetBytes() == buffer);
100*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer, kData1, sizeof(kData1)) == 0);
101*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer + sizeof(kData1), kData1, sizeof(kData1)) == 0);
102*cfb92d14SAndroid Build Coastguard Worker
103*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(frameBuilder.AppendBigEndianUint32(0x01020304));
104*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(frameBuilder.AppendUint8(0x05));
105*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetLength() == sizeof(kData1) * 3);
106*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetBytes() == buffer);
107*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer, kData1, sizeof(kData1)) == 0);
108*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer + sizeof(kData1), kData1, sizeof(kData1)) == 0);
109*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer + 2 * sizeof(kData1), kData1, sizeof(kData1)) == 0);
110*cfb92d14SAndroid Build Coastguard Worker
111*cfb92d14SAndroid Build Coastguard Worker frameBuilder.Init(buffer, sizeof(buffer));
112*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetBytes() == buffer);
113*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetLength() == 0);
114*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetMaxLength() == sizeof(buffer));
115*cfb92d14SAndroid Build Coastguard Worker
116*cfb92d14SAndroid Build Coastguard Worker offset = sizeof(kData1);
117*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(frameBuilder.AppendBytesFromMessage(*message, offset, sizeof(kData2)));
118*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetLength() == sizeof(kData2));
119*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetBytes() == buffer);
120*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer, kData2, sizeof(kData2)) == 0);
121*cfb92d14SAndroid Build Coastguard Worker
122*cfb92d14SAndroid Build Coastguard Worker frameBuilder.Init(buffer, sizeof(buffer));
123*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetBytes() == buffer);
124*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetLength() == 0);
125*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetMaxLength() == sizeof(buffer));
126*cfb92d14SAndroid Build Coastguard Worker
127*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(frameBuilder.AppendLittleEndianUint32(0x04030201));
128*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(frameBuilder.AppendUint8(0x05));
129*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetLength() == sizeof(kData1));
130*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetBytes() == buffer);
131*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer, kData1, sizeof(kData1)) == 0);
132*cfb92d14SAndroid Build Coastguard Worker
133*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(frameBuilder.AppendBytes(zeroBuffer, sizeof(kData2)));
134*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(frameBuilder.Append(kData1));
135*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetLength() == sizeof(buffer));
136*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetBytes() == buffer);
137*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer, kData1, sizeof(kData1)) == 0);
138*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer + sizeof(kData1), zeroBuffer, sizeof(kData2)) == 0);
139*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer + sizeof(kData1) + sizeof(kData2), kData1, sizeof(kData1)) == 0);
140*cfb92d14SAndroid Build Coastguard Worker
141*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(!frameBuilder.CanAppend(1));
142*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.AppendUint8(0x00) == kErrorNoBufs);
143*cfb92d14SAndroid Build Coastguard Worker
144*cfb92d14SAndroid Build Coastguard Worker offset = sizeof(kData1);
145*cfb92d14SAndroid Build Coastguard Worker frameBuilder.Write(offset, kData2);
146*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetLength() == sizeof(buffer));
147*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetBytes() == buffer);
148*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer, kData1, sizeof(kData1)) == 0);
149*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer + sizeof(kData1), kData2, sizeof(kData2)) == 0);
150*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer + sizeof(kData1) + sizeof(kData2), kData1, sizeof(kData1)) == 0);
151*cfb92d14SAndroid Build Coastguard Worker
152*cfb92d14SAndroid Build Coastguard Worker frameBuilder.Init(buffer, sizeof(buffer));
153*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetBytes() == buffer);
154*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetLength() == 0);
155*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetMaxLength() == sizeof(buffer));
156*cfb92d14SAndroid Build Coastguard Worker
157*cfb92d14SAndroid Build Coastguard Worker offset = 0;
158*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(frameBuilder.Insert(offset, kData1));
159*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetLength() == sizeof(kData1));
160*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetBytes() == buffer);
161*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer, kData1, sizeof(kData1)) == 0);
162*cfb92d14SAndroid Build Coastguard Worker
163*cfb92d14SAndroid Build Coastguard Worker offset = 0;
164*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(frameBuilder.Insert(offset, kData2));
165*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetLength() == sizeof(kData1) + sizeof(kData2));
166*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetBytes() == buffer);
167*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer, kData2, sizeof(kData2)) == 0);
168*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer + sizeof(kData2), kData1, sizeof(kData1)) == 0);
169*cfb92d14SAndroid Build Coastguard Worker
170*cfb92d14SAndroid Build Coastguard Worker offset = sizeof(kData2);
171*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(frameBuilder.InsertBytes(offset, kData3, sizeof(kData3)));
172*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetLength() == sizeof(kData1) + sizeof(kData2) + sizeof(kData3));
173*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetBytes() == buffer);
174*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer, kData2, sizeof(kData2)) == 0);
175*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer + sizeof(kData2), kData3, sizeof(kData3)) == 0);
176*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer + sizeof(kData2) + sizeof(kData3), kData1, sizeof(kData1)) == 0);
177*cfb92d14SAndroid Build Coastguard Worker
178*cfb92d14SAndroid Build Coastguard Worker offset = frameBuilder.GetLength();
179*cfb92d14SAndroid Build Coastguard Worker SuccessOrQuit(frameBuilder.Insert<uint8_t>(offset, 0x77));
180*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetLength() == sizeof(kData1) + sizeof(kData2) + sizeof(kData3) + sizeof(uint8_t));
181*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetBytes() == buffer);
182*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer, kData2, sizeof(kData2)) == 0);
183*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer + sizeof(kData2), kData3, sizeof(kData3)) == 0);
184*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer + sizeof(kData2) + sizeof(kData3), kData1, sizeof(kData1)) == 0);
185*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(buffer[sizeof(kData2) + sizeof(kData3) + sizeof(kData1)] == 0x77);
186*cfb92d14SAndroid Build Coastguard Worker
187*cfb92d14SAndroid Build Coastguard Worker offset = frameBuilder.GetLength() - 1;
188*cfb92d14SAndroid Build Coastguard Worker frameBuilder.RemoveBytes(offset, sizeof(uint8_t));
189*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetLength() == sizeof(kData1) + sizeof(kData2) + sizeof(kData3));
190*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetBytes() == buffer);
191*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer, kData2, sizeof(kData2)) == 0);
192*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer + sizeof(kData2), kData3, sizeof(kData3)) == 0);
193*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer + sizeof(kData2) + sizeof(kData3), kData1, sizeof(kData1)) == 0);
194*cfb92d14SAndroid Build Coastguard Worker
195*cfb92d14SAndroid Build Coastguard Worker offset = sizeof(kData2);
196*cfb92d14SAndroid Build Coastguard Worker frameBuilder.RemoveBytes(offset, sizeof(kData3));
197*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetLength() == sizeof(kData1) + sizeof(kData2));
198*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetBytes() == buffer);
199*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer, kData2, sizeof(kData2)) == 0);
200*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer + sizeof(kData2), kData1, sizeof(kData1)) == 0);
201*cfb92d14SAndroid Build Coastguard Worker
202*cfb92d14SAndroid Build Coastguard Worker offset = 0;
203*cfb92d14SAndroid Build Coastguard Worker frameBuilder.RemoveBytes(offset, sizeof(kData2));
204*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetLength() == sizeof(kData1));
205*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetBytes() == buffer);
206*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(memcmp(buffer, kData1, sizeof(kData1)) == 0);
207*cfb92d14SAndroid Build Coastguard Worker
208*cfb92d14SAndroid Build Coastguard Worker offset = 0;
209*cfb92d14SAndroid Build Coastguard Worker frameBuilder.RemoveBytes(offset, sizeof(kData1));
210*cfb92d14SAndroid Build Coastguard Worker VerifyOrQuit(frameBuilder.GetLength() == 0);
211*cfb92d14SAndroid Build Coastguard Worker
212*cfb92d14SAndroid Build Coastguard Worker message->Free();
213*cfb92d14SAndroid Build Coastguard Worker testFreeInstance(instance);
214*cfb92d14SAndroid Build Coastguard Worker }
215*cfb92d14SAndroid Build Coastguard Worker
216*cfb92d14SAndroid Build Coastguard Worker } // namespace ot
217*cfb92d14SAndroid Build Coastguard Worker
main(void)218*cfb92d14SAndroid Build Coastguard Worker int main(void)
219*cfb92d14SAndroid Build Coastguard Worker {
220*cfb92d14SAndroid Build Coastguard Worker ot::TestFrameBuilder();
221*cfb92d14SAndroid Build Coastguard Worker
222*cfb92d14SAndroid Build Coastguard Worker printf("All tests passed\n");
223*cfb92d14SAndroid Build Coastguard Worker return 0;
224*cfb92d14SAndroid Build Coastguard Worker }
225