]> granicus.if.org Git - graphviz/commitdiff
tests: SvgAnalyzer: add handling of 'text' elements
authorMagnus Jacobsson <Magnus.Jacobsson@berotec.se>
Sun, 24 Jul 2022 20:26:32 +0000 (22:26 +0200)
committerMagnus Jacobsson <Magnus.Jacobsson@berotec.se>
Tue, 16 Aug 2022 10:21:45 +0000 (12:21 +0200)
tests/svg_analyzer.cpp
tests/svg_analyzer.h
tests/svg_analyzer_interface.h
tests/svgpp_context.cpp
tests/svgpp_context.h
tests/svgpp_document_traverser.cpp
tests/test_svg_analyzer.cpp

index 552075c57b0c0c91b5f4e14ed098e059b430addb..9a1e5a106c4d1bc597406141ca3c4f28f4c28217 100644 (file)
@@ -57,6 +57,11 @@ void SVGAnalyzer::on_enter_element_rect() {
   m_num_rects++;
 }
 
+void SVGAnalyzer::on_enter_element_text() {
+  enter_element(SVG::SVGElementType::Text);
+  m_num_texts++;
+}
+
 void SVGAnalyzer::on_enter_element_title() {
   enter_element(SVG::SVGElementType::Title);
   m_num_titles++;
index 4c779a6f6db46650e3e3a0279750e395206c6554..31f9507df3e8d499819dc33c79b284dcf6f6a1e7 100644 (file)
@@ -23,6 +23,7 @@ public:
   void on_enter_element_polygon() override;
   void on_enter_element_polyline() override;
   void on_enter_element_rect() override;
+  void on_enter_element_text() override;
   void on_enter_element_title() override;
   void on_exit_element() override;
   std::size_t num_svgs() const { return m_num_svgs; };
@@ -34,6 +35,7 @@ public:
   std::size_t num_polygons() const { return m_num_polygons; };
   std::size_t num_polylines() const { return m_num_polylines; };
   std::size_t num_rects() const { return m_num_rects; };
+  std::size_t num_texts() const { return m_num_texts; };
   std::size_t num_titles() const { return m_num_titles; };
   std::string svg_string(std::size_t indent_size = 2) const;
 
@@ -58,6 +60,7 @@ private:
   std::size_t m_num_polygons = 0;
   std::size_t m_num_polylines = 0;
   std::size_t m_num_rects = 0;
+  std::size_t m_num_texts = 0;
   std::size_t m_num_titles = 0;
   /// The top level SVG `svg` element corresponding to the Graphviz graph
   SVG::SVGElement m_svg;
index 53f40f52caee7965101c6dedef7fbb9fdb96013a..57d24ab7405693dd46b20fe77789ab8247de8dcb 100644 (file)
@@ -21,6 +21,7 @@ public:
   virtual void on_enter_element_polygon() = 0;
   virtual void on_enter_element_polyline() = 0;
   virtual void on_enter_element_rect() = 0;
+  virtual void on_enter_element_text() = 0;
   virtual void on_enter_element_title() = 0;
   virtual void on_exit_element() = 0;
 };
index 9d13c607f3877947127c1b5c63a09cf404cbc67f..f3915e6f6f1461eb44d48340d31a62c9c36bb456 100644 (file)
@@ -42,6 +42,10 @@ void SvgppContext::on_enter_element(svgpp::tag::element::rect) {
   m_svgAnalyzer->on_enter_element_rect();
 }
 
+void SvgppContext::on_enter_element(svgpp::tag::element::text) {
+  m_svgAnalyzer->on_enter_element_text();
+}
+
 void SvgppContext::on_enter_element(svgpp::tag::element::title) {
   m_svgAnalyzer->on_enter_element_title();
 }
index 2d64156ce1f8051d384b91dd6eaf42bfaf0435a1..b086ebce54d03491eb8db329cbf54bc64a2d12ed 100644 (file)
@@ -30,6 +30,7 @@ public:
   void on_enter_element(svgpp::tag::element::polygon e);
   void on_enter_element(svgpp::tag::element::polyline e);
   void on_enter_element(svgpp::tag::element::rect e);
+  void on_enter_element(svgpp::tag::element::text e);
   void on_enter_element(svgpp::tag::element::title e);
   void on_exit_element();
   void path_move_to(double x, double y, svgpp::tag::coordinate::absolute);
index 47fd50fe2f4f2afefaaed9e7d9ddb8065d9ae013..93f941f13a1d3a44de960f61a8d158c9fad9347e 100644 (file)
@@ -21,7 +21,8 @@ void traverseDocumentWithSvgpp(SvgppContext &context, char *text) {
         svgpp::tag::element::circle, svgpp::tag::element::ellipse,
         svgpp::tag::element::line, svgpp::tag::element::path,
         svgpp::tag::element::polygon, svgpp::tag::element::polyline,
-        svgpp::tag::element::rect, svgpp::tag::element::title>::type;
+        svgpp::tag::element::rect, svgpp::tag::element::text,
+        svgpp::tag::element::title>::type;
 
     svgpp::document_traversal<
         svgpp::processed_elements<processed_elements_t>,
index 20ce416c5ef601c0e1dc611afb3aca01894e67d1..aba839a1334b9727caf032366afadf1ec0cb3c49 100644 (file)
@@ -93,6 +93,8 @@ TEST_CASE(
     const std::size_t expected_num_rects = 0;
     const std::size_t expected_num_titles =
         expected_num_graphs + expected_num_nodes + expected_num_edges;
+    const std::size_t expected_num_texts =
+        shape == "point" ? 0 : expected_num_nodes;
 
     CHECK(svgAnalyzer.num_svgs() == expected_num_svgs);
     CHECK(svgAnalyzer.num_groups() == expected_num_groups);
@@ -104,6 +106,7 @@ TEST_CASE(
     CHECK(svgAnalyzer.num_polylines() == expected_num_polylines);
     CHECK(svgAnalyzer.num_rects() == expected_num_rects);
     CHECK(svgAnalyzer.num_titles() == expected_num_titles);
+    CHECK(svgAnalyzer.num_texts() == expected_num_texts);
 
     const auto indent_size = 0;
     auto recreated_svg = svgAnalyzer.svg_string(indent_size);
@@ -132,6 +135,9 @@ TEST_CASE(
     CHECK(recreated_svg.find("<g>") != std::string::npos);
     CHECK(recreated_svg.find("</g>") != std::string::npos);
     CHECK(recreated_svg.find("<title/>") != std::string::npos);
+    if (shape != "point") {
+      CHECK(recreated_svg.find("<text/>") != std::string::npos);
+    }
     CHECK(recreated_svg.find("<polygon/>") != std::string::npos);
     CHECK(recreated_svg.find("<path/>") != std::string::npos);
   }