blob: e1ad184e6521b70b369fbb48a3f56e7dd7a8186d [file] [log] [blame]
// Copyright 2019 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "src/developer/debug/zxdb/expr/expr_value_source.h"
#include "gtest/gtest.h"
namespace zxdb {
TEST(ExprValueSource, SetBits) {
// Masking with no shift.
ExprValueSource no_shift_8_bits(0x1000, 8, 0);
EXPECT_EQ(123u, no_shift_8_bits.SetBits(0, 123)); // Write random number
EXPECT_EQ(255u, no_shift_8_bits.SetBits(0, 0xfffffffffu)); // Set all bits
EXPECT_EQ(0xffffff00u, no_shift_8_bits.SetBits(0xffffffffu, 0)); // Clear all bits.
// Masking with shift.
ExprValueSource shift_3_8_bits(0x1000, 8, 3);
EXPECT_EQ(123u << 3, shift_3_8_bits.SetBits(0, 123)); // Write random number.
EXPECT_EQ(0xffu << 3, shift_3_8_bits.SetBits(0, 0xff)); // Set all bits.
EXPECT_EQ(0xf807u, shift_3_8_bits.SetBits(0xffff, 0));
}
} // namespace zxdb