1*61c4878aSAndroid Build Coastguard Worker // Copyright 2019 The Pigweed Authors
2*61c4878aSAndroid Build Coastguard Worker //
3*61c4878aSAndroid Build Coastguard Worker // Licensed under the Apache License, Version 2.0 (the "License"); you may not
4*61c4878aSAndroid Build Coastguard Worker // use this file except in compliance with the License. You may obtain a copy of
5*61c4878aSAndroid Build Coastguard Worker // the License at
6*61c4878aSAndroid Build Coastguard Worker //
7*61c4878aSAndroid Build Coastguard Worker // https://www.apache.org/licenses/LICENSE-2.0
8*61c4878aSAndroid Build Coastguard Worker //
9*61c4878aSAndroid Build Coastguard Worker // Unless required by applicable law or agreed to in writing, software
10*61c4878aSAndroid Build Coastguard Worker // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
11*61c4878aSAndroid Build Coastguard Worker // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
12*61c4878aSAndroid Build Coastguard Worker // License for the specific language governing permissions and limitations under
13*61c4878aSAndroid Build Coastguard Worker // the License.
14*61c4878aSAndroid Build Coastguard Worker
15*61c4878aSAndroid Build Coastguard Worker #include "pw_preprocessor/util.h"
16*61c4878aSAndroid Build Coastguard Worker
17*61c4878aSAndroid Build Coastguard Worker #include <cstdint>
18*61c4878aSAndroid Build Coastguard Worker
19*61c4878aSAndroid Build Coastguard Worker #include "pw_unit_test/framework.h"
20*61c4878aSAndroid Build Coastguard Worker
21*61c4878aSAndroid Build Coastguard Worker namespace pw {
22*61c4878aSAndroid Build Coastguard Worker namespace {
23*61c4878aSAndroid Build Coastguard Worker
TEST(Macros,ArraySize)24*61c4878aSAndroid Build Coastguard Worker TEST(Macros, ArraySize) {
25*61c4878aSAndroid Build Coastguard Worker uint32_t hello_there[123];
26*61c4878aSAndroid Build Coastguard Worker static_assert(PW_ARRAY_SIZE(hello_there) == 123);
27*61c4878aSAndroid Build Coastguard Worker
28*61c4878aSAndroid Build Coastguard Worker char characters[500];
29*61c4878aSAndroid Build Coastguard Worker static_assert(PW_ARRAY_SIZE(characters) == 500);
30*61c4878aSAndroid Build Coastguard Worker static_assert(PW_ARRAY_SIZE("2345") == 5);
31*61c4878aSAndroid Build Coastguard Worker
32*61c4878aSAndroid Build Coastguard Worker struct Object {
33*61c4878aSAndroid Build Coastguard Worker int a;
34*61c4878aSAndroid Build Coastguard Worker uint64_t array[7];
35*61c4878aSAndroid Build Coastguard Worker };
36*61c4878aSAndroid Build Coastguard Worker Object objects[9];
37*61c4878aSAndroid Build Coastguard Worker
38*61c4878aSAndroid Build Coastguard Worker static_assert(PW_ARRAY_SIZE(objects) == 9);
39*61c4878aSAndroid Build Coastguard Worker static_assert(PW_ARRAY_SIZE(Object::array) == 7);
40*61c4878aSAndroid Build Coastguard Worker static_assert(PW_ARRAY_SIZE(objects[1].array) == 7);
41*61c4878aSAndroid Build Coastguard Worker }
42*61c4878aSAndroid Build Coastguard Worker
43*61c4878aSAndroid Build Coastguard Worker #define HELLO hello
44*61c4878aSAndroid Build Coastguard Worker #define WORLD WORLD_IMPL()
45*61c4878aSAndroid Build Coastguard Worker #define WORLD_IMPL() WORLD !
46*61c4878aSAndroid Build Coastguard Worker
TEST(Macros,Stringify)47*61c4878aSAndroid Build Coastguard Worker TEST(Macros, Stringify) {
48*61c4878aSAndroid Build Coastguard Worker EXPECT_STREQ("", PW_STRINGIFY());
49*61c4878aSAndroid Build Coastguard Worker EXPECT_STREQ("> _ <", PW_STRINGIFY(> _ <));
50*61c4878aSAndroid Build Coastguard Worker EXPECT_STREQ("hello WORLD !", PW_STRINGIFY(HELLO WORLD));
51*61c4878aSAndroid Build Coastguard Worker EXPECT_STREQ("hello, WORLD !", PW_STRINGIFY(HELLO, WORLD));
52*61c4878aSAndroid Build Coastguard Worker EXPECT_STREQ("a, b, c, hello, WORLD ! 2",
53*61c4878aSAndroid Build Coastguard Worker PW_STRINGIFY(a, b, c, HELLO, WORLD 2));
54*61c4878aSAndroid Build Coastguard Worker }
55*61c4878aSAndroid Build Coastguard Worker
56*61c4878aSAndroid Build Coastguard Worker } // namespace
57*61c4878aSAndroid Build Coastguard Worker } // namespace pw
58