Beispiel #1
0
/*!
    Returns a deep-copied clone of the QUmlOpaqueExpression.
*/
QModelingElement *QUmlOpaqueExpression::clone() const
{
    QUmlOpaqueExpression *c = new QUmlOpaqueExpression;
    c->asQModelingObject()->setObjectName(this->asQModelingObject()->objectName());
    c->asQModelingObject()->setProperty("role", this->asQModelingObject()->property("role"));
    foreach (QUmlComment *element, ownedComments())
        c->addOwnedComment(dynamic_cast<QUmlComment *>(element->clone()));
    c->setName(name());
    if (nameExpression())
        c->setNameExpression(dynamic_cast<QUmlStringExpression *>(nameExpression()->clone()));
    c->setVisibility(visibility());
    foreach (QString element, bodies())
        c->addBody(element);
    foreach (QString element, languages())
        c->addLanguage(element);
    return c;
}
Beispiel #2
0
void test_string() {
  constexpr size_t NUM_STRINGS = 1024;

  std::vector<std::string> strings(NUM_STRINGS);
  std::vector<grnxx::String> refs(NUM_STRINGS);
  std::vector<grnxx::String> bodies(NUM_STRINGS);
  for (size_t i = 0; i < NUM_STRINGS; ++i) {
    std::stringstream stream;
    stream << i;
    strings[i] = stream.str();
    refs[i] = grnxx::String(strings[i].data(), strings[i].size());
    assert(refs[i].is_reference());
    bodies[i].assign(refs[i]);
    assert(bodies[i].is_instance());
  }

  for (size_t i = 0; i < NUM_STRINGS; ++i) {
    assert(bodies[i].size() == static_cast<size_t>(strings[i].size()));
    for (size_t j = 0; j < bodies[i].size(); ++j) {
      assert(bodies[i][j] == strings[i][j]);
    }

    for (size_t j = 0; j < NUM_STRINGS; ++j) {
      assert((bodies[i] == bodies[j]) == (strings[i] == strings[j]));
      assert((bodies[i] != bodies[j]) == (strings[i] != strings[j]));
      assert((bodies[i] < bodies[j]) == (strings[i] < strings[j]));
      assert((bodies[i] > bodies[j]) == (strings[i] > strings[j]));
      assert((bodies[i] <= bodies[j]) == (strings[i] <= strings[j]));
      assert((bodies[i] >= bodies[j]) == (strings[i] >= strings[j]));

      assert((bodies[i] == refs[j]) == (strings[i] == strings[j]));
      assert((bodies[i] != refs[j]) == (strings[i] != strings[j]));
      assert((bodies[i] < refs[j]) == (strings[i] < strings[j]));
      assert((bodies[i] > refs[j]) == (strings[i] > strings[j]));
      assert((bodies[i] <= refs[j]) == (strings[i] <= strings[j]));
      assert((bodies[i] >= refs[j]) == (strings[i] >= strings[j]));

      assert((bodies[i] == strings[j].c_str()) == (strings[i] == strings[j]));
      assert((bodies[i] != strings[j].c_str()) == (strings[i] != strings[j]));
      assert((bodies[i] < strings[j].c_str()) == (strings[i] < strings[j]));
      assert((bodies[i] > strings[j].c_str()) == (strings[i] > strings[j]));
      assert((bodies[i] <= strings[j].c_str()) == (strings[i] <= strings[j]));
      assert((bodies[i] >= strings[j].c_str()) == (strings[i] >= strings[j]));

      assert((refs[i] == bodies[j]) == (strings[i] == strings[j]));
      assert((refs[i] != bodies[j]) == (strings[i] != strings[j]));
      assert((refs[i] < bodies[j]) == (strings[i] < strings[j]));
      assert((refs[i] > bodies[j]) == (strings[i] > strings[j]));
      assert((refs[i] <= bodies[j]) == (strings[i] <= strings[j]));
      assert((refs[i] >= bodies[j]) == (strings[i] >= strings[j]));

      assert((strings[i].c_str() == bodies[j]) == (strings[i] == strings[j]));
      assert((strings[i].c_str() != bodies[j]) == (strings[i] != strings[j]));
      assert((strings[i].c_str() < bodies[j]) == (strings[i] < strings[j]));
      assert((strings[i].c_str() > bodies[j]) == (strings[i] > strings[j]));
      assert((strings[i].c_str() <= bodies[j]) == (strings[i] <= strings[j]));
      assert((strings[i].c_str() >= bodies[j]) == (strings[i] >= strings[j]));

      assert(bodies[i].starts_with(bodies[j]) ==
             string_starts_with(strings[i], strings[j]));
      assert(bodies[i].starts_with(strings[j].c_str()) ==
             string_starts_with(strings[i], strings[j]));
      assert(bodies[i].ends_with(bodies[j]) ==
             string_ends_with(strings[i], strings[j]));
      assert(bodies[i].ends_with(strings[j].c_str()) ==
             string_ends_with(strings[i], strings[j]));
    }
  }

  for (size_t i = 0; i < NUM_STRINGS; ++i) {
    std::stringstream stream;
    stream << (i / 2.0);
    std::string extra_string = stream.str();
    strings[i].append(extra_string);
    bodies[i].append(extra_string.data(), extra_string.size());
    assert(bodies[i] == grnxx::String(strings[i].data(), strings[i].size()));
  }

  for (size_t i = 0; i < NUM_STRINGS; ++i) {
    strings[i].append(strings[i]);
    bodies[i].append(bodies[i]);
    assert(std::string(bodies[i].data(), bodies[i].size()) == strings[i]);
  }
}