/*
* Copyright ( c ) 2021 The WebRTC project authors . All Rights Reserved .
*
* Use of this source code is governed by a BSD - style license
* that can be found in the LICENSE file in the root of the source
* tree . An additional intellectual property rights grant can be found
* in the file PATENTS . All contributing project authors may
* be found in the AUTHORS file in the root of the source tree .
*/
#include "net/dcsctp/packet/crc32c.h"
#include <array>
#include <cstdint>
#include "test/gtest.h"
namespace dcsctp {
namespace {
constexpr std::array<
const uint8_t,
0 > kEmpty = {};
constexpr std::array<
const uint8_t,
1 > kZero = {
0 };
constexpr std::array<
const uint8_t,
4 > kManyZeros = {
0 ,
0 ,
0 ,
0 };
constexpr std::array<
const uint8_t,
4 > kShort = {
1 ,
2 ,
3 ,
4 };
constexpr std::array<
const uint8_t,
8 > kLong = {
1 ,
2 ,
3 ,
4 ,
5 ,
6 ,
7 ,
8 };
// https://tools.ietf.org/html/rfc3720#appendix-B.4
constexpr std::array<
const uint8_t,
32 > k32Zeros = {
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 ,
0 };
constexpr std::array<
const uint8_t,
32 > k32Ones = {
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF,
0 xFF};
constexpr std::array<
const uint8_t,
32 > k32Incrementing = {
0 ,
1 ,
2 ,
3 ,
4 ,
5 ,
6 ,
7 ,
8 ,
9 ,
10 ,
11 ,
12 ,
13 ,
14 ,
15 ,
16 ,
17 ,
18 ,
19 ,
20 ,
21 ,
22 ,
23 ,
24 ,
25 ,
26 ,
27 ,
28 ,
29 ,
30 ,
31 };
constexpr std::array<
const uint8_t,
32 > k32Decrementing = {
31 ,
30 ,
29 ,
28 ,
27 ,
26 ,
25 ,
24 ,
23 ,
22 ,
21 ,
20 ,
19 ,
18 ,
17 ,
16 ,
15 ,
14 ,
13 ,
12 ,
11 ,
10 ,
9 ,
8 ,
7 ,
6 ,
5 ,
4 ,
3 ,
2 ,
1 ,
0 };
constexpr std::array<
const uint8_t,
48 > kISCSICommandPDU = {
0 x01,
0 xc0,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x14,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x04,
0 x00,
0 x00,
0 x00,
0 x00,
0 x14,
0 x00,
0 x00,
0 x00,
0 x18,
0 x28,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x02,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
0 x00,
};
TEST(Crc32Test, TestVectors) {
EXPECT_EQ(GenerateCrc32C(kEmpty),
0 U);
EXPECT_EQ(GenerateCrc32C(kZero),
0 x51537d52U);
EXPECT_EQ(GenerateCrc32C(kManyZeros),
0 xc74b6748U);
EXPECT_EQ(GenerateCrc32C(kShort),
0 xf48c3029U);
EXPECT_EQ(GenerateCrc32C(kLong),
0 x811f8946U);
// https://tools.ietf.org/html/rfc3720#appendix-B.4
EXPECT_EQ(GenerateCrc32C(k32Zeros),
0 xaa36918aU);
EXPECT_EQ(GenerateCrc32C(k32Ones),
0 x43aba862U);
EXPECT_EQ(GenerateCrc32C(k32Incrementing),
0 x4e79dd46U);
EXPECT_EQ(GenerateCrc32C(k32Decrementing),
0 x5cdb3f11U);
EXPECT_EQ(GenerateCrc32C(kISCSICommandPDU),
0 x563a96d9U);
}
}
// namespace
}
// namespace dcsctp
Messung V0.5 in Prozent C=96 H=95 G=95
¤ Dauer der Verarbeitung: 0.4 Sekunden
¤
*© Formatika GbR, Deutschland