1// Copyright 2016 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#include <trace-engine/fields.h>
6
7#include <unittest/unittest.h>
8
9namespace {
10
11static bool field_get_set_test(void) {
12    BEGIN_TEST;
13
14    uint64_t value(0);
15
16    trace::Field<0, 0>::Set(value, uint8_t(1));
17    trace::Field<1, 1>::Set(value, uint8_t(1));
18    trace::Field<2, 2>::Set(value, uint8_t(1));
19    trace::Field<3, 3>::Set(value, uint8_t(1));
20    trace::Field<4, 4>::Set(value, uint8_t(1));
21    trace::Field<5, 5>::Set(value, uint8_t(1));
22    trace::Field<6, 6>::Set(value, uint8_t(1));
23    trace::Field<7, 7>::Set(value, uint8_t(1));
24
25    EXPECT_EQ(uint8_t(-1), value);
26    value = 0;
27    trace::Field<0, 2>::Set(value, uint8_t(7));
28    EXPECT_EQ(uint8_t(7), value);
29    trace::Field<0, 2>::Set(value, uint8_t(0));
30    EXPECT_EQ(uint8_t(0), value);
31
32    END_TEST;
33}
34
35} // namespace
36
37BEGIN_TEST_CASE(types)
38RUN_TEST(field_get_set_test)
39END_TEST_CASE(types)
40