neo_doxygen: Add some unit tests.
[nit.git] / contrib / neo_doxygen / src / tests / tests.nit
diff --git a/contrib/neo_doxygen/src/tests/tests.nit b/contrib/neo_doxygen/src/tests/tests.nit
new file mode 100644 (file)
index 0000000..797886b
--- /dev/null
@@ -0,0 +1,83 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Base module for tests related to `neo_doxygen`.
+module tests::tests
+
+import model::graph
+
+# Adds debugging output to graphs.
+redef class NeoGraph
+
+       # Append the debugging output of all relationships to the specified buffer.
+       fun debug(buffer: Buffer) do
+               buffer.append "# Graph\n"
+               for edge in all_edges do
+                       edge.debug buffer
+               end
+       end
+end
+
+# Adds debugging output to relationships.
+redef class NeoEdge
+
+       # Append the debugging output of this relationship to the specified buffer.
+       #
+       # Append the relationship type, the properties, and the debugging output of
+       # both extremities.
+       fun debug(buffer: Buffer) do
+               var rel_type = self.rel_type or else "?"
+               buffer.append "Edge\n"
+               buffer.append "=type={rel_type.length}:{rel_type}\n"
+               buffer.append "=properties=JsonObject({properties.length}):\n"
+               buffer.append properties.to_json
+               buffer.append "\n----\n=from="
+               from.debug buffer
+               buffer.append "----\n=to="
+               to.debug buffer
+               buffer.append "\n"
+       end
+end
+
+# Adds debugging output to nodes.
+redef class NeoNode
+
+       # Append the debugging output of this node to the specified buffer.
+       #
+       # Append the labels and the properties.
+       fun debug(buffer: Buffer) do
+               buffer.append "Node\n"
+               buffer.append "=labels=Array({labels.length}):\n"
+               for lab in labels do buffer.append "{lab.length}:{lab}\n"
+               buffer.append "=properties=JsonObject({properties.length}):\n"
+               buffer.append properties.to_json
+               buffer.append "\n"
+       end
+end
+
+# Adds debugging output to entities.
+redef class Entity
+
+       # Append the debugging output of this entity to the specified buffer.
+       #
+       # Append the `model_id`, the labels and the properties.
+       redef fun debug(buffer: Buffer) do
+               buffer.append "Entity#{model_id.length}:{model_id}\n"
+               buffer.append "=labels=Array({labels.length}):\n"
+               for lab in labels do buffer.append "{lab.length}:{lab}\n"
+               buffer.append "=properties=JsonObject({properties.length}):\n"
+               buffer.append properties.to_json
+               buffer.append "\n"
+       end
+end