let test_yaxposax = fun (fname:string) -> let r = Cps_reader.make_utf8_file_reader fname in let trace id dat = print_string id; print_string dat; print_char '\n' in let callbacks = { Yaxposax.start_element = (fun name atts kont -> trace "start_element: " (Yaxpo.string_of_qname name); List.iter (fun att -> trace "with att: " (Yaxpo.string_of_att att)) atts; kont ()); Yaxposax.end_element = (fun name kont -> trace "end_element: " (Yaxpo.string_of_qname name); kont ()); Yaxposax.characters = (fun str kont -> trace "characters: " str; kont ()); Yaxposax.comment = (fun str kont -> trace "comment: " str; kont ()); Yaxposax.pi = (fun target value kont -> trace "processing instruction target: " target; trace "processing instruction value: " value; kont ()); Yaxposax.cdata = (fun data kont -> trace "cdata: " data; kont ()) } in Yaxposax.parse_document r callbacks (fun () -> ());; open Yaxpodom;; let test_yaxpodom = fun (fname:string) -> let r = Cps_reader.make_utf8_file_reader fname in let trace id dat = print_string id; print_string dat; print_char '\n' in let rec printele an_ele = trace "element: " (string_of_qname (ele_name an_ele)); trace "with namespace: " (qname_nsURI (ele_name an_ele)); List.iter (fun att -> trace "with att: " (string_of_att att)) (ele_atts an_ele); List.iter printcontent (ele_children an_ele); trace "end element: " (string_of_qname (ele_name an_ele)) and printcontent = (function Text(s) -> trace "text: " s | CDATA(s) -> trace "cdata: " s | Subele(e) -> printele e | Comment(s) -> trace "comment: " s | PI(target,value) -> trace "pi target: " target; trace "pi value: " value) in let the_doc = build_doc_tree r in (match the_doc with (prolog,doc_ele) -> List.iter printcontent !prolog; printele !doc_ele);; print_string "****** YAXPO test suite. Expects files utf8test.txt and test.xml to contain test data.\n";; print_string "****** Beginning UTF-8 test...\n"; let r = Cps_reader.make_utf8_file_reader "utf8test.txt" in let frequencies = [|0; 0; 0; 0; 0; 0|] in try while true do r#read_char (fun chr -> let size = Utf8_char.size chr in frequencies.(size - 1) <- frequencies.(size - 1) + 1) done with End_of_file -> print_string "\tSize\tCount\n"; for i = 0 to 5 do print_char '\t'; print_int (i + 1); print_char '\t'; print_int frequencies.(i); print_char '\n' done;; let test_nsutils () = let screwed_ele = Element(QName("pfx","hello","some-URI"), ref [ Att(QName("pfx","an_att","some-URI"),ref "value"); Att(QName("pfx2","another_att","other-URI"),ref "value") ], ref [ Subele( Element(QName("pfx2","world","some-URI"), ref [ Att(QName("pfx","an_att","another-URI"),ref "value") ], ref [])) ]) in Namespace_utils.qualify_namespaces screwed_ele []; print_string (string_of_ele screwed_ele); print_char '\n';; print_string "****** Beginning Yaxposax test...\n"; test_yaxposax "test.xml"; print_string "****** Beginning Yaxpodom test...\n"; test_yaxpodom "test.xml"; print_string "****** Beginning Namespace utils test...\n"; test_nsutils (); print_string "****** Tests completed.\n";;