Logo ROOT  
Reference Guide
 
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
Loading...
Searching...
No Matches
TUriTest.C File Reference

Detailed Description

Rudimentary TUri test macro.

#include <TUri.h>
Bool_t TestResolutionHelper(TUri reference, TUri nominal, TUri &base)
{
TUri actual = TUri::Transform(reference, base);
if (!(nominal == actual))
Printf("\tERROR: %s => %s (should read: %s)", reference.GetUri().Data(), actual.GetUri().Data(), nominal.GetUri().Data());
return (nominal == actual);
}
{
TUri base = TUri("http://a/b/c/d;p?q");
// 5.4.1. Normal Examples
success &= TestResolutionHelper("g:h", "g:h", base);
success &= TestResolutionHelper("g", "http://a/b/c/g", base);
success &= TestResolutionHelper("./g", "http://a/b/c/g", base);
success &= TestResolutionHelper("g/", "http://a/b/c/g/", base);
success &= TestResolutionHelper("/g", "http://a/g", base);
success &= TestResolutionHelper("//g", "http://g", base);
success &= TestResolutionHelper("?y", "http://a/b/c/d;p?y", base);
success &= TestResolutionHelper("g?y", "http://a/b/c/g?y", base);
success &= TestResolutionHelper("#s", "http://a/b/c/d;p?q#s", base);
success &= TestResolutionHelper("g#s", "http://a/b/c/g#s", base);
success &= TestResolutionHelper("g?y#s", "http://a/b/c/g?y#s", base);
success &= TestResolutionHelper(";x", "http://a/b/c/;x", base);
success &= TestResolutionHelper("g;x", "http://a/b/c/g;x", base);
success &= TestResolutionHelper("g;x?y#s", "http://a/b/c/g;x?y#s", base);
success &= TestResolutionHelper("", "http://a/b/c/d;p?q", base);
success &= TestResolutionHelper(".", "http://a/b/c/", base);
success &= TestResolutionHelper("./", "http://a/b/c/", base);
success &= TestResolutionHelper("..", "http://a/b/", base);
success &= TestResolutionHelper("../", "http://a/b/", base);
success &= TestResolutionHelper("../g", "http://a/b/g", base);
success &= TestResolutionHelper("../..", "http://a/", base);
success &= TestResolutionHelper("../../", "http://a/", base);
success &= TestResolutionHelper("../../g", "http://a/g", base);
// 5.4.2. Abnormal Examples
success &= TestResolutionHelper("../../../g", "http://a/g", base);
success &= TestResolutionHelper("../../../../g", "http://a/g", base);
success &= TestResolutionHelper("/./g", "http://a/g", base);
success &= TestResolutionHelper("/../g", "http://a/g", base);
success &= TestResolutionHelper("g.", "http://a/b/c/g.", base);
success &= TestResolutionHelper(".g", "http://a/b/c/.g", base);
success &= TestResolutionHelper("g..", "http://a/b/c/g..", base);
success &= TestResolutionHelper("..g", "http://a/b/c/..g", base);
success &= TestResolutionHelper("./../g", "http://a/b/g", base);
success &= TestResolutionHelper("./g/.", "http://a/b/c/g/", base);
success &= TestResolutionHelper("g/./h", "http://a/b/c/g/h", base);
success &= TestResolutionHelper("g/../h", "http://a/b/c/h", base);
success &= TestResolutionHelper("g;x=1/./y", "http://a/b/c/g;x=1/y", base);
success &= TestResolutionHelper("g;x=1/../y", "http://a/b/c/y", base);
success &= TestResolutionHelper("g?y/./x", "http://a/b/c/g?y/./x", base);
success &= TestResolutionHelper("g?y/../x", "http://a/b/c/g?y/../x", base);
success &= TestResolutionHelper("g#s/./x", "http://a/b/c/g#s/./x", base);
success &= TestResolutionHelper("g#s/../x", "http://a/b/c/g#s/../x", base);
success &= TestResolutionHelper("http:g", "http:g", base);
return(success);
}
{
for (char i = 0; i < 127; i++) {
char buffer[10];
sprintf(buffer, "0x%02x, ", i);
errors = errors + buffer;
}
}
if (!errors.IsNull())
Printf("\tERROR at %s", errors.Data());
else
Printf("\tOK");
return errors.IsNull();
}
{
TString composed = "http://user:pass@host.org/some/path/file.avi?key1=value1#anchor3";
TUri uri;
uri.SetScheme("http");
uri.SetUserInfo("user:pass");
uri.SetHost("host.org");
uri.SetPath("/some/path/file.avi");
uri.SetQuery("key1=value1");
uri.SetFragment("anchor3");
return uri.GetUri() == composed;
}
{
if (success)
Printf("---> SUCCESS\n");
else
Printf("---> F A I L E D F A I L E D F A I L E D\n");
}
{
// validating examples from RFC chapter 1.1.2
valid &= TUri("ftp://ftp.is.co.za/rfc/rfc1808.txt").IsUri();
valid &= TUri("http://www.ietf.org/rfc/rfc2396.txt").IsUri();
// IPV6 example excluded
valid &= TUri("mailto:John.Doe@example.com").IsUri();
valid &= TUri("news:comp.infosystems.www.servers.unix").IsUri();
valid &= TUri("tel:+1-816-555-1212").IsUri();
valid &= TUri("telnet://192.0.2.16:80/").IsUri();
valid &= TUri("urn:oasis:names:specification:docbook:dtd:xml:4.1.2").IsUri();
return valid;
}
void TUriTest()
{
Printf("\n\nTUri test macro ...");
Printf("---> Validation");
Printf("---> Reference Resolution");
Printf("---> PCT Conversion");
Printf("---> Equivalence and Normalisation");
Answer(TUri("example://a/b/c/%7Bfoo%7D") == TUri("eXAMPLE://a/./b/../b/%63/%7bfoo%7d"));
Printf("---> Composition");
}
bool Bool_t
Definition RtypesCore.h:63
constexpr Bool_t kTRUE
Definition RtypesCore.h:93
ROOT::Detail::TRangeCast< T, true > TRangeDynCast
TRangeDynCast is an adapter class that allows the typed iteration through a TCollection.
void Printf(const char *fmt,...)
Formats a string in a circular formatting buffer and prints the string.
Definition TString.cxx:2503
Basic string class.
Definition TString.h:139
const char * Data() const
Definition TString.h:376
This class represents a RFC 3986 compatible URI.
Definition TUri.h:35
Bool_t SetScheme(const TString &scheme)
Set scheme component of URI:
Definition TUri.cxx:248
Bool_t SetFragment(const TString &fragment)
Set fragment component of URI:
Definition TUri.cxx:498
Bool_t SetPath(const TString &path)
Set path component of URI:
Definition TUri.cxx:481
Bool_t SetUserInfo(const TString &userinfo)
Set userinfo component of URI:
Definition TUri.cxx:405
Bool_t IsUri() const
Returns kTRUE if instance qualifies as URI URI = scheme ":" hier-part [ "?" query ] [ "#" fragment ] ...
Definition TUri.cxx:227
static const TString PctEncode(const TString &source)
Percent-encode and return the given string according to RFC 3986 in principle, this function cannot f...
Definition TUri.cxx:815
const TString GetUri() const
Returns the whole URI - an implementation of chapter 5.3 component recomposition.
Definition TUri.cxx:140
static TUri Transform(const TUri &reference, const TUri &base)
Transform a URI reference into its target URI using given a base URI.
Definition TUri.cxx:1122
Bool_t SetQuery(const TString &path)
Set query component of URI:
Definition TUri.cxx:298
Bool_t SetHost(const TString &host)
Set host component of URI:
Definition TUri.cxx:442
static const TString PctDecode(const TString &source)
Percent-decode the given string according to chapter 2.1 we assume a valid pct-encoded string.
Definition TUri.cxx:1086
Author
Gerhard E. Bruckner 2007-10-18

Definition in file TUriTest.C.