From 67943747c1625cc97cdcf15862f61a58bf0fdaa4 Mon Sep 17 00:00:00 2001 From: ygrek Date: Sun, 5 Sep 2010 15:16:05 +0300 Subject: [PATCH] unit tests --- config/Makefile.in | 4 ++++ tools/tests.ml | 64 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 68 insertions(+) create mode 100644 tools/tests.ml diff --git a/config/Makefile.in b/config/Makefile.in index 5fa608c3..02664909 100644 --- a/config/Makefile.in +++ b/config/Makefile.in @@ -575,6 +575,9 @@ CDK_CMXA=cdk.cmxa MLNET_CMXA=$(CDK_CMXA) magic.cmxa common.cmxa client.cmxa core.cmxa driver.cmxa MLNET_SRCS= $(MAIN_SRCS) +TESTS_CMXA=$(CDK_CMXA) magic.cmxa common.cmxa client.cmxa core.cmxa +TESTS_SRCS=tools/tests.ml + ifeq ("$(GUI)", "newgui2") mlnet+gui_CMXA= \ magic.cmxa cdk.cmxa common.cmxa client.cmxa core.cmxa driver.cmxa \ @@ -1342,6 +1345,7 @@ EXPAND(BTVIEW,btview) EXPAND(CLUSTER,cluster) EXPAND(TESTRSS,testrss) EXPAND(SVG_CONVERTER,svg_converter) +EXPAND(TESTS,tests) ####################################################################### diff --git a/tools/tests.ml b/tools/tests.ml new file mode 100644 index 00000000..bdfed3ca --- /dev/null +++ b/tools/tests.ml @@ -0,0 +1,64 @@ + +open Printf + +let pr fmt = ksprintf print_endline fmt + +let test ?n ?s f = + try + f () + with + exn -> + let msg = match s,n with + | Some s, Some n -> sprintf " %d %S" n s + | Some s, None -> sprintf " %S" s + | None, Some n -> sprintf " %d" n + | None, None -> "" + in + pr "Test%s failed: %s" msg (Printexc2.to_string exn) + +let test1 ?n ?s f x = test ?n ?s (fun () -> f x) + +let magnet s = + let magnet = CommonTypes.parse_magnet_url s in + pr "name: %S" magnet#name; + begin match magnet#size with Some size -> pr "size: %Ld" size | None -> () end; + pr "uids:"; + List.iter (fun x -> pr " %s" (CommonTypes.string_of_uid x)) magnet#uids; + pr "" + +let test_magnet () = + let t s = test1 ~s magnet s in + t "magnet:?xt=urn:tree:tiger:UXNWMYERN37HJNXB7V6KDJKZXMFBIQAGMDMYDBY&dn=DCPlusPlus-0.4032.exe"; + t "magnet:?xt=urn:ed2k:354B15E68FB8F36D7CD88FF94116CDC1&xl=10826029&dn=mediawiki-1.15.1.tar.gz&xt=urn:tree:tiger:7N5OAMRNGMSSEUE3ORHOKWN4WWIQ5X4EBOOTLJY&xt=urn:btih:QHQXPYWMACKDWKP47RRVIV7VOURXFE5Q&tr=http%3A%2F%2Ftracker.example.org%2Fannounce.php%3Fuk%3D1111111111%26&as=http%3A%2F%2Fdownload.wikimedia.org%2Fmediawiki%2F1.15%2Fmediawiki-1.15.1.tar.gz&xs=http%3A%2F%2Fcache.example.org%2FXRX2PEFXOOEJFRVUCX6HMZMKS5TWG4K5&xs=dchub://example.org"; + t "magnet:?xt=urn:ed2k:31D6CFE0D16AE931B73C59D7E0C089C0&xl=0&dn=zero_len.fil&xt=urn:bitprint:3I42H3S6NNFQ2MSVX7XZKYAYSCX5QBYJ.LWPNACQDBZRYXW3VHJVCJ64QBZNGHOHHHZWCLNQ&xt=urn:md5:D41D8CD98F00B204E9800998ECF8427E"; + () + +let test_shorten () = + let orig = "привет" in + for i = 0 to 100 do + test ~n:i ~s:"shorten" begin fun () -> + let s = DcGlobals.shorten_string orig i in + assert (s = String.sub orig 0 (min (String.length orig) (i*2))) + end + done; + () + +let test_dc_parse () = + let t x s = + test ~s (fun () -> + match DcProtocol.dc_parse false s with + | DcProtocol.UnknownReq _ -> assert (not x) + | _ -> assert x) + in + t true "$ADCGET list /shared1/ 0 -1"; + t true "$ADCGET file TTH/ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789012 1332982893 9194387"; + t false "$ADCGET tthl q 0 -1" + +let () = +(* let _ = Ip.addr_of_string "dchub://83.102.255.226" in *) +(* let _ = Url.of_string "/submit?q=dcn+dchub://example.com+411" in *) + test_magnet (); + test_shorten (); + test_dc_parse (); + pr "Tests finished"; + () -- 2.11.4.GIT