src/Pure/ProofGeneral/pgip_tests.ML
author wenzelm
Wed, 27 Aug 2008 12:00:28 +0200
changeset 28020 1ff5167592ba
parent 26541 14b268974c4b
child 29606 fedb8be05f24
permissions -rw-r--r--
get rid of tabs;
     1 (*  Title:      Pure/ProofGeneral/pgip_tests.ML
     2     ID:         $Id$
     3     Author:     David Aspinall
     4 
     5 A test suite for the PGIP abstraction code (in progress).
     6 Run to provide some mild insurance against breakage in Isabelle here.
     7 *)
     8 
     9 (** pgip_types.ML **)
    10 
    11 local
    12 fun asseq_p toS a b =
    13     if a=b then ()
    14     else error("PGIP test: expected these two values to be equal:\n" ^
    15                (toS a) ^"\n and: \n" ^ (toS b))
    16 
    17 val asseqx = asseq_p XML.string_of
    18 val asseqs = asseq_p I
    19 val asseqb = asseq_p (fn b=>if b then "true" else "false")
    20 
    21 open PgipTypes;
    22 in
    23 
    24 val _ = asseqx (pgiptype_to_xml Pgipnull) (XML.parse "<pgipnull/>");
    25 val _ = asseqx (pgiptype_to_xml Pgipbool) (XML.parse "<pgipbool/>");
    26 val _ = asseqx (pgiptype_to_xml (Pgipint (NONE,NONE))) (XML.parse "<pgipint/>");
    27 val _ = asseqx (pgiptype_to_xml (Pgipint (SOME 5,SOME 7))) (XML.parse "<pgipint min='5' max='7'/>");
    28 val _ = asseqx (pgiptype_to_xml (Pgipint (NONE,SOME 7))) (XML.parse "<pgipint max='7'/>");
    29 val _ = asseqx (pgiptype_to_xml (Pgipint (SOME ~5,NONE))) (XML.parse "<pgipint min='-5'/>");
    30 val _ = asseqx (pgiptype_to_xml Pgipstring) (XML.parse "<pgipstring/>");
    31 val _ = asseqx (pgiptype_to_xml (Pgipconst "radio1"))  (XML.parse "<pgipconst name='radio1'/>");
    32 val _ = asseqx (pgiptype_to_xml (Pgipchoice [Pgipdtype (SOME "the best choice",Pgipbool)]))
    33        (XML.parse "<pgipchoice><pgipbool descr='the best choice'/></pgipchoice>");
    34 
    35 val _ = asseqs (pgval_to_string (read_pgval Pgipbool "true")) "true";
    36 val _ = asseqs (pgval_to_string (read_pgval Pgipbool "false")) "false";
    37 val _ = asseqs (pgval_to_string (read_pgval (Pgipint(NONE,NONE)) "-37")) "-37";
    38 val _ = asseqs (pgval_to_string (read_pgval Pgipnat "45")) "45";
    39 val _ = asseqs (pgval_to_string (read_pgval Pgipstring "stringvalue")) "stringvalue";
    40 
    41 local
    42     val choices = Pgipchoice [Pgipdtype (NONE,Pgipbool), Pgipdtype (NONE,Pgipnat), 
    43                               Pgipdtype (NONE,Pgipnull), Pgipdtype (NONE,Pgipconst "foo")]
    44 in
    45 val _ = asseqs (pgval_to_string (read_pgval choices "45")) "45";
    46 val _ = asseqs (pgval_to_string (read_pgval choices "foo")) "foo";
    47 val _ = asseqs (pgval_to_string (read_pgval choices "true")) "true";
    48 val _ = asseqs (pgval_to_string (read_pgval choices "")) "";
    49 val _ = (asseqs (pgval_to_string (read_pgval choices "-37")) "-37"; 
    50          error "pgip_tests: should fail") handle PGIP _ => ()
    51 end
    52 
    53 val _ = asseqx (haspref {name="provewithgusto",descr=SOME "use energetic proofs",
    54                  default=SOME "true", pgiptype=Pgipbool})
    55        (XML.parse "<haspref name='provewithgusto' descr='use energetic proofs' default='true'><pgipbool/></haspref>");
    56 end
    57 
    58 
    59 (** pgip_input.ML **)
    60 local
    61 
    62 fun e str = case XML.parse str of 
    63                 (XML.Elem args) => args
    64               | _ => error("Expected to get an XML Element")
    65 
    66 open PgipInput;
    67 open PgipTypes;
    68 open PgipIsabelle;
    69 
    70 fun asseqi a b =
    71     if input (e a) = b then ()
    72     else error("PGIP test: expected two inputs to be equal, for input:\n" ^ a)
    73 
    74 in
    75 
    76 val _ = asseqi "<askpgip/>" (SOME (Askpgip()));
    77 val _ = asseqi "<askpgml/>" (SOME (Askpgml()));
    78 val _ = asseqi "<askconfig/>" (SOME (Askconfig()));
    79 (* FIXME: new tests:
    80 val _ = asseqi "<pgmlsymbolson/>" (SOME (Pgmlsymbolson()));
    81 val _ = asseqi "<pgmlsymbolsoff/>" (SOME (Pgmlsymbolsoff()));
    82 val _ = asseqi "<startquiet/>" (SOME (Startquiet()));
    83 val _ = asseqi "<stopquiet/>" (SOME (Stopquiet()));
    84 *)
    85 val _ = asseqi "<askrefs thyname='foo' objtype='theory'/>" (SOME (Askrefs {url=NONE, thyname=SOME "foo",
    86                                                                           objtype=SOME ObjTheory,name=NONE}));
    87 val _ = asseqi "<otherelt/>" NONE;
    88 
    89 end
    90 
    91 (** pgip_markup.ML **)
    92 local
    93 open PgipMarkup
    94 in
    95 val _ = ()
    96 end
    97 
    98 
    99 (** pgip_output.ML **)
   100 local
   101 open PgipOutput
   102 in
   103 val _ = ()
   104 end
   105 
   106 
   107 (** pgip_parser.ML **)
   108 local
   109 open PgipMarkup
   110 open PgipParser
   111 open PgipIsabelle
   112 
   113 fun asseqp a b =
   114     if pgip_parser Position.none a = b then ()
   115     else error("PGIP test: expected two parses to be equal, for input:\n" ^ a)
   116 
   117 in
   118 val _ = 
   119     asseqp "theory A imports Bthy Cthy Dthy begin"
   120     [Opentheory
   121          {text = "theory A imports Bthy Cthy Dthy begin",
   122           thyname = SOME "A",
   123           parentnames = ["Bthy", "Cthy", "Dthy"]},
   124      Openblock {metavarid=NONE,name=NONE,objtype=SOME ObjTheoryBody}];
   125 
   126 val _ = 
   127     asseqp "end" 
   128    [Closeblock {}, Closetheory {text = "end"}];
   129 
   130 end