Skip to content

Commit

Permalink
redo an unittest for grenml
Browse files Browse the repository at this point in the history
  • Loading branch information
YufengXin committed Oct 25, 2024
1 parent e16f013 commit 4baf48d
Showing 1 changed file with 93 additions and 4 deletions.
97 changes: 93 additions & 4 deletions tests/test_topology_grenmlconverter.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,11 @@

from . import TestData


class GrenmlConverterTests(unittest.TestCase):
"""
Tests for GrenmlConverter.
"""

# TEST_DATA_DIR = pathlib.Path(__file__).parent / "data"
# AMLIGHT_TOPOLOGY_FILE = TEST_DATA_DIR / "topologies" / "amlight.json"

def test_grenml_converter_amlight(self):
TopologyManager()

Expand Down Expand Up @@ -47,3 +43,96 @@ def test_grenml_converter_bad_input(self):

with self.assertRaises(AttributeError):
GrenmlConverter("{'dummy':'dummy'}")
class GrenmlConverterTests(unittest.TestCase):
"""
Tests for GrenmlConverter.
"""

# TEST_DATA_DIR = pathlib.Path(__file__).parent / "data"
# AMLIGHT_TOPOLOGY_FILE = TEST_DATA_DIR / "topologies" / "amlight.json"

def test_grenml_converter_amlight(self):
TopologyManager()

# TODO: this does not raise errors when it should (such as
# when the input file is not present). Make the necessary
# change in datamodel's TopologyHandler class.
topology = TopologyHandler().import_topology(TestData.TOPOLOGY_FILE_AMLIGHT)

print(f"Topology: {topology}")
self.assertIsNotNone(topology, "No topology could be read")

converter = GrenmlConverter(topology)
print(f"GrenmlConverter: {converter}")
self.assertIsNotNone(converter, "Could not create GRENML converter")

converter.read_topology()
xml = converter.get_xml_str()
print(f"XML: {xml}")
self.assertIsNotNone(xml)

def test_grenml_converter_bad_input(self):
# Ensure that GrenmlConverter fails when no topology input is
# given.
with self.assertRaises(AttributeError):
GrenmlConverter(None)

with self.assertRaises(AttributeError):
GrenmlConverter("")

with self.assertRaises(AttributeError):
GrenmlConverter("{'dummy':'dummy'}")

def test_grenml_converter_empty_topology(self):
# Ensure that GrenmlConverter handles empty topology correctly.
empty_topology = {}
converter = GrenmlConverter(empty_topology)
converter.read_topology()
xml = converter.get_xml_str()
print(f"XML for empty topology: {xml}")
self.assertIsNotNone(xml)
self.assertIn('<topology>', xml)
self.assertIn('</topology>', xml)

def test_grenml_converter_invalid_topology(self):
# Ensure that GrenmlConverter handles invalid topology correctly.
invalid_topology = {"invalid": "data"}
converter = GrenmlConverter(invalid_topology)
with self.assertRaises(SomeExpectedException):
converter.read_topology()

def test_grenml_converter_partial_topology(self):
# Ensure that GrenmlConverter handles partial topology correctly.
partial_topology = {
"nodes": [{"id": "node1"}],
"links": []
}
converter = GrenmlConverter(partial_topology)
converter.read_topology()
xml = converter.get_xml_str()
print(f"XML for partial topology: {xml}")
self.assertIsNotNone(xml)
self.assertIn('<node id="node1"/>', xml)
self.assertIn('<topology>', xml)
self.assertIn('</topology>', xml)

def test_grenml_converter_add_nodes(self):
# Ensure that GrenmlConverter can add nodes correctly.
topology = {"nodes": [], "links": []}
converter = GrenmlConverter(topology)
nodes = [{"id": "node1"}, {"id": "node2"}]
converter.add_nodes(nodes)
xml = converter.get_xml_str()
print(f"XML after adding nodes: {xml}")
self.assertIn('<node id="node1"/>', xml)
self.assertIn('<node id="node2"/>', xml)

def test_grenml_converter_add_links(self):
# Ensure that GrenmlConverter can add links correctly.
topology = {"nodes": [{"id": "node1"}, {"id": "node2"}], "links": []}
converter = GrenmlConverter(topology)
links = [{"source": "node1", "target": "node2"}]
converter.add_links(links)
xml = converter.get_xml_str()
print(f"XML after adding links: {xml}")
self.assertIn('<link source="node1" target="node2"/>', xml)

0 comments on commit 4baf48d

Please sign in to comment.