blob: 0480ed3f60c069d1d1a23466300f85a67bb560e4 [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