blob: 855c8e2305b6afdb4935cb61be4da4486ac532a7 [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.
#ifndef SRC_DEVELOPER_DEBUG_ZXDB_EXPR_EVAL_TEST_SUPPORT_H_
#define SRC_DEVELOPER_DEBUG_ZXDB_EXPR_EVAL_TEST_SUPPORT_H_
#include "src/developer/debug/zxdb/expr/expr_value.h"
#include "src/developer/debug/zxdb/symbols/collection.h"
#include "src/developer/debug/zxdb/symbols/modified_type.h"
namespace zxdb {
// Several casting tests test base/derived class conversions. This structure contains the elaborate
// setup for these related cases. It declares:
//
// struct Base1 {
// int16_t b = kB1Value;
// };
//
// struct Base2 {
// int32_t b = kB2Value;
// };
//
// struct Derived : public Base1, public Base2 {
// int32_t d = kDValue;
// };
//
// Derived derived_value;
//
// Derived* derived_ptr_value = &derived_value;
// Base1* base1_ptr_value = &derived_value;
// Base2* base2_ptr_value = &derived_value;
struct DerivedClassTestSetup {
DerivedClassTestSetup();
fxl::RefPtr<Collection> base1_type;
fxl::RefPtr<Collection> base2_type;
fxl::RefPtr<Collection> derived_type;
fxl::RefPtr<ModifiedType> base1_ptr_type; // Base1*
fxl::RefPtr<ModifiedType> base2_ptr_type; // Base2*
fxl::RefPtr<ModifiedType> derived_ptr_type; // Derived*
fxl::RefPtr<ModifiedType> base1_ref_type; // Base1&
fxl::RefPtr<ModifiedType> base2_ref_type; // Base2&
fxl::RefPtr<ModifiedType> derived_ref_type; // Derived&
ExprValue base1_value; // References inside of derived.
ExprValue base2_value; // References inside of derived.
ExprValue derived_value;
ExprValue base1_ptr_value; // Base1* base1_ptr_value = &base1_value;
ExprValue base2_ptr_value; // Base2* base2_ptr_value = &base2_value;
ExprValue derived_ptr_value; // Derived* derived_ptr_value = &derived_value;
ExprValue base1_ref_value; // Base1& base1_ref_value = base1_value;
ExprValue base2_ref_value; // Base1& base2_ref_value = base2_value;
ExprValue derived_ref_value; // Derived& derived_ref_value = derived_value;
uint64_t kBase1Offset = 0; // Offset of Base1 in Derived.
uint64_t kBase2Offset = 2; // Offset of Base2 in Derived.
uint64_t kDerivedAddr = 0x3000; // &derived_value
uint64_t kBase1Addr = kDerivedAddr + kBase1Offset; // &base1_value
uint64_t kBase2Addr = kDerivedAddr + kBase2Offset; // &base2_value
};
} // namespace zxdb
#endif // SRC_DEVELOPER_DEBUG_ZXDB_EXPR_EVAL_TEST_SUPPORT_H_