std::unique_ptr GenerateTypedListTestObject()

in hessian2/basic_codec/list_codec_unittests.cc [47:124]


std::unique_ptr<ClassInstanceObject> GenerateTypedListTestObject() {
  Object::ClassInstance o;
  o.def_ = std::make_shared<Object::RawDefinition>();
  o.def_->type_ = "test.TypedListTest";
  o.def_->field_names_.emplace_back("a");
  o.def_->field_names_.emplace_back("list");
  o.def_->field_names_.emplace_back("list1");

  std::vector<Object::ClassInstance> cls;

  for (int i = 0; i < 5; i++) {
    Object::ClassInstance c;
    c.def_ = std::make_shared<Object::RawDefinition>();
    c.def_->type_ = "com.caucho.hessian.test.A0";
    cls.emplace_back(std::move(c));
  }

  for (int i = 0; i < 4; i++) {
    Object::ClassInstance c;
    c.def_ = std::make_shared<Object::RawDefinition>();
    c.def_->type_ = "com.caucho.hessian.test.A1";
    cls.emplace_back(std::move(c));
  }
  {
    Object::TypedList o1;
    o1.type_name_ = "[com.caucho.hessian.test.A0";
    o1.values_.emplace_back(
        std::make_unique<ClassInstanceObject>(std::move(cls[0])));
    o1.values_.emplace_back(
        std::make_unique<ClassInstanceObject>(std::move(cls[1])));
    auto object1 = std::make_unique<TypedListObject>(std::move(o1));

    Object::TypedList o2;
    o2.type_name_ = "[com.caucho.hessian.test.A0";
    o2.values_.emplace_back(
        std::make_unique<ClassInstanceObject>(std::move(cls[2])));
    o2.values_.emplace_back(
        std::make_unique<ClassInstanceObject>(std::move(cls[3])));
    auto object2 = std::make_unique<TypedListObject>(std::move(o2));

    o.data_.emplace_back(
        std::make_unique<ClassInstanceObject>(std::move(cls[4])));

    Object::TypedList o3;
    o3.type_name_ = "[[com.caucho.hessian.test.A0";
    o3.values_.emplace_back(std::move(object1));
    o3.values_.emplace_back(std::move(object2));
    auto object3 = std::make_unique<TypedListObject>(std::move(o3));
    o.data_.emplace_back(std::move(object3));
  }

  {
    Object::TypedList o1;
    o1.type_name_ = "[com.caucho.hessian.test.A1";
    o1.values_.emplace_back(
        std::make_unique<ClassInstanceObject>(std::move(cls[5])));
    o1.values_.emplace_back(
        std::make_unique<ClassInstanceObject>(std::move(cls[6])));
    auto object1 = std::make_unique<TypedListObject>(std::move(o1));

    Object::TypedList o2;
    o2.type_name_ = "[com.caucho.hessian.test.A1";
    o2.values_.emplace_back(
        std::make_unique<ClassInstanceObject>(std::move(cls[7])));
    o2.values_.emplace_back(
        std::make_unique<ClassInstanceObject>(std::move(cls[8])));
    auto object2 = std::make_unique<TypedListObject>(std::move(o2));

    Object::TypedList o3;
    o3.type_name_ = "[[com.caucho.hessian.test.A1";
    o3.values_.emplace_back(std::move(object1));
    o3.values_.emplace_back(std::move(object2));
    auto object3 = std::make_unique<TypedListObject>(std::move(o3));
    o.data_.emplace_back(std::move(object3));
  }
  auto class_instance = std::make_unique<ClassInstanceObject>(std::move(o));
  return class_instance;
}