1 (* Title: Pure/ProofGeneral/pgip_tests.ML
5 A test suite for the PGIP abstraction code (in progress).
6 Run to provide some mild insurance against breakage in Isabelle here.
14 else error("PGIP test: expected these two values to be equal:\n" ^
15 (toS a) ^"\n and: \n" ^ (toS b))
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")
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>");
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";
42 val choices = Pgipchoice [Pgipdtype (NONE,Pgipbool), Pgipdtype (NONE,Pgipnat),
43 Pgipdtype (NONE,Pgipnull), Pgipdtype (NONE,Pgipconst "foo")]
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 _ => ()
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>");
62 fun e str = case XML.parse str of
63 (XML.Elem args) => args
64 | _ => error("Expected to get an XML Element")
71 if input (e a) = b then ()
72 else error("PGIP test: expected two inputs to be equal, for input:\n" ^ a)
76 val _ = asseqi "<askpgip/>" (SOME (Askpgip()));
77 val _ = asseqi "<askpgml/>" (SOME (Askpgml()));
78 val _ = asseqi "<askconfig/>" (SOME (Askconfig()));
80 val _ = asseqi "<pgmlsymbolson/>" (SOME (Pgmlsymbolson()));
81 val _ = asseqi "<pgmlsymbolsoff/>" (SOME (Pgmlsymbolsoff()));
82 val _ = asseqi "<startquiet/>" (SOME (Startquiet()));
83 val _ = asseqi "<stopquiet/>" (SOME (Stopquiet()));
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;
91 (** pgip_markup.ML **)
99 (** pgip_output.ML **)
107 (** pgip_parser.ML **)
114 if pgip_parser Position.none a = b then ()
115 else error("PGIP test: expected two parses to be equal, for input:\n" ^ a)
119 asseqp "theory A imports Bthy Cthy Dthy begin"
121 {text = "theory A imports Bthy Cthy Dthy begin",
123 parentnames = ["Bthy", "Cthy", "Dthy"]},
124 Openblock {metavarid=NONE,name=NONE,objtype=SOME ObjTheoryBody}];
128 [Closeblock {}, Closetheory {text = "end"}];