void ribi::cmap::QtRateExamplesDialogNewName::Test() noexcept
{
  {
    static bool is_tested = false;
    if (is_tested) return;
    is_tested = true;
  }
  TRACE("ribi::cmap::QtRateExamplesDialog::Test started");
  ///Test conversion between reading and writing a concept
  {
    const int sz = ribi::cmap::ConceptFactory().GetTests().size();
    for (int i=0; i!=sz; ++i)
    {
      assert(i < static_cast<int>(ConceptFactory().GetTests().size()));
      const auto a = QtRateExamplesDialogNewName(cmap::ConceptFactory().GetTests()[i]).GetRatedExamples();
      assert(a);
      for (int j=0; j!=sz; ++j)
      {
        assert(j < static_cast<int>(ConceptFactory().GetTests().size()));
        const auto b = QtRateExamplesDialogNewName(cmap::ConceptFactory().GetTests()[j]).GetRatedExamples();
        assert(b);
        assert(a != b);
        if (i == j)
        {
          assert(*a == *b);
        }
        else
        {
          assert(*a != *b);
        }
      }
    }
  }
  TRACE("ribi::cmap::QtRateExamplesDialog::Test finished successfully");
}
コード例 #2
0
std::vector<ribi::cmap::Node> ribi::cmap::NodeFactory::GetNastyTests() const noexcept
{
  std::vector<Node> nodes;
  const auto v = ConceptFactory().GetNastyTests();
  std::transform(v.begin(),v.end(),std::back_inserter(nodes),
    [](const Concept& c)
    {
      const double x{1.2};
      const double y{3.4};
      const Node p{c,false,x,y};
      return p;
    }
  );
  return nodes;
}
コード例 #3
0
ribi::cmap::Edge ribi::cmap::EdgeFactory::Create(
  const Node& from,
  const Node& to
) const noexcept
{
  //Nodes may be similar, but not the same
  assert(&from != &to);

  const double x{(from.GetX() + to.GetX()) / 2.0};
  const double y{(from.GetY() + to.GetY()) / 2.0};
  const auto concept = ConceptFactory().Create();
  const Node node(concept,x,y);
  Edge p(
    node
  );
  return p;
}
コード例 #4
0
ribi::cmap::Node ribi::cmap::NodeFactory::CreateFromStrings(
  const std::string& name,
  const std::vector<std::pair<std::string,Competency> >& examples,
  const double x,
  const double y
) const noexcept
{
  const bool is_center_node{false};
  Node node(
    ConceptFactory().Create(name,examples),
    is_center_node,
    x,
    y
  );
  assert(node.GetX() == x);
  assert(node.GetY() == y);
  return node;
}
コード例 #5
0
const boost::shared_ptr<ribi::cmap::CenterNode> ribi::cmap::CenterNodeFactory::FromXml(
  const std::string& s
) const noexcept
{
  if (s.size() < 27)
  {
    return nullptr;
  }
  if (s.substr(0,13) != std::string("<center_node>"))
  {
    return nullptr;
  }
  if (s.substr(s.size() - 14,14) != std::string("</center_node>"))
  {
    return nullptr;
  }

  //m_concept
  boost::shared_ptr<Concept> concept;
  {
    const std::vector<std::string> v = GetRegexMatches(s,QRegExp("(<concept>.*</concept>)"));
    assert(v.size() == 1);
    concept = ConceptFactory().FromXml(v[0]);
  }
  //m_x
  double x = 0.0;
  {
    const std::vector<std::string> v = GetRegexMatches(s,QRegExp("(<x>.*</x>)"));
    assert(v.size() == 1);
    x = boost::lexical_cast<double>(ribi::xml::StripXmlTag(v[0]));
  }
  //m_x
  double y = 0.0;
  {
    const std::vector<std::string> v = GetRegexMatches(s,QRegExp("(<y>.*</y>)"));
    assert(v.size() == 1);
    y = boost::lexical_cast<double>(ribi::xml::StripXmlTag(v[0]));
  }
  assert(concept);
  const boost::shared_ptr<CenterNode> node(new CenterNode(concept,x,y,*this));
  assert(node);
  assert(node->ToXml() == s);
  return node;
}
コード例 #6
0
const boost::shared_ptr<ribi::cmap::CenterNode> ribi::cmap::CenterNodeFactory::DeepCopy(
  const boost::shared_ptr<const cmap::CenterNode>& node
) const noexcept
{
  assert(node);
  assert(node->GetConcept());
  const boost::shared_ptr<Concept> new_concept {
    ConceptFactory().DeepCopy(node->GetConcept())
  };
  assert(new_concept);
  assert(*node->GetConcept() == *new_concept);
  const boost::shared_ptr<CenterNode> new_node
    = Create(new_concept,
      node->GetX(),
      node->GetY()
    );
  assert(new_node);
  assert(new_node->GetConcept());
  assert(*node == *new_node);
  return new_node;
}
コード例 #7
0
const boost::shared_ptr<ribi::cmap::CenterNode> ribi::cmap::CenterNodeFactory::CreateFromStrings(
  const std::string& name,
  const std::vector<std::pair<std::string,Competency> >& examples,
  const double x,
  const double y
) const noexcept
{
  boost::shared_ptr<CenterNode> node(
    new CenterNode(
      ConceptFactory().Create(name,examples),
      x,
      y,
      *this
    )
  );
  assert(node);
  assert(node->GetConcept());
  assert(node->GetX() == x);
  assert(node->GetY() == y);
  return node;
}
コード例 #8
0
int ribi::cmap::EdgeFactory::GetNumberOfTests() const noexcept
{
  return ConceptFactory().GetNumberOfTests();
}