X-Git-Url: http://git.nguyen.vg/gitweb/?a=blobdiff_plain;f=unit_test.ml;h=1f7e73213ac0201a50fff965b2c3dc28c49387fe;hb=cea756c7adc49891004bfe455628010eb7a28bc9;hp=ff8d573c1e09feb0a1bc5edf6c8078c9b43f7045;hpb=92455238a637876bec18bfdaed4f5342f4cbbd1f;p=SXSI%2Fxpathcomp.git diff --git a/unit_test.ml b/unit_test.ml index ff8d573..1f7e732 100644 --- a/unit_test.ml +++ b/unit_test.ml @@ -5,19 +5,6 @@ (* Distributed under the terms of the LGPL (see LICENCE) *) (******************************************************************************) -let collect_tags v = - let rec aux acc v = - if Tree.Binary.is_node v - then - let tag = Tree.Binary.tag v - in - let acc = aux (Ptset.add tag acc) (Tree.Binary.first_child v) - in - aux (Ptset.add tag acc) (Tree.Binary.next_sibling v) - else acc - in - aux Ptset.empty v -;; if Array.length (Sys.argv) <> 2 @@ -30,109 +17,34 @@ then let doc = try - Tree.Binary.load Sys.argv.(1) + Tree.load Sys.argv.(1) with | _ -> ( try - Tree.Binary.parse_xml_uri Sys.argv.(1) + Tree.parse_xml_uri Sys.argv.(1) with | _ ->( Printf.printf "Error parsing document\n"; exit 2)) ;; -let _ = Tag.init (Tree.Binary.tag_pool doc) -;; -(* - let tags = (collect_tags doc) - ;; -(* -let _ = Tree.Binary.test_xml_tree Format.std_formatter tags doc -;; -let _ = Printf.printf "Testing //a with jumping\n" -;; -*) -let rec test_a dir t acc ctx = - if Tree.Binary.is_node t - then - let acc = - if (Tree.Binary.tag t) == (Tag.tag "a") - then Ata.TS.cons t acc - else acc - in - let first = Tree.Binary.tagged_below t Ptset.empty (Ptset.singleton (Tag.tag "a")) - and next = Tree.Binary.tagged_next t Ptset.empty (Ptset.singleton (Tag.tag "a")) ctx - in - let _ = - Printf.printf "t is :"; - Tree.Binary.print_xml_fast stdout t; - Printf.printf " called from %s of " (if dir then "below" else "next"); - Tree.Binary.print_xml_fast stdout ctx; - if (Tree.Binary.is_node next) - then begin - Printf.printf ", Next a is %!"; - Tree.Binary.print_xml_fast stdout next; - end - else - Printf.printf ", Next a is empty!"; - print_newline(); - in - test_a false next (test_a true first acc t) t - else acc -;; -let rec test_text dir t acc ctx = - if Tree.Binary.is_node t - then - let acc = - if (Tree.Binary.tag t) == (Tag.pcdata) - then Ata.TS.cons t acc - else acc - in - let first = Tree.Binary.text_below t - and next = Tree.Binary.text_next t ctx - in - (* - let _ = - Printf.printf "t is :"; - Tree.Binary.print_xml_fast stdout t; - Printf.printf " called from %s of " (if dir then "below" else "next"); - Tree.Binary.print_xml_fast stdout ctx; - if (Tree.Binary.is_node first) - then begin - Printf.printf "First (text) is %!"; - Tree.Binary.print_xml_fast stdout first; - end - else - Printf.printf "First (text) is empty!"; - if (Tree.Binary.is_node next) - then begin - Printf.printf ", Next (text) is %!"; - Tree.Binary.print_xml_fast stdout next; - end - else - Printf.printf ", Next (text) is empty!"; - print_newline(); - in *) - test_text false next (test_text true first acc t) ctx - else acc +let full_traversal tree = + let rec loop t = + if Tree.is_node t + then + begin + (*ignore (Tree.tag t); *) + loop (Tree.node_child t); + loop (Tree.node_sibling t); + end + in loop tree ;; -(* -let r = test_a true doc Ata.TS.empty doc;; -(* -let _ = Printf.printf "==> %i nodes\n" (Ata.TS.length r) -let _ = Ata.TS.iter (fun t -> Tree.Binary.print_xml_fast stdout t; print_newline();) r + -*) -let _ = Tree.Binary.init_contains doc "car" +let _ = Tag.init (Tree.tag_pool doc) -let r = test_text true doc Ata.TS.empty doc -let _ = Printf.printf "==> %i nodes\n" (Ata.TS.length r) -(* let _ = Ata.TS.iter (fun t -> Tree.Binary.print_xml_fast stdout t; print_newline();) r *) -;; - -*) *) let time f x = let t1 = Unix.gettimeofday () in let r = f x in @@ -141,8 +53,6 @@ let time f x = Printf.eprintf " %fms\n%!" t ; r ;; -let _ = Printf.eprintf "Timing full //keyword ... " -let x = List.length (time (Tree.Binary.time_xml_tree doc) (Tag.tag "keyword")) -let _ = Printf.eprintf "Timing jump //keyword ... " -let y = List.length (time (Tree.Binary.time_xml_tree2 doc) (Tag.tag "keyword")) -let _ = Printf.eprintf "coherant : %b\n" (x=y) +let _ = Printf.eprintf "Timing traversal ... ";; +let _ = time (full_traversal) doc +;;