data: saving NameHierarchy directly to Node without TokenComponentName
This commit is contained in:
@@ -113,8 +113,6 @@ add_files(
|
|||||||
data/graph/token_component/TokenComponentConst.h
|
data/graph/token_component/TokenComponentConst.h
|
||||||
data/graph/token_component/TokenComponentFilePath.cpp
|
data/graph/token_component/TokenComponentFilePath.cpp
|
||||||
data/graph/token_component/TokenComponentFilePath.h
|
data/graph/token_component/TokenComponentFilePath.h
|
||||||
data/graph/token_component/TokenComponentName.cpp
|
|
||||||
data/graph/token_component/TokenComponentName.h
|
|
||||||
data/graph/token_component/TokenComponentStatic.cpp
|
data/graph/token_component/TokenComponentStatic.cpp
|
||||||
data/graph/token_component/TokenComponentStatic.h
|
data/graph/token_component/TokenComponentStatic.h
|
||||||
|
|
||||||
|
|||||||
@@ -9,7 +9,6 @@
|
|||||||
#include "utility/utilityString.h"
|
#include "utility/utilityString.h"
|
||||||
|
|
||||||
#include "data/graph/token_component/TokenComponentAggregation.h"
|
#include "data/graph/token_component/TokenComponentAggregation.h"
|
||||||
#include "data/graph/token_component/TokenComponentName.h"
|
|
||||||
#include "data/graph/Graph.h"
|
#include "data/graph/Graph.h"
|
||||||
#include "data/location/TokenLocation.h"
|
#include "data/location/TokenLocation.h"
|
||||||
#include "data/location/TokenLocationFile.h"
|
#include "data/location/TokenLocationFile.h"
|
||||||
@@ -1442,7 +1441,7 @@ Node* Storage::addNodeToGraph(const Id nodeId, Graph* graph) const
|
|||||||
node = graph->createNode(
|
node = graph->createNode(
|
||||||
storageNode.id,
|
storageNode.id,
|
||||||
Node::intToType(storageNode.type),
|
Node::intToType(storageNode.type),
|
||||||
std::make_shared<TokenComponentNameCached>(m_tokenIndex.getNameHierarchyForTokenId(nodeId))
|
m_tokenIndex.getNameHierarchyForTokenId(nodeId)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ void Graph::forEachToken(std::function<void(Token*)> func) const
|
|||||||
forEachEdge(func);
|
forEachEdge(func);
|
||||||
}
|
}
|
||||||
|
|
||||||
Node* Graph::createNode(Id id, Node::NodeType type, std::shared_ptr<TokenComponentName> nameComponent)
|
Node* Graph::createNode(Id id, Node::NodeType type, NameHierarchy nameHierarchy)
|
||||||
{
|
{
|
||||||
Node* n = getNodeById(id);
|
Node* n = getNodeById(id);
|
||||||
if (n)
|
if (n)
|
||||||
@@ -48,7 +48,7 @@ Node* Graph::createNode(Id id, Node::NodeType type, std::shared_ptr<TokenCompone
|
|||||||
return n;
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<Node> node = std::make_shared<Node>(id, type, nameComponent);
|
std::shared_ptr<Node> node = std::make_shared<Node>(id, type, nameHierarchy);
|
||||||
m_nodes.emplace(node->getId(), node);
|
m_nodes.emplace(node->getId(), node);
|
||||||
return node.get();
|
return node.get();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ public:
|
|||||||
void forEachEdge(std::function<void(Edge*)> func) const;
|
void forEachEdge(std::function<void(Edge*)> func) const;
|
||||||
void forEachToken(std::function<void(Token*)> func) const;
|
void forEachToken(std::function<void(Token*)> func) const;
|
||||||
|
|
||||||
Node* createNode(Id id, Node::NodeType type, std::shared_ptr<TokenComponentName> nameComponent);
|
Node* createNode(Id id, Node::NodeType type, NameHierarchy nameHierarchy);
|
||||||
Edge* createEdge(Id id, Edge::EdgeType type, Node* from, Node* to);
|
Edge* createEdge(Id id, Edge::EdgeType type, Node* from, Node* to);
|
||||||
|
|
||||||
size_t getNodeCount() const;
|
size_t getNodeCount() const;
|
||||||
|
|||||||
@@ -6,7 +6,6 @@
|
|||||||
|
|
||||||
#include "data/graph/token_component/TokenComponentAbstraction.h"
|
#include "data/graph/token_component/TokenComponentAbstraction.h"
|
||||||
#include "data/graph/token_component/TokenComponentConst.h"
|
#include "data/graph/token_component/TokenComponentConst.h"
|
||||||
#include "data/graph/token_component/TokenComponentName.h"
|
|
||||||
#include "data/graph/token_component/TokenComponentStatic.h"
|
#include "data/graph/token_component/TokenComponentStatic.h"
|
||||||
#include "data/graph/token_component/TokenComponentFilePath.h"
|
#include "data/graph/token_component/TokenComponentFilePath.h"
|
||||||
|
|
||||||
@@ -97,17 +96,17 @@ Node::NodeType Node::intToType(int value)
|
|||||||
return NODE_UNDEFINED;
|
return NODE_UNDEFINED;
|
||||||
}
|
}
|
||||||
|
|
||||||
Node::Node(Id id, NodeType type, std::shared_ptr<TokenComponentName> nameComponent)
|
Node::Node(Id id, NodeType type, NameHierarchy nameHierarchy)
|
||||||
: Token(id)
|
: Token(id)
|
||||||
, m_type(type)
|
, m_type(type)
|
||||||
, m_nameComponent(nameComponent)
|
, m_nameHierarchy(nameHierarchy)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
Node::Node(const Node& other)
|
Node::Node(const Node& other)
|
||||||
: Token(other)
|
: Token(other)
|
||||||
, m_type(other.m_type)
|
, m_type(other.m_type)
|
||||||
, m_nameComponent(other.m_nameComponent->copyComponentName())
|
, m_nameHierarchy(other.m_nameHierarchy)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -139,22 +138,12 @@ bool Node::isType(NodeTypeMask mask) const
|
|||||||
|
|
||||||
std::string Node::getName() const
|
std::string Node::getName() const
|
||||||
{
|
{
|
||||||
return m_nameComponent->getName();
|
return m_nameHierarchy.getName();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string Node::getFullName() const
|
std::string Node::getFullName() const
|
||||||
{
|
{
|
||||||
return m_nameComponent->getFullName();
|
return m_nameHierarchy.getFullName();
|
||||||
}
|
|
||||||
|
|
||||||
const TokenComponentName* Node::getTokenComponentName() const
|
|
||||||
{
|
|
||||||
if (m_nameComponent)
|
|
||||||
{
|
|
||||||
return m_nameComponent.get();
|
|
||||||
}
|
|
||||||
|
|
||||||
return nullptr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const std::vector<Edge*>& Node::getEdges() const
|
const std::vector<Edge*>& Node::getEdges() const
|
||||||
|
|||||||
@@ -8,12 +8,11 @@
|
|||||||
|
|
||||||
#include "data/graph/Edge.h"
|
#include "data/graph/Edge.h"
|
||||||
#include "data/graph/Token.h"
|
#include "data/graph/Token.h"
|
||||||
|
#include "data/name/NameHierarchy.h"
|
||||||
|
|
||||||
class TokenComponentAbstraction;
|
class TokenComponentAbstraction;
|
||||||
class TokenComponentConst;
|
class TokenComponentConst;
|
||||||
class TokenComponentName;
|
|
||||||
class TokenComponentStatic;
|
class TokenComponentStatic;
|
||||||
class TokenComponentSignature;
|
|
||||||
class TokenComponentFilePath;
|
class TokenComponentFilePath;
|
||||||
|
|
||||||
class Node
|
class Node
|
||||||
@@ -50,7 +49,7 @@ public:
|
|||||||
|
|
||||||
static const NodeTypeMask NODE_NOT_VISIBLE;
|
static const NodeTypeMask NODE_NOT_VISIBLE;
|
||||||
|
|
||||||
Node(Id id, NodeType type, std::shared_ptr<TokenComponentName> nameComponent);
|
Node(Id id, NodeType type, NameHierarchy nameHierarchy);
|
||||||
Node(const Node& other);
|
Node(const Node& other);
|
||||||
virtual ~Node();
|
virtual ~Node();
|
||||||
|
|
||||||
@@ -60,7 +59,6 @@ public:
|
|||||||
|
|
||||||
std::string getName() const;
|
std::string getName() const;
|
||||||
std::string getFullName() const;
|
std::string getFullName() const;
|
||||||
const TokenComponentName* getTokenComponentName() const;
|
|
||||||
|
|
||||||
const std::vector<Edge*>& getEdges() const;
|
const std::vector<Edge*>& getEdges() const;
|
||||||
|
|
||||||
@@ -90,7 +88,6 @@ public:
|
|||||||
void addComponentAbstraction(std::shared_ptr<TokenComponentAbstraction> component);
|
void addComponentAbstraction(std::shared_ptr<TokenComponentAbstraction> component);
|
||||||
void addComponentConst(std::shared_ptr<TokenComponentConst> component);
|
void addComponentConst(std::shared_ptr<TokenComponentConst> component);
|
||||||
void addComponentStatic(std::shared_ptr<TokenComponentStatic> component);
|
void addComponentStatic(std::shared_ptr<TokenComponentStatic> component);
|
||||||
void addComponentSignature(std::shared_ptr<TokenComponentSignature> component);
|
|
||||||
void addComponentFilePath(std::shared_ptr<TokenComponentFilePath> component);
|
void addComponentFilePath(std::shared_ptr<TokenComponentFilePath> component);
|
||||||
|
|
||||||
// Logging.
|
// Logging.
|
||||||
@@ -103,7 +100,7 @@ private:
|
|||||||
std::vector<Edge*> m_edges;
|
std::vector<Edge*> m_edges;
|
||||||
|
|
||||||
NodeType m_type;
|
NodeType m_type;
|
||||||
std::shared_ptr<TokenComponentName> m_nameComponent;
|
NameHierarchy m_nameHierarchy;
|
||||||
};
|
};
|
||||||
|
|
||||||
std::ostream& operator<<(std::ostream& ostream, const Node& node);
|
std::ostream& operator<<(std::ostream& ostream, const Node& node);
|
||||||
|
|||||||
@@ -1,85 +0,0 @@
|
|||||||
#include "data/graph/token_component/TokenComponentName.h"
|
|
||||||
|
|
||||||
#include "utility/utilityString.h"
|
|
||||||
|
|
||||||
#include "data/search/SearchIndex.h"
|
|
||||||
|
|
||||||
TokenComponentName::TokenComponentName()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
TokenComponentName::~TokenComponentName()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
std::shared_ptr<TokenComponentName> TokenComponentName::copyComponentName() const
|
|
||||||
{
|
|
||||||
return std::dynamic_pointer_cast<TokenComponentName>(copy());
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
TokenComponentNameReferenced::TokenComponentNameReferenced(const SearchNode* searchNode)
|
|
||||||
: m_searchNode(searchNode)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
TokenComponentNameReferenced::~TokenComponentNameReferenced()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
std::shared_ptr<TokenComponent> TokenComponentNameReferenced::copy() const
|
|
||||||
{
|
|
||||||
return std::make_shared<TokenComponentNameCached>(m_searchNode->getNameHierarchy());
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string TokenComponentNameReferenced::getName() const
|
|
||||||
{
|
|
||||||
return m_searchNode->getName();
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string TokenComponentNameReferenced::getFullName() const
|
|
||||||
{
|
|
||||||
return m_searchNode->getFullName();
|
|
||||||
}
|
|
||||||
|
|
||||||
const SearchNode* TokenComponentNameReferenced::getSearchNode() const
|
|
||||||
{
|
|
||||||
return m_searchNode;
|
|
||||||
}
|
|
||||||
|
|
||||||
TokenComponentNameCached::TokenComponentNameCached(const std::vector<std::string>& nameHierarchy)
|
|
||||||
: m_nameHierarchy(nameHierarchy)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
TokenComponentNameCached::TokenComponentNameCached(const NameHierarchy& nameHierarchy)
|
|
||||||
{
|
|
||||||
for (size_t i = 0; i < nameHierarchy.size(); i++)
|
|
||||||
{
|
|
||||||
m_nameHierarchy.push_back(nameHierarchy[i]->getFullName());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
TokenComponentNameCached::~TokenComponentNameCached()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
std::shared_ptr<TokenComponent> TokenComponentNameCached::copy() const
|
|
||||||
{
|
|
||||||
return std::make_shared<TokenComponentNameCached>(m_nameHierarchy);
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string TokenComponentNameCached::getName() const
|
|
||||||
{
|
|
||||||
return m_nameHierarchy.back();
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string TokenComponentNameCached::getFullName() const
|
|
||||||
{
|
|
||||||
return utility::join(m_nameHierarchy, "::");
|
|
||||||
}
|
|
||||||
|
|
||||||
const SearchNode* TokenComponentNameCached::getSearchNode() const
|
|
||||||
{
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
@@ -1,64 +0,0 @@
|
|||||||
#ifndef TOKEN_COMPONENT_NAME_H
|
|
||||||
#define TOKEN_COMPONENT_NAME_H
|
|
||||||
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
#include "data/graph/token_component/TokenComponent.h"
|
|
||||||
#include "data/name/NameHierarchy.h"
|
|
||||||
#include "data/search/SearchNode.h"
|
|
||||||
|
|
||||||
class TokenComponentName
|
|
||||||
: public TokenComponent
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
TokenComponentName();
|
|
||||||
virtual ~TokenComponentName();
|
|
||||||
|
|
||||||
std::shared_ptr<TokenComponentName> copyComponentName() const;
|
|
||||||
|
|
||||||
virtual std::string getName() const = 0;
|
|
||||||
virtual std::string getFullName() const = 0;
|
|
||||||
|
|
||||||
virtual const SearchNode* getSearchNode() const = 0;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class TokenComponentNameReferenced
|
|
||||||
: public TokenComponentName
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
TokenComponentNameReferenced(const SearchNode* searchNode);
|
|
||||||
virtual ~TokenComponentNameReferenced();
|
|
||||||
|
|
||||||
virtual std::shared_ptr<TokenComponent> copy() const;
|
|
||||||
|
|
||||||
virtual std::string getName() const;
|
|
||||||
virtual std::string getFullName() const;
|
|
||||||
|
|
||||||
virtual const SearchNode* getSearchNode() const;
|
|
||||||
|
|
||||||
private:
|
|
||||||
const SearchNode* m_searchNode;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
class TokenComponentNameCached
|
|
||||||
: public TokenComponentName
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
TokenComponentNameCached(const std::vector<std::string>& nameHierarchy);
|
|
||||||
TokenComponentNameCached(const NameHierarchy& nameHierarchy);
|
|
||||||
virtual ~TokenComponentNameCached();
|
|
||||||
|
|
||||||
virtual std::shared_ptr<TokenComponent> copy() const;
|
|
||||||
|
|
||||||
virtual std::string getName() const;
|
|
||||||
virtual std::string getFullName() const;
|
|
||||||
|
|
||||||
virtual const SearchNode* getSearchNode() const;
|
|
||||||
|
|
||||||
private:
|
|
||||||
std::vector<std::string> m_nameHierarchy; // TODO: use const NameHierarchy here
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif // TOKEN_COMPONENT_NAME_H
|
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
#include "data/name/NameElement.h"
|
#include "data/name/NameElement.h"
|
||||||
|
|
||||||
NameElement::NameElement(std::string name)
|
NameElement::NameElement(const std::string& name)
|
||||||
: m_name(name)
|
: m_name(name)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
class NameElement
|
class NameElement
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
NameElement(std::string name);
|
NameElement(const std::string& name);
|
||||||
~NameElement();
|
~NameElement();
|
||||||
|
|
||||||
std::string getFullName() const;
|
std::string getFullName() const;
|
||||||
|
|||||||
@@ -4,6 +4,11 @@ NameHierarchy::NameHierarchy()
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
NameHierarchy::NameHierarchy(const std::string& name)
|
||||||
|
{
|
||||||
|
push(std::make_shared<NameElement>(name));
|
||||||
|
}
|
||||||
|
|
||||||
NameHierarchy::~NameHierarchy()
|
NameHierarchy::~NameHierarchy()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -46,3 +51,13 @@ std::string NameHierarchy::getFullName() const
|
|||||||
}
|
}
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string NameHierarchy::getName() const
|
||||||
|
{
|
||||||
|
if (m_elements.size())
|
||||||
|
{
|
||||||
|
return m_elements.back()->getFullName();
|
||||||
|
}
|
||||||
|
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ class NameHierarchy
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
NameHierarchy();
|
NameHierarchy();
|
||||||
|
NameHierarchy(const std::string& name);
|
||||||
~NameHierarchy();
|
~NameHierarchy();
|
||||||
|
|
||||||
void push(std::shared_ptr<NameElement> element);
|
void push(std::shared_ptr<NameElement> element);
|
||||||
@@ -20,6 +21,7 @@ public:
|
|||||||
size_t size() const;
|
size_t size() const;
|
||||||
|
|
||||||
std::string getFullName() const;
|
std::string getFullName() const;
|
||||||
|
std::string getName() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<std::shared_ptr<NameElement>> m_elements;
|
std::vector<std::shared_ptr<NameElement>> m_elements;
|
||||||
|
|||||||
+38
-39
@@ -3,7 +3,6 @@
|
|||||||
#include "utility/utilityString.h"
|
#include "utility/utilityString.h"
|
||||||
|
|
||||||
#include "data/graph/Graph.h"
|
#include "data/graph/Graph.h"
|
||||||
#include "data/graph/token_component/TokenComponentName.h"
|
|
||||||
|
|
||||||
class GraphTestSuite : public CxxTest::TestSuite
|
class GraphTestSuite : public CxxTest::TestSuite
|
||||||
{
|
{
|
||||||
@@ -93,7 +92,7 @@ public:
|
|||||||
|
|
||||||
void test_nodes_are_nodes()
|
void test_nodes_are_nodes()
|
||||||
{
|
{
|
||||||
Node a(1, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("A", "::")));
|
Node a(1, Node::NODE_UNDEFINED, NameHierarchy("A"));
|
||||||
|
|
||||||
TS_ASSERT(a.isNode());
|
TS_ASSERT(a.isNode());
|
||||||
TS_ASSERT(!a.isEdge());
|
TS_ASSERT(!a.isEdge());
|
||||||
@@ -101,8 +100,8 @@ public:
|
|||||||
|
|
||||||
void test_edges_are_edges()
|
void test_edges_are_edges()
|
||||||
{
|
{
|
||||||
Node a(1, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("A", "::")));
|
Node a(1, Node::NODE_UNDEFINED, NameHierarchy("A"));
|
||||||
Node b(2, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("B", "::")));
|
Node b(2, Node::NODE_UNDEFINED, NameHierarchy("B"));
|
||||||
Edge e(3, Edge::EDGE_TYPE_OF, &a, &b);
|
Edge e(3, Edge::EDGE_TYPE_OF, &a, &b);
|
||||||
|
|
||||||
TS_ASSERT(!e.isNode());
|
TS_ASSERT(!e.isNode());
|
||||||
@@ -111,27 +110,27 @@ public:
|
|||||||
|
|
||||||
void test_set_type_of_node_from_constructor()
|
void test_set_type_of_node_from_constructor()
|
||||||
{
|
{
|
||||||
Node n(1, Node::NODE_FUNCTION, std::make_shared<TokenComponentNameCached>(utility::splitToVector("A", "::")));
|
Node n(1, Node::NODE_FUNCTION, NameHierarchy("A"));
|
||||||
TS_ASSERT_EQUALS(Node::NODE_FUNCTION, n.getType());
|
TS_ASSERT_EQUALS(Node::NODE_FUNCTION, n.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_set_type_of_node_from_undefined()
|
void test_set_type_of_node_from_undefined()
|
||||||
{
|
{
|
||||||
Node n(2, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("A", "::")));
|
Node n(2, Node::NODE_UNDEFINED, NameHierarchy("A"));
|
||||||
n.setType(Node::NODE_CLASS);
|
n.setType(Node::NODE_CLASS);
|
||||||
TS_ASSERT_EQUALS(Node::NODE_CLASS, n.getType());
|
TS_ASSERT_EQUALS(Node::NODE_CLASS, n.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_can_not_change_type_of_node_after_it_was_set()
|
void test_can_not_change_type_of_node_after_it_was_set()
|
||||||
{
|
{
|
||||||
Node n(3, Node::NODE_NAMESPACE, std::make_shared<TokenComponentNameCached>(utility::splitToVector("A", "::")));
|
Node n(3, Node::NODE_NAMESPACE, NameHierarchy("A"));
|
||||||
n.setType(Node::NODE_CLASS);
|
n.setType(Node::NODE_CLASS);
|
||||||
TS_ASSERT_DIFFERS(Node::NODE_CLASS, n.getType());
|
TS_ASSERT_DIFFERS(Node::NODE_CLASS, n.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_node_can_be_copied_and_keeps_same_id()
|
void test_node_can_be_copied_and_keeps_same_id()
|
||||||
{
|
{
|
||||||
Node n(4, Node::NODE_NAMESPACE, std::make_shared<TokenComponentNameCached>(utility::splitToVector("A", "::")));
|
Node n(4, Node::NODE_NAMESPACE, NameHierarchy("A"));
|
||||||
Node n2(n);
|
Node n2(n);
|
||||||
|
|
||||||
TS_ASSERT_DIFFERS(&n, &n2);
|
TS_ASSERT_DIFFERS(&n, &n2);
|
||||||
@@ -142,15 +141,15 @@ public:
|
|||||||
|
|
||||||
void test_node_type_bit_masking()
|
void test_node_type_bit_masking()
|
||||||
{
|
{
|
||||||
Node n(1, Node::NODE_NAMESPACE, std::make_shared<TokenComponentNameCached>(utility::splitToVector("A", "::")));
|
Node n(1, Node::NODE_NAMESPACE, NameHierarchy("A"));
|
||||||
TS_ASSERT(n.isType(Node::NODE_FUNCTION | Node::NODE_NAMESPACE | Node::NODE_CLASS));
|
TS_ASSERT(n.isType(Node::NODE_FUNCTION | Node::NODE_NAMESPACE | Node::NODE_CLASS));
|
||||||
TS_ASSERT(!n.isType(Node::NODE_FUNCTION | Node::NODE_METHOD | Node::NODE_CLASS));
|
TS_ASSERT(!n.isType(Node::NODE_FUNCTION | Node::NODE_METHOD | Node::NODE_CLASS));
|
||||||
}
|
}
|
||||||
|
|
||||||
void test_get_type_of_edges()
|
void test_get_type_of_edges()
|
||||||
{
|
{
|
||||||
Node a(1, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("A", "::")));
|
Node a(1, Node::NODE_UNDEFINED, NameHierarchy("A"));
|
||||||
Node b(2, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("B", "::")));
|
Node b(2, Node::NODE_UNDEFINED, NameHierarchy("B"));
|
||||||
Edge e(3, Edge::EDGE_TYPE_OF, &a, &b);
|
Edge e(3, Edge::EDGE_TYPE_OF, &a, &b);
|
||||||
|
|
||||||
TS_ASSERT_EQUALS(Edge::EDGE_TYPE_OF, e.getType());
|
TS_ASSERT_EQUALS(Edge::EDGE_TYPE_OF, e.getType());
|
||||||
@@ -158,8 +157,8 @@ public:
|
|||||||
|
|
||||||
void test_edge_can_be_copied_and_keeps_same_id()
|
void test_edge_can_be_copied_and_keeps_same_id()
|
||||||
{
|
{
|
||||||
Node a(1, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("A", "::")));
|
Node a(1, Node::NODE_UNDEFINED, NameHierarchy("A"));
|
||||||
Node b(2, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("B", "::")));
|
Node b(2, Node::NODE_UNDEFINED, NameHierarchy("B"));
|
||||||
Edge e(3, Edge::EDGE_TYPE_OF, &a, &b);
|
Edge e(3, Edge::EDGE_TYPE_OF, &a, &b);
|
||||||
Edge e2(e, &a, &b);
|
Edge e2(e, &a, &b);
|
||||||
|
|
||||||
@@ -170,8 +169,8 @@ public:
|
|||||||
|
|
||||||
void test_edge_type_bit_masking()
|
void test_edge_type_bit_masking()
|
||||||
{
|
{
|
||||||
Node a(1, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("A", "::")));
|
Node a(1, Node::NODE_UNDEFINED, NameHierarchy("A"));
|
||||||
Node b(2, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("B", "::")));
|
Node b(2, Node::NODE_UNDEFINED, NameHierarchy("B"));
|
||||||
Edge e(3, Edge::EDGE_TYPE_OF, &a, &b);
|
Edge e(3, Edge::EDGE_TYPE_OF, &a, &b);
|
||||||
|
|
||||||
TS_ASSERT(e.isType(Edge::EDGE_MEMBER | Edge::EDGE_CALL | Edge::EDGE_TYPE_OF));
|
TS_ASSERT(e.isType(Edge::EDGE_MEMBER | Edge::EDGE_CALL | Edge::EDGE_TYPE_OF));
|
||||||
@@ -180,9 +179,9 @@ public:
|
|||||||
|
|
||||||
void test_node_finds_child_node()
|
void test_node_finds_child_node()
|
||||||
{
|
{
|
||||||
Node a(1, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("A", "::")));
|
Node a(1, Node::NODE_UNDEFINED, NameHierarchy("A"));
|
||||||
Node b(2, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("B", "::")));
|
Node b(2, Node::NODE_UNDEFINED, NameHierarchy("B"));
|
||||||
Node c(3, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("C", "::")));
|
Node c(3, Node::NODE_UNDEFINED, NameHierarchy("C"));
|
||||||
Edge e(4, Edge::EDGE_MEMBER, &a, &b);
|
Edge e(4, Edge::EDGE_MEMBER, &a, &b);
|
||||||
Edge e2(5, Edge::EDGE_MEMBER, &a, &c);
|
Edge e2(5, Edge::EDGE_MEMBER, &a, &c);
|
||||||
|
|
||||||
@@ -199,9 +198,9 @@ public:
|
|||||||
|
|
||||||
void test_node_can_not_find_child_node()
|
void test_node_can_not_find_child_node()
|
||||||
{
|
{
|
||||||
Node a(1, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("A", "::")));
|
Node a(1, Node::NODE_UNDEFINED, NameHierarchy("A"));
|
||||||
Node b(2, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("B", "::")));
|
Node b(2, Node::NODE_UNDEFINED, NameHierarchy("B"));
|
||||||
Node c(3, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("C", "::")));
|
Node c(3, Node::NODE_UNDEFINED, NameHierarchy("C"));
|
||||||
Edge e(4, Edge::EDGE_MEMBER, &a, &b);
|
Edge e(4, Edge::EDGE_MEMBER, &a, &b);
|
||||||
Edge e2(5, Edge::EDGE_MEMBER, &a, &c);
|
Edge e2(5, Edge::EDGE_MEMBER, &a, &c);
|
||||||
|
|
||||||
@@ -217,9 +216,9 @@ public:
|
|||||||
|
|
||||||
void test_node_visits_child_nodes()
|
void test_node_visits_child_nodes()
|
||||||
{
|
{
|
||||||
Node a(1, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("A", "::")));
|
Node a(1, Node::NODE_UNDEFINED, NameHierarchy("A"));
|
||||||
Node b(2, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("B", "::")));
|
Node b(2, Node::NODE_UNDEFINED, NameHierarchy("B"));
|
||||||
Node c(3, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("C", "::")));
|
Node c(3, Node::NODE_UNDEFINED, NameHierarchy("C"));
|
||||||
Edge e(4, Edge::EDGE_MEMBER, &a, &b);
|
Edge e(4, Edge::EDGE_MEMBER, &a, &b);
|
||||||
Edge e2(5, Edge::EDGE_MEMBER, &a, &c);
|
Edge e2(5, Edge::EDGE_MEMBER, &a, &c);
|
||||||
|
|
||||||
@@ -238,10 +237,10 @@ public:
|
|||||||
|
|
||||||
void test_node_has_references()
|
void test_node_has_references()
|
||||||
{
|
{
|
||||||
Node a(1, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("A", "::")));
|
Node a(1, Node::NODE_UNDEFINED, NameHierarchy("A"));
|
||||||
Node b(2, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("B", "::")));
|
Node b(2, Node::NODE_UNDEFINED, NameHierarchy("B"));
|
||||||
Node c(3, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("C", "::")));
|
Node c(3, Node::NODE_UNDEFINED, NameHierarchy("C"));
|
||||||
Node d(4, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("D", "::")));
|
Node d(4, Node::NODE_UNDEFINED, NameHierarchy("D"));
|
||||||
Edge e(5, Edge::EDGE_MEMBER, &a, &b);
|
Edge e(5, Edge::EDGE_MEMBER, &a, &b);
|
||||||
Edge e2(6, Edge::EDGE_MEMBER, &a, &c);
|
Edge e2(6, Edge::EDGE_MEMBER, &a, &c);
|
||||||
Edge e3(7, Edge::EDGE_USAGE, &c, &d);
|
Edge e3(7, Edge::EDGE_USAGE, &c, &d);
|
||||||
@@ -254,8 +253,8 @@ public:
|
|||||||
void test_graph_saves_nodes()
|
void test_graph_saves_nodes()
|
||||||
{
|
{
|
||||||
Graph graph;
|
Graph graph;
|
||||||
Node* a = graph.createNode(1, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("A", "::")));
|
Node* a = graph.createNode(1, Node::NODE_UNDEFINED, NameHierarchy("A"));
|
||||||
Node* b = graph.createNode(2, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("B", "::")));
|
Node* b = graph.createNode(2, Node::NODE_UNDEFINED, NameHierarchy("B"));
|
||||||
|
|
||||||
TS_ASSERT_EQUALS(2, graph.getNodeCount());
|
TS_ASSERT_EQUALS(2, graph.getNodeCount());
|
||||||
TS_ASSERT_EQUALS(0, graph.getEdgeCount());
|
TS_ASSERT_EQUALS(0, graph.getEdgeCount());
|
||||||
@@ -273,8 +272,8 @@ public:
|
|||||||
{
|
{
|
||||||
Graph graph;
|
Graph graph;
|
||||||
|
|
||||||
Node* a = graph.createNode(1, Node::NODE_FUNCTION, std::make_shared<TokenComponentNameCached>(utility::splitToVector("A", "::")));
|
Node* a = graph.createNode(1, Node::NODE_FUNCTION, NameHierarchy("A"));
|
||||||
Node* b = graph.createNode(2, Node::NODE_FUNCTION, std::make_shared<TokenComponentNameCached>(utility::splitToVector("B", "::")));
|
Node* b = graph.createNode(2, Node::NODE_FUNCTION, NameHierarchy("B"));
|
||||||
|
|
||||||
Edge* e = graph.createEdge(3, Edge::EDGE_CALL, a, b);
|
Edge* e = graph.createEdge(3, Edge::EDGE_CALL, a, b);
|
||||||
|
|
||||||
@@ -289,8 +288,8 @@ public:
|
|||||||
{
|
{
|
||||||
Graph graph;
|
Graph graph;
|
||||||
|
|
||||||
Node* a = graph.createNode(1, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("A", "::")));
|
Node* a = graph.createNode(1, Node::NODE_UNDEFINED, NameHierarchy("A"));
|
||||||
graph.createNode(2, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("B", "::")));
|
graph.createNode(2, Node::NODE_UNDEFINED, NameHierarchy("B"));
|
||||||
|
|
||||||
TS_ASSERT_EQUALS(2, graph.getNodeCount());
|
TS_ASSERT_EQUALS(2, graph.getNodeCount());
|
||||||
TS_ASSERT_EQUALS(0, graph.getEdgeCount());
|
TS_ASSERT_EQUALS(0, graph.getEdgeCount());
|
||||||
@@ -304,11 +303,11 @@ public:
|
|||||||
{
|
{
|
||||||
Graph graph;
|
Graph graph;
|
||||||
|
|
||||||
Node* a = graph.createNode(1, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("A", "::")));
|
Node* a = graph.createNode(1, Node::NODE_UNDEFINED, NameHierarchy("A"));
|
||||||
Node* b = graph.createNode(2, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("B", "::")));
|
Node* b = graph.createNode(2, Node::NODE_UNDEFINED, NameHierarchy("B"));
|
||||||
Node* c = graph.createNode(3, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("C", "::")));
|
Node* c = graph.createNode(3, Node::NODE_UNDEFINED, NameHierarchy("C"));
|
||||||
Node* d = graph.createNode(4, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("D", "::")));
|
Node* d = graph.createNode(4, Node::NODE_UNDEFINED, NameHierarchy("D"));
|
||||||
Node* e = graph.createNode(5, Node::NODE_UNDEFINED, std::make_shared<TokenComponentNameCached>(utility::splitToVector("E", "::")));
|
Node* e = graph.createNode(5, Node::NODE_UNDEFINED, NameHierarchy("E"));
|
||||||
|
|
||||||
graph.createEdge(6, Edge::EDGE_MEMBER, a, b);
|
graph.createEdge(6, Edge::EDGE_MEMBER, a, b);
|
||||||
graph.createEdge(7, Edge::EDGE_MEMBER, a, c);
|
graph.createEdge(7, Edge::EDGE_MEMBER, a, c);
|
||||||
|
|||||||
Reference in New Issue
Block a user