packages feed

pangraph-0.1.1.5: test/GraphML.hs

{-# LANGUAGE OverloadedStrings #-}

module GraphML (
graphmlTests
) where

import Test.HUnit

import Data.Maybe

import Pangraph
import Pangraph.GraphML.Parser
import Pangraph.GraphML.Writer

graphmlTests :: [Test]
graphmlTests = [case1, case2]

case1 :: Test
case1 =
  let
    file = parse "<?xml version=\"1.0\" encoding=\"UTF-8\"?> \
            \<graphml xmlns=\"http://graphml.graphdrawing.org/xmlns\"\
            \    xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\
            \    xsi:schemaLocation=\"http://graphml.graphdrawing.org/xmlns\
            \     http://graphml.graphdrawing.org/xmlns/1.0/graphml.xsd\">\
            \  <graph id=\"G\" edgedefault=\"undirected\">\
            \    <node id=\"n0\"/>\
            \    <node id=\"n1\"/>\
            \    <node id=\"n2\"/>\
            \    <edge id=\"e1\" source=\"n0\" target=\"n2\"/>\
            \    </graph>\
            \</graphml>"
    sampleVertices = [
                      makeVertex "n0" [ ("id","n0")],
                      makeVertex "n1" [ ("id","n1")],
                      makeVertex "n2" [ ("id","n2")]]
    graph = makePangraph sampleVertices
      [makeEdge
        [("source","n0"),("target","n2")]
        (head sampleVertices, sampleVertices !! 2)]
  in TestCase $ assertEqual "GraphML Parse case 1" (graph :: Maybe Pangraph) file

case2 :: Test
case2 =
  let
    sampleVertices = [
                      makeVertex "n0" [ ("id","n0")],
                      makeVertex "n1" [ ("id","n1")],
                      makeVertex "n2" [ ("id","n2")]]
    graph = makePangraph sampleVertices
      [makeEdge
        [("source","n0"),("target","n2")]
        (head sampleVertices, sampleVertices !! 2)]
    justGraph = fromMaybe (error "Sample graph failed to compile") graph
  in TestCase $ assertEqual "GraphML Write case 1" (graph :: Maybe Pangraph) (parse $ write justGraph)