pangraph-0.2.1: test/Gml.hs
{-# LANGUAGE OverloadedStrings #-}
module Gml where
import Test.HUnit
import Data.Maybe(fromJust)
import Pangraph
import Pangraph.Gml.Ast
import Pangraph.Gml.Parser
import Pangraph.Gml.Writer
gmlTests :: [Test]
gmlTests = [testGmlParse, pangraphConversion, testComments, testGmlWrite,
testPangraphWrite, testHtmlEntitiesDecoding, testHtmlEntitiesEncoding]
testGmlParse :: Test
testGmlParse = let
file = "graph [node [id 1 label \"Hello\"] node [id 2] edge [source 1 target 2]]"
graph = Just (Object [("graph", Object [
("node", Object [("id", Integer 1), ("label", String "Hello")]),
("node", Object [("id", Integer 2)]),
("edge", Object [("source", Integer 1),
("target", Integer 2)])])])
in TestCase $ assertEqual "GML parseTest1" graph (parseGml file)
pangraphConversion :: Test
pangraphConversion = let
file = "graph [node [id 1] node [id 2] edge [source 1 target 2]]"
vertices = [makeVertex "1" [("id", "1")], makeVertex "2" [("id", "2")]]
[v1,v2] = map vertexID vertices
edges = [makeEdge (v1, v2) [("source", "1"), ("target", "2")] ]
pangraph = makePangraph vertices edges
in TestCase $ assertEqual "GML pangraphConversion" pangraph (parse file)
testComments :: Test
testComments = let
file = "#test"
graph = Just (Object [])
in TestCase $ assertEqual "GML testComments" graph (parseGml file)
testGmlWrite :: Test
testGmlWrite = let
graph = (Object [("graph", Object [("node", Object [("id", Integer 1)]),
("node", Object [("id", Integer 2)]),
("edge", Object [("source", Integer 1),
("target", Integer 2)])])])
file = Just "graph [ node [ id 1] node [ id 2] edge [ source 1 target 2]]"
in TestCase $ assertEqual "GML testWriteGML" file (writeGml graph)
testPangraphWrite :: Test
testPangraphWrite = let
file = "graph [ node [ id 1] node [ id 2] edge [ source 1 target 2]]"
in TestCase $ assertEqual "GML parseTest2" file (write gmlPangraphWrite)
testHtmlEntitiesDecoding :: Test
testHtmlEntitiesDecoding = let
file = "graph [node [id 1 label \""Hello"\" ] node [id 2] edge [source 1 target 2]]"
in TestCase $ assertEqual "GML testHtmlEntitiesDecoding" (Just gmlPangraph) (parse file)
testHtmlEntitiesEncoding :: Test
testHtmlEntitiesEncoding = let
file = "graph [ node [ id 1 label \""Hello"\"] node [ id 2] edge [ source 1 target 2]]"
in TestCase $ assertEqual "GML testHtmlEntitiesEncoding" file (write gmlPangraph)
gmlPangraph :: Pangraph
gmlPangraph = let
vertices = [makeVertex "1" [("id", "1"), ("label", "\"Hello\"")], makeVertex "2" [("id", "2")]]
[v1,v2] = map vertexID vertices
edges = [makeEdge (v1, v2) [("source", "1"), ("target", "2")]]
in fromJust $ makePangraph vertices edges
gmlPangraphWrite :: Pangraph
gmlPangraphWrite = let
vertices = [makeVertex "1" [("id", "1")], makeVertex "2" [("id", "2")]]
[v1,v2] = map vertexID vertices
edges = [makeEdge (v1, v2) [("source", "1"), ("target", "2")]]
in fromJust $ makePangraph vertices edges