packages feed

AndroidViewHierarchyImporter-0.1.0.0: Output.hs

{- | Test functions for tree generation

(should no more be in an output file ...)

-}
module Output(
	  graphviz
	, viewName 
	, opml
	) where

import Data.Tree(drawTree,Tree(..))
import Types
import Data.List.Split
import Test.QuickCheck 
import ViewServer(mkTree)
import OPML 
import Graphviz

randomTree :: Arbitrary a => Int -> Gen (Tree a)
randomTree level | level == 0 = do 
	 a <- arbitrary 
	 return $ Node a []
                 | otherwise = do 
   	 a <- arbitrary
   	 nb <- choose (1,5)
   	 children <- sequence (replicate nb (randomTree (level-1)))
   	 return $ Node a children

instance Arbitrary a => Arbitrary (Tree a) where 
   arbitrary = do 
   	 level <- choose (1,4)
   	 randomTree level

newtype Name = N String deriving(Eq,Show)

toString (N s) = s

instance Arbitrary Name where 
	arbitrary = do 
		n <- choose (1,5)
		let c = choose ('a','z')
		r <- sequence (replicate n c)
		return (N r)

reconstruct_prop :: Tree Name -> Bool
reconstruct_prop a = mkTree (flattenTree 0 a) == a 
  
flattenTree nb (Node a l) = (nb,a):concatMap (flattenTree (nb+1)) (reverse l)