<?xml version="1.0" encoding="us-ascii" ?>
<!-- $Id: DataTypeTest.xml 1467 2002-10-06 18:07:06Z kk122374 $ -->
<suite>

<!--
	untested types
		
-->

<case name="test for QName">
	<!--
		test suite provides ValidationContextProvideder that
		resolves prefixes as follows:
		
		foo     -> http://foo.examples.com/
		bar     -> http://bar.examples.com/
		baz     -> http://bar.examples.com/
		emp     -> http://empty.examples.com/
		<empty> -> http://empty.examples.com/
	-->
	
	<value>  foo:head </value>
	<value > foo:mod</value>
	<value  >bar:role</value>
	<value>  baz:role  </value>
	<value > ascii </value>
	
	<answer for="QName"				>ooooo</answer>
	
	<comment><!-- semantics of "length" for QName is unclear. -->
		<choice>
			<!-- length -->
			<facet	answer=			"o.oo."	name="length"	value="8" />
			<facet	answer=			"....o"	name="length"	value="5" />
			
			<!-- min/maxLength -->
			<combination>
				<choice>
					<facet answer=	"ooooo"	name="minLength"	value="5" />
					<facet answer=	"oooo."	name="minLength"	value="6" />
				</choice>
				<choice>
					<facet answer=	"o.ooo"	name="maxLength"	value="7" />
					<facet answer=	"ooooo"	name="maxLength"	value="8" />
				</choice>
			</combination>
		</choice>
	</comment>
	
	<facets><combination>
		
		<!-- pattern -->
		<combination mode="or">
			<facet answer=			"oo..."	name="pattern"	value="foo:.*" />
			<facet answer=			"..oo."	name="pattern"	value="ba.:.*" />
		</combination>
		
		<!-- enumeration -->
		<combination mode="or">
			<facet answer=			"..oo." name="enumeration" value="bar:role" />
			<facet answer=			"....o" name="enumeration" value="emp:ascii" />
		</combination>
	</combination></facets>
	
	<wrongs>
		<value>:foo</value>
		<value>foo:</value>
		<value>not:a:qname</value>
		<value>unknown:prefix</value>
		<value>12345</value>	<!-- not even a Name -->
		<value>:</value>
		<value>-joe</value>
	</wrongs>
</case>


<case name="test for anyURI">
	<value>http://www.swiftinc.co.jp/	</value>
	<value>http://www.swiftinc.co.jp/mypage.html#fragment	</value>
	<value>ftp://user:pwd@www.swiftinc.co.jp/?query=a+b-c	</value>
	<value>telnet://192.168.0.1:1234/ip/v4#address </value>
	
	<!-- IPv6 addresses (taken from RFC2732) -->
	<value>http://[FEDC:BA98:7654:3210:FEDC:BA98:7654:3210]:80/index.html</value>
	<value>http://[1080:0:0:0:8:800:200C:417A]/index.html</value>
	<value>http://[3ffe:2a00:100:7031::1]</value>
	<value>http://[1080::8:800:200C:417A]/foo</value>
	<value>http://[::192.9.5.5]/ipng</value>
	<value>http://[::FFFF:129.144.52.38]:80/index.html</value>
	<value>http://[2010:836B:4179::836B:4179]</value>
	

	<!-- examples from RFC2396 -->
	<value>ftp://ftp.is.co.za/rfc/rfc1808.txt</value>
	<value>gopher://spinaltap.micro.umn.edu/00/Weather/California/Los%20Angeles</value>
	<value>http://www.math.uio.no/faq/compression-faq/part1.html</value>
	<value>mailto:mduerst@ifi.unizh.ch</value>
	<value>news:comp.infosystems.www.servers.unix</value>
	<value>telnet://melvyl.ucop.edu/</value>
	
	<!-- relative URIs taken from http://www.ics.uci.edu/~fielding/url/test1.html 40 items. -->
	<value>g:h</value>
	<value>g</value>
	<value>./g</value>
	<value>g/</value>
	<value>/g</value>
	<value>//g</value>
	<value>g?y</value>
	<value>#s</value>
	<value>g#s</value>
	
	<value>g?y#s</value>
	<value>;x</value>
	<value>g;x</value>
	<value>g;x?y#s</value>
	<value>.</value>
	<value>./</value>
	<value>..</value>
	<value>../g</value>
	<value>../../</value>
	<value>../../g</value>
	
	<value>../../../g</value>
	<value>../../../../g</value>
	<value>/./g</value>
	<value>/../g</value>
	<value>g.</value>
	<value>.g</value>
	<value>g..</value>
	<value>..g</value>
	<value>./../g</value>
	<value>./g/.</value>
	
	<value>g/./h</value>
	<value>g/../h</value>
	<value>g;x=1/./y</value>
	<value>g;x=1/../y</value>
	<value>g?y/./x</value>
	<value>g?y/../x</value>
	<value>g#s/./x</value>
	<value>g#s/../x</value>
	<value>http:g</value>
	<value>http:</value>
	
	<!-- ad hoc test -->
	<!-- <scheme>:<opaque_part> -->
	<value>		x56:-_.!*'();/?:@&amp;=+$, </value>
	
	<answer for="anyURI"		>oooo ooooooo oooooo  ooooooooo oooooooooo oooooooooo ooooooooo.  o</answer>
	
	<facets><combination>
		<choice>
			<!-- length related facet -->
			<facet answer=		".... ....... ......  o.o..oo.o ..o....... ......oo.. ..........  ."	name="length" value="3" />
			<combination>
				<facet answer=	"oooo ooooooo oooooo  ......... o..o....oo oo.o....oo oooooooooo  o"	name="minLength" value="5" />
				<facet answer=	".... ....... ......  ooooooooo oooooooooo o.oooooooo oooooooooo  ."	name="maxLength" value="10" />
			</combination>
		</choice>
		
		<combination mode="or">
			<facet answer=		"oo.. ooooooo ..o...  ......... .......... .......... ........oo  ."	name="pattern" value="h.*" />
			<facet answer=		"oooo ooooooo ooo..o  ......... .......... .......... ..........  ."	name="pattern" value=".+//.+" />
		</combination>
	</combination></facets>
	
	<wrongs>
		<!--	wrong scheme -->
		<value>123://mydomain.com/</value>
<!--		<value>http://no.space.com/allowed in/URI</value>	-->
<!-- character escape makes the above case valid -->
		
		
		<!-- surprisingly, the following URL is valid
		
		<value> http://12345.67/ </value>
		
		because it can be interpreted as 
  
	absoluteURI
->	scheme ":" hier_part
->	"http:" abs_path
->	"http" ":" "/" path_segments
->	"http" ":" "/" segment ("/" segment )*
->	"http" ":" "/" segment "/" segment "/" segment
->	"http" ":" "/"         "/" pchar*  "/"
->	"http" ":" "/"         "/" "12345.678" "/"
->	"http://12345.678/"

	In fact, any net_path production but IPv6addresses
	can be accepted by this production.
-->
	</wrongs>
</case>

<case name="test for day">
	<value> ---01 </value>
	<value> ---02 </value>
	<value> ---05 </value>
	<value> ---28 </value>
	<value> ---29 </value>
	<value> ---30 </value>
	<value> ---31 </value>
	
	<value> ---10  </value>
	<value> ---10-14:00 </value>
	<value> ---10-08:00 </value>
	<value> ---10Z </value>
	<value> ---10+05:00 </value>
	<value> ---10+09:00 </value>
	
	<answer for="gDay"			>ooooooo oooooo</answer>
	
	<facets><combination>
		<combination mode="or">
			<facet answer=		"ooo.... ......" name="pattern" value="---0." />
			<facet answer=		"....... oooooo" name="pattern" value=".*10.*" />
		</combination>
<!--	order relation is broken
		note that value of "value" attribute is modified to make it commentable.
		remove \ when you use them.
		<combination mode="or">
			<facet answer=		"....... ......" name="enumeration" value="-\-\-01Z" />
			<facet answer=		"....... .o...." name="enumeration" value="-\-\-09+10:00" />
		</combination>
		<choice>
			<facet answer=		"..ooooo oooooo" name="minInclusive" value="-\-\-05" />
			<facet answer=		"...oooo oooooo" name="minExclusive" value="-\-\-05" />
			<facet answer=		"...oooo o....." name="minInclusive" value="-\-\-10" />
		</choice>
-->
	</combination></facets>
	
	<wrongs>
		<value> ---10-5:00 </value>
		<value> 10 </value>
		<value> ---1 </value>
		<value> ---00 </value>
		<value> ---32 </value>
	</wrongs>
</case>

<case name="test for anyURI(2)">
	<value> http://&#x125;.gr.jp/" </value>
	<value> http://&#x937;.gr.jp/" </value>
	<value> http://&#x29C3;.gr.jp/" </value>
	
	<answer for="anyURI"		>ooo</answer>
	
	<facets>
		<facet answer="ooo"	name="pattern" value=".*" />
	</facets>
	
	<wrongs />
</case>

<case name="test for dateTime">
	<value>2001-01-01T00:00:00-14:00</value>
	<value>2001-01-01T00:00:00-02:00</value>
	<value>2001-01-01T00:00:00</value>
	<value>2001-01-01T00:00:00Z</value>
	<value>2001-01-01T00:00:00+02:00</value>
	<value>2001-01-01T00:00:00+14:00</value>
	
	<!-- abuse -->
	<value>9999999999999999999999999-05-13T02:14:00Z</value>
	<value>2001-01-01T05:12:13.0000000000000000000000000000000000000000000001</value>
	
	<answer for="dateTime"		>oooooo oo</answer>
	
	<facets>
		<facet		answer=		"oooooo oo" name="pattern" value=".*" />
	</facets>
	
	<wrongs>
		<value>0000-01-01T12:12:12Z</value>	<!-- no year 0 -->
		<value>1999-02-29T10:00:00Z</value> <!-- leap year related -->
	</wrongs>
</case>
	
	<comment>
<case name="simple test for duration">
	<value>P1Y1M1DT1H1M1.1111S</value>
	<value>-P123Y</value>
	
	<!-- truncated forms -->
	<value>P1YT1S</value>
	
	<answer for="duration"		>oo o</answer>
	
	<facets>
		<facet		answer=		"oo o" name="pattern" value=".*" />
	</facets>
	
	<wrongs>
		<value>P-123Y</value>	<!-- malplaced '-' -->
		<value>P5.2D</value>	<!-- only seconds have fraction -->
		<value>P123YT</value>	<!-- T is unnecessary -->
		<value>P52S</value>		<!-- T is necessary -->
	</wrongs>
</case>
</comment>

<case name="test for time">
	<!-- ad hoc values -->
	<value>00:00:00</value>
	<value>08:00:00Z</value>
	<value> 12:15:32-08:00 </value>
	
	<value>15:00:00Z</value>
	
	<answer for="time"			>ooo o</answer>
	
	<facets>
<!-- comparison relation is broken
		<combination mode="or">
			<facet answer=			".o. ." name="enumeration" value="09:00:00+01:00" />
			<facet answer=			"... o" name="enumeration" value="00:00:00-09:00" />
		</combination>
-->
			<facet answer=			"... ." name="enumeration" value="00:00:00Z" />
		
	</facets>
	
	<wrongs>
		<!-- truncated forms -->
		<value>1:00</value>
		<value>01:00</value>
		<value>1:00:00</value>
		
		<!-- out of range -->
		<value>-01:00:00</value>
		<value> 24:00:00</value>
		<value> 27:00:00</value>
		<value> 23:59:60</value>
		<value> 12:60:00</value>
	</wrongs>
</case>


<case name="test for gMonth">
	<!-- plain -->
	<value>--01--</value>
	<value>--02--</value>
	<value>--03--</value>
	<value>--10--</value>
	<value>--11--</value>
	<value>--12--</value>
	
	<!-- with time zone -->
	<value>--03---07:30</value>
	<value>--03--Z</value>
	<value>--03--+00:00</value>
	<value>--03--+03:00</value>
	
	<answer for="gMonth"		>oooooo oooo</answer>
	
	<facets><combination>
		<!-- min{In|Ex}clusive -->
<!-- order relation is broken
		remove \ when you use it.
		
		<choice>
			<facet answer=		"..oooo ...." name="minInclusive" value="-\-03-\-" />
			<facet answer=		"...ooo ...." name="minExclusive" value="-\-03-\-" />
			<facet answer=		"...ooo .ooo" name="minInclusive" value="-\-03-\-Z" />
			<facet answer=		"...ooo ...o" name="minExclusive" value="-\-03-\-Z" />
		</choice>
		<facet answer=			"...... .oo." name="enumeration" value="-\-03-\-Z" />
-->		
		<facet answer=			"...... ...." name="enumeration" value="--09--Z" />
	</combination></facets>
	
	<wrongs>
		<!-- out of range -->
		<value>--00--</value>
		<value>--1--</value>
		<value>--13--</value>
		<value>5</value>
		
		<!-- illegal time zone -->
		<value>--03-- Z</value>
		<value>--03--(GMT)</value>
		<value>--03--(+08:00)</value>
		<value>--03--+1:00</value>
		<value>--03--+15:00</value>
		<value>--03--+12</value>
		<value>--03--08:00</value>
		<value>--03---14:01</value>
		
	</wrongs>
</case>

<!--
	test for Name,NMTOKEN,NCName.
	Core engine of these types are tested as a part of Crimson,
	so test here is very brief
-->
<case name="test for Name,NCName,NMTOKEN">
	<value>___</value>
	<value>_:_</value>
	<value>125</value>
	
	<answer for="Name"			>oo.</answer>
	<answer for="NCName"		>o..</answer>
	<answer for="NMTOKEN"		>ooo</answer>

	<facets>
		<facet answer=			"ooo" name="pattern" value=".*" />
	</facets>
	
	<wrongs>
		<value></value>
	</wrongs>
</case>

<!-- sloppy test -->
<case name="test for hexBinary">
	<value></value>
	<value>1d2f35</value>
	<value>1234567890abcdefABCDEF   </value>
	
	<answer for="hexBinary"			>ooo</answer>

	<facets><combination>
		<facet answer=				".o." name="enumeration" value="1D2F35" />
		
		<choice>
			<facet answer=			".o." name="length" value="3" />
			<facet answer=			"..o" name="length" value="11" />
			<facet answer=			"oo." name="maxLength" value="10" />
		</choice>
	</combination></facets>
	
	<wrongs>
		<value>	12 34 </value>	<!-- inline space-->
		<value> x5 </value>		<!-- illegal characters -->
		<value> 124</value>		<!-- odd number of digits -->
	</wrongs>
</case>



<!-- sloppy test -->
<case name="test for base64">
	<value>ABCX</value>
	<value>DEFG52==</value>
	<value>HIJKL1x=</value>
	<value>AB))((==</value>	<!-- "))((" will be ignored -->
	<value>52==</value>
	
	<answer for="base64Binary"		>ooooo</answer>
	
	<facets><choice>
		<facet answer=			"o...." name="length" value="3" />
		<facet answer=			".o..." name="length" value="4" />
		<facet answer=			"...oo" name="length" value="1" />
	</choice></facets>
	
	<wrongs>
		<!-- wrongs paddings -->
		<value>=</value>
		<value>A</value>
		<value>5=</value>	
		<value>q==</value>	
		<value>n===</value>	
		<value>9x</value>
		<value>5f=</value>
		<value>tr===</value>
		<value>onp</value>
		<value>1qb==</value>
	</wrongs>
</case>

<case name="test for language">
	<value>en-us</value>
	<value>En-Us</value>
	<value>en-cockney</value>
	<value>jp-ja</value>
	
	<value>my-own-language</value>
	<value>     en-GB </value>
	<value>it-can-be-as-long-as-you-want</value>
	<value>fr</value>

	<answer for="language"	>oooo oooo</answer>

	<facets><combination>
		
		<choice>
			<!-- length test -->
			<facet answer=			"oo.o .o.." name="length" value="5" />
			<facet answer=			"..o. ...." name="length" value="10" />
			<!-- min/maxLength -->
			<combination>
				<choice>
					<facet answer=	"oooo ooo." name="minLength" value="4" />
					<facet answer=	"..o. o.o." name="minLength" value="6" />
				</choice>
				<choice>
					<facet answer=	"oooo .o.o" name="maxLength" value="10" />
					<facet answer=	"oooo oo.o" name="maxLength" value="15" />
					<facet answer=	"oooo oooo" name="maxLength" value="40" />
				</choice>
			</combination>
		</choice>
		
		<!-- enumeration -->
		<combination mode="or">
			<facet			answer=	"oo.. ...." name="enumeration" value="  EN-US &#xD; " />
			<facet			answer=	"...o ...." name="enumeration" value="jP-jA" />
			<facet			answer=	".... o..." name="enumeration" value="my-own-language" />
		</combination>
		
		<!-- pattern -->
		<combination mode="or">
			<facet			answer=	"o.o. .o.." name="pattern" value="en-.*" />	<!-- pattern is applied to lexical space, so case sensitive. -->
			<facet			answer=	"o.o. ooo." name="pattern" value=".*e.*" />
		</combination>
	</combination></facets>
		
	<wrongs>
		<value>space  -  within-lang</value>
		<value>morethan-eight-characters-token</value>
		<value>-mal-formed</value>
		<value>mal--formed</value>
		<value>number-is-NG-1</value>
		<value></value>
		<value>&#x1005;</value>	<!-- non-ascii -->
	</wrongs>
</case>

<case name="test for token">
	<value>&#x9;&#x9;</value>
	<value>&#xA;</value>
	<value>&#xD;</value>
	<value>&#xA;&#xD;</value>
	<value>oridinary string</value>
	<value>&#x1005;&#x1009;</value>	<!-- length 2 characters -->
	
	<value>  more   space  </value>
	<value>  	
		tab and   returns
		</value>
	
	<answer for="token"	>oooooo oo</answer>
	
	<facets><combination>
		
		<choice>
			<!-- length test -->
			<facet answer=			"oooo.. .." name="length" value="0" />
			<facet answer=			"...... o." name="length" value="10" />
			<facet answer=			"...... .o" name="length" value="15" />
			<!-- min/maxLength -->
			<combination>
				<choice>
					<facet answer=	"....oo oo" name="minLength" value="2" />
					<facet answer=	"....o. oo" name="minLength" value="5" />
				</choice>
				<choice>
					<facet answer=	"oooo.o .." name="maxLength" value="9" />
					<facet answer=	"oooo.o o." name="maxLength" value="10" />
					<facet answer=	"oooooo oo" name="maxLength" value="20" />
				</choice>
			</combination>
		</choice>
		
		<!-- enumeration -->
		<combination mode="or">
			<facet			answer=	"oooo.. .." name="enumeration" value=" " />
			<facet			answer=	"oooo.. .." name="enumeration" value="&#x9;" />
			<facet			answer=	"oooo.. .." name="enumeration" value="&#xD;&#xA;" />
			<facet			answer=	"...... o." name="enumeration" value="more space" />
		</combination>
		
		<!-- pattern -->
		<combination mode="or">
			<facet			answer=	"...... .." name="pattern" value="[\t\r\n]+" />	<!-- pattern must be checked after whitespace normalization -->
			<facet			answer=	"oooo.. .." name="pattern" value="" />
		</combination>
	</combination></facets>
	
	<wrongs />	<!-- nothing can be wrong as token -->
</case>




<case name="test for normalizedString">
	<value>&#x9;&#x9;</value>	<!-- two tabs -->
	<value>&#xA;</value>
	<value>&#xD;</value>
	<value>&#xA;&#xD;</value>
	<value>oridinary string</value>
	<value>&#x1005;&#x1009;</value>	<!-- length 2 characters -->
	
	<value>  more   space  </value>
	<value>  	
		tab and   returns
		</value>
	
	<answer for="normalizedString"	>oooooo oo</answer>
	
	<facets><combination>
		
		<choice>
			<!-- length test -->
			<facet answer=			".oo... .." name="length" value="1" />
			<facet answer=			"o..o.o .." name="length" value="2" />
			<!-- min/maxLength -->
			<combination>
				<choice>
					<facet answer=	"oooooo oo" name="minLength" value="0" />
					<facet answer=	"....o. oo" name="minLength" value="5" />
				</choice>
				<choice>
					<facet answer=	".oo... .." name="maxLength" value="1" />
					<facet answer=	"oooo.o .." name="maxLength" value="10" />
					<facet answer=	"oooooo oo" name="maxLength" value="99" />
				</choice>
			</combination>
		</choice>
		
		<!-- enumeration -->
		<combination mode="or">
			<facet			answer=	".oo... .." name="enumeration" value=" " />
			<facet			answer=	".oo... .." name="enumeration" value="&#x9;" />
			<facet			answer=	"o..o.. .." name="enumeration" value="&#xD;&#xA;" />
			<facet			answer=	"...... .." name="enumeration" value="more space" /> <!-- make sure that whitespace!=collapse -->
		</combination>
		
		<!-- pattern -->
		<combination mode="or">
			<facet			answer=	".oo... .." name="pattern" value=" " />	<!-- pattern must be checked after whitespace normalization -->
			<facet			answer=	"...... .." name="pattern" value="\r" />
			<facet			answer=	"oooo.. oo" name="pattern" value=" .*" />
		</combination>
	</combination></facets>
	
	<wrongs />	<!-- nothing can be wrong as normalizedString -->
</case>


<case name="test for string">
	<value></value>
	<value>x</value>
	<value>--</value>
	<value>&#x1005;&#x1009;</value>
	
	<value>$#"</value>
	<value>JPN</value>	<!-- "the Japanese" in kanji. length 3 -->
	<value>lame</value>
	<value>label</value>
	
	<value>length</value>
	<value> a b c </value>
	<value>quicker</value>
	<value>length 8</value>
	<value>GetItDone</value>
	<value>McDonald's</value>
	<value>drive safely</value>
	
	<!--   123456789-123456 -->
	<value>  more   space  </value>
	<value>  	
		tab and   returns
		</value>
	
	<answer for="string"			>oooo oooo ooooooo oo</answer>
	
	<facets><combination>
		
		<choice>
			<!-- length test -->
			<facet answer=			"o... .... ....... .." name="length" value="0" />
			<facet answer=			"..oo .... ....... .." name="length" value="2" />
			<facet answer=			".... oo.. ....... .." name="length" value="3" />
			<facet answer=			".... .... ....... o." name="length" value="16" />
			<facet answer=			".... .... ....... .o" name="length" value="26" />
			<!-- min/maxLength -->
			<combination>
				<choice>
					<facet answer=	"oooo oooo ooooooo oo" name="minLength" value="0" />
					<facet answer=	"..oo oooo ooooooo oo" name="minLength" value="2" />
					<facet answer=	".... .... ooooooo oo" name="minLength" value="6" />
				</choice>
				<choice>
					<facet answer=	"oooo oooo o...... .." name="maxLength" value="6" />
					<facet answer=	"oooo oooo ooooo.. .." name="maxLength" value="9" />
					<facet answer=	"oooo oooo ooooooo o." name="maxLength" value="20" />
					<facet answer=	"oooo oooo ooooooo oo" name="maxLength" value="999999999999999999999999999999999999999" />
				</choice>
			</combination>
		</choice>
		
		<!-- enumeration -->
		<combination mode="or">
			<facet			answer=	".... .... ....... .." name="enumeration" value="more  space" />
			<facet			answer=	".... .... ....... .." name="enumeration" value="more space" />	<!-- makes sure that whiteSpace=preserve -->
			<facet			answer=	"o... .... ....... .." name="enumeration" value="" />
			<facet			answer=	".... ...o ....... .." name="enumeration" value="label" />
		</combination>
		
		<!-- pattern -->
		<combination mode="or">
			<facet			answer=	".... ..oo o..o... .." name="pattern" value="l.*" />
			<facet			answer=	".... .... ...o... .." name="pattern" value=".*[0-9].*" />
			<facet			answer=	".ooo oooo o.o.oo. .." name="pattern" value="[^ ]+" />
		</combination>
	</combination></facets>
	
	<wrongs />	<!-- nothing can be wrong as string -->
</case>


<case name="test for year">
	<value>  -999999999999999999999999999999999999999999999999999999999999999999Z</value>
	<value  >-10000</value>
	<value > -0852+02:00</value>
	<value>  -0312</value>
	<value  >-0019Z</value>
	
	<value > -0002</value>
	<value > -0001-09:00</value>
	<value   >0001</value>
	<value>   0001Z</value>
	<value  > 0001-08:00</value>
	<value >  0001+08:00</value>
	<value  > 0053</value>
	<value >  0227</value>
	
	<value>   1255</value>
	<value   >2512Z</value>
	<value  > 7522</value>
	<value >  9999</value>
	<value>   12555+09:00</value>
	
	<value   >99999999999999999999+05:00</value>
	<value  > 999999999999999999999999999999999999999999999999999999999999999999</value>
	
	<answer for="gYear"		>ooooo oooooooo ooooo oo</answer>

	<facets><combination>
		<combination mode="or">
			<facet answer=	"..... ..o..... ..... .." name="enumeration" value="0001" />
			<facet answer=	"..... ........ ..... .o" name="enumeration" value="999999999999999999999999999999999999999999999999999999999999999999" />
		</combination>
		<combination mode="or">
			<facet answer=	"..... ..o...oo o.oo. .." name="pattern" value="...." />
			<facet answer=	".o.o. o.o...oo o.oo. .o" name="pattern" value="-?[0-9]+" />
		</combination>
	</combination></facets>

	<wrongs>
		<!-- no year 0 -->
		<value> 0000</value>
		<value> 0000Z</value>
		<value> 0000+08:00</value>
		<value>-0000</value>
		<value> 00000000</value>
		<value>-000000</value>

		<!-- no trancated form -->
		<value >99</value>
		<value> 199</value>
		<value>-115</value>

		<!-- wrong time zone -->
		<value>2000ZZ</value>
		<value>2000+14:01</value>
		<value>2000-14:01</value>
		<value>2000-8:00</value>
		<value>2000+000</value>
		<value>2000-00:000</value>
		<value>2000-0:0</value>
		<value>2000 GMT</value>
		<value>2000z</value>

		<!-- with month/day -->
		<value>2000-01-01</value>
<!--	<value>2000-01</value>		No. this is a valid year. year 2000 with time zone GMT-01:00 -->

		<!-- format related problem -->
		<value> 1 9 9 9 </value>		<!-- illegal whitespace -->
		<value>(1999)</value>
		<value>1999:</value>
		<value>1999-</value>
		<value>01999</value>
	</wrongs>
</case>

<case name="test for date">
	<value>-0013-08-31</value>
	<value>-0001-12-31 </value>
	<value> 0001-01-01</value>
	<value> 1996-02-29  </value>
	
	<value> 2001-01-01 </value>
	<value> 2001-01-01-14:00 </value>
	<value >2001-01-01-08:00     </value>
	<value> 2001-01-01Z </value>
	<value> 2001-01-01+05:00 </value>
	<value> 2001-01-01+14:00</value>
	<value> 2001-01-02 </value>

	<value> 9999999999999999999999999999999999999999999999999999999999999999999-01-01 </value>
	<value> 9999999999999999999999999999999999999999999999999999999999999999999-01-01Z </value>
	<value> 9999999999999999999999999999999999999999999999999999999999999999999-01-01+05:00 </value>

	<value> 1512-01-04-12:00 </value>
	<value> 1512-01-05+12:00 </value>
	<value>2000-02-29Z</value>

	<answer for="date"		>oooo ooooooo ooo ooo</answer>

	<facets><combination>
		<combination mode="or">
			<facet answer=	".... ....... ... oo." name="enumeration" value="1512-01-05+12:00" />
			<facet answer=	".... o...... ... ..." name="enumeration" value="2001-01-01" />
		</combination>
		<combination mode="or">
			<facet answer=	"o..o ....... ooo oo." name="pattern" value="-?..[13579].*" />
			<facet answer=  "oooo o..o... oo. ..o" name="pattern" value=".*[^24680]" />
		</combination>
	</combination></facets>
	
	<wrongs>
		<!-- no year 0 -->
		<value> 0000-01-01</value>
		<value>-0000-05-03</value>
		<value> 00000000-11-04</value>
		<value>-00000000-07-09</value>

		<!-- no trancated form -->
		<value> 99-05-05 </value>
		<value>  952-03-05</value>
		<value> -952-02-09</value>
		<value> 1253-1-03</value>
		<value> 1245-09-7</value>
		<value> 1877- 1- 1</value>
		
		<!-- impossible day of month -->
		<value>1932-01-32</value>
		<value>1159-02-29</value>
		<value>1900-02-29Z</value>
		<value>1168-03-32</value>
		<value>1654-04-31-05:00</value>
		<value>1705-05-32</value>
		<value>1812-06-31+08:00</value>
		<value>0432-07-32</value>
		<value>0779-08-32Z</value>
		<value>1425-09-31</value>
		<value>1227-10-32-01:00</value>
		<value>1621-11-31</value>
		<value>0015-12-32Z+09:0</value>

		<!-- wrong time zone -->
		<value>2000-01-01ZZ</value>
		<value>2000-01-01+14:01</value>
		<value>2000-01-01-14:01</value>
		<value>2000-01-01-8:00</value>
		<value>2000-01-01+000</value>
		<value>2000-01-01-00:000</value>
		<value>2000-01-01-0:0</value>
		<value>2000-01-01 GMT</value>
		<value>2000-01-01z</value>

		<!-- format related problem -->
		<value> 1956 - 05 - 32 </value>		<!-- illegal whitespace -->
		<value> 2000/05/05 </value>			<!-- illegal separator -->
		<value>2000-01-01 Z +05:00</value>
	</wrongs>
</case>

<case name="test for boolean">
	<value>true</value>
	<value>false</value>
	<value>0</value>
	<value>1</value>
	
	<answer for="boolean">oooo</answer>

	<facets>
		<!-- pattern is the only applicable facet -->
		<combination mode="or">
			<facet answer="o..." name="pattern" value="tr.*" />
			<facet answer=".o.." name="pattern" value="f.*" />
			<facet answer="...." name="pattern" value="f..." />
		</combination>

	</facets>
	
	<wrongs>
		<value>True</value>
		<value>FALSE</value>
	</wrongs>
</case>

<case name="test for integer and its derived types">
	<value>-9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999</value>
	<value>-123104809034590906573845</value>
	<value>-9223372036854775809</value><!--  MIN_LONG -1 -->
	<value>-9223372036854775808</value><!--minimum possible value for long-->
	<value>-324021378997</value>

	<value>-2147483649</value><!-- MIN_INT -1 -->
	<value>-2147483648</value><!-- minimum possible value for int -->
	<value>-32769</value><!-- MIN_SHORT -1 -->
	<value>-32768</value><!-- MIN_SHORT -->
	<value>-11100</value><!-- totalDigits=3, not 5 -->
	
	<value>-129</value><!-- MIN_BYTE -1 -->
	<value>-128</value><!-- MIN_BYTE -->
	<value>-2</value>
	<value>-1</value>
	<value>-0</value>
	
	<value>0</value>
	<value>000000000000000000000000000000000000000000000000000000000000</value><!-- valid representation of 0 -->
	<value>+0</value>
	<value> 1</value>
	<value>+2</value>
	

	<value>127</value><!-- MAX_BYTE -->
	<value>128</value><!-- MAX_BYTE +1 -->
	<value>255</value><!-- MAX_UBYTE -->
	<value>256</value><!-- MAX_UBYTE+1 -->
	<value>1111</value>

	<value>32767</value><!-- MAX_SHORT -->
	<value>32768</value><!-- MAX_SHORT+1 -->
	<value>65535</value><!-- MAX_USHORT -->
	<value>65536</value><!-- MAX_USHORT+1 -->
	<value>90893012</value>

	<value>2147483647</value><!-- MAX_INT -->
	<value>2147483648</value><!-- MAX_INT+1 -->
	<value>4294967294</value>
	<value>4294967295</value><!-- MAX_UINT -->
	<value>4294967296</value><!-- MAX_UINT+1 -->

	<value>9223372036854775807</value><!-- MAX_LONG -->
	<value>9223372036854775808</value><!-- MAX_LONG+1 -->
	<value>18446744073709551615</value><!-- MAX_ULONG -->
	<value>18446744073709551616</value><!-- MAX_ULONG+1 -->
	<!-- very long but valid integer -->
	<value>99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999</value>
	
	<!-- decimal values are not valid -->
	<value>0.0</value>
	<value>0.</value>
	<value>.0</value>
	
	<answer for="integer"				>ooooo ooooo ooooo ooooo  ooooo ooooo ooooo ooooo ...</answer>
	<answer for="negativeInteger"		>ooooo ooooo oooo. .....  ..... ..... ..... ..... ...</answer>
	<answer for="nonPositiveInteger"	>ooooo ooooo ooooo ooo..  ..... ..... ..... ..... ...</answer>
	<answer for="nonNegativeInteger"	>..... ..... ....o ooooo  ooooo ooooo ooooo ooooo ...</answer>
	<answer for="positiveInteger"		>..... ..... ..... ...oo  ooooo ooooo ooooo ooooo ...</answer>
	<answer for="long"					>...oo ooooo ooooo ooooo  ooooo ooooo ooooo o.... ...</answer>
	<answer for="int"					>..... .oooo ooooo ooooo  ooooo ooooo o.... ..... ...</answer>
	<answer for="short"					>..... ...oo ooooo ooooo  ooooo o.... ..... ..... ...</answer>
	<answer for="byte"					>..... ..... .oooo ooooo  o.... ..... ..... ..... ...</answer>
	<answer for="unsignedLong"			>..... ..... ....o ooooo  ooooo ooooo ooooo ooo.. ...</answer>
	<answer for="unsignedInt"			>..... ..... ....o ooooo  ooooo ooooo oooo. ..... ...</answer>
	<answer for="unsignedShort"			>..... ..... ....o ooooo  ooooo ooo.. ..... ..... ...</answer>
	<answer for="unsignedByte"			>..... ..... ....o ooooo  ooo.. ..... ..... ..... ...</answer>
	<answer for="decimal"				>ooooo ooooo ooooo ooooo  ooooo ooooo ooooo ooooo ooo</answer>
	
	<facets><combination>
		<choice>
			<facet answer=				"..... ....o ooooo ooooo  oooo. ..... ..... ..... ooo" name="totalDigits" value="3" />
			<facet answer=				"..... ....o ooooo ooooo  ooooo ..... ..... ..... ooo" name="totalDigits" value="4" />
			<facet answer=				"..... ..ooo ooooo ooooo  ooooo oooo. ..... ..... ooo" name="totalDigits" value="5" />
			<facet answer=				"ooooo ooooo ooooo ooooo  ooooo ooooo ooooo oooo. ooo" name="totalDigits" value="400" />
<!-- precision can be any positiveInteger, but no way to support this in Java -->
			<facet answer=				"ooooo ooooo ooooo ooooo  ooooo ooooo ooooo ooooo ooo" name="totalDigits" value="99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999" />
		</choice>
		<combination mode="or">
			<facet answer=				"..... ..... ..... ...o.  ....o ..... ..... ..... ..." name="pattern" value="1*" />
			<facet answer=				"..... ..... oo... .....  ....o ..... ..... ..... ..." name="pattern" value="...." />
		</combination>
		<combination mode="or">
			<facet answer=				"..... ..... ....o ooo..  ..... ..... ..... ..... ooo" name="enumeration" value="0" />
			<facet answer=				"..... ..... ..... ....o  ..... ..... ..... ..... ..." name="enumeration" value="2" />
		</combination>
		<choice>
			<combination><!-- min-max pair part.1 -->
				<choice>
					<facet answer=		".oooo ooooo ooooo ooooo  ooooo ooooo ooooo ooooo ooo" name="minExclusive" value="-9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999" />
					<facet answer=		"..ooo ooooo ooooo ooooo  ooooo ooooo ooooo ooooo ooo" name="minInclusive" value="-9223372036854775809" />
					<facet answer=		"...oo ooooo ooooo ooooo  ooooo ooooo ooooo ooooo ooo" name="minExclusive" value="-9223372036854775809" />
				</choice>
				<choice>
					<facet answer=		"ooo.. ..... ..... .....  ..... ..... ..... ..... ..." name="maxInclusive" value="-9223372036854775809" />
					<facet answer=		"ooooo ..... ..... .....  ..... ..... ..... ..... ..." name="maxExclusive" value="-2147483649" />
					<facet answer=		"ooooo o.... ..... .....  ..... ..... ..... ..... ..." name="maxInclusive" value="-2147483649" />
					<facet answer=		"ooooo ooooo oooo. .....  ..... ..... ..... ..... ..." name="maxExclusive" value="+00000000000000000000000000000000000000000000" />
					<facet answer=		"ooooo ooooo ooooo ooo..  ..... ..... ..... ..... ooo" name="maxInclusive" value="0" />
					<facet answer=		"ooooo ooooo ooooo ooooo  ooooo ooooo ooooo oooo. ooo" name="maxExclusive" value="99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999" />
					<facet answer=		"ooooo ooooo ooooo ooooo  ooooo ooooo ooooo ooooo ooo" name="maxInclusive" value="99999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999" />
				</choice>
			</combination>
			<combination><!-- min-max pair part.2 -->
				<choice>
					<facet answer=		"..... ..... ....o ooooo  ooooo ooooo ooooo ooooo ooo" name="minInclusive" value="0" />
					<facet answer=		"..... ..... ..... ...oo  ooooo ooooo ooooo ooooo ..." name="minExclusive" value="000000000000000000000000000000000000" />
					<facet answer=		"..... ..... ..... .....  ...oo ooooo ooooo ooooo ..." name="minInclusive" value="256" />
					<facet answer=		"..... ..... ..... .....  ....o ooooo ooooo ooooo ..." name="minExclusive" value="256" />
					<facet answer=		"..... ..... ..... .....  ..... ..... ooooo ooooo ..." name="minInclusive" value="214748364" />
					<facet answer=		"..... ..... ..... .....  ..... ..... ...oo ooooo ..." name="minInclusive" value="4294967295" />
					<facet answer=		"..... ..... ..... .....  ..... ..... ....o ooooo ..." name="minExclusive" value="4294967295" />
				</choice>
				<choice>
					<facet answer=		"ooooo ooooo ooooo ooooo  ooooo ooooo ooooo ..... ooo" name="maxExclusive" value="9223372036854775807" />
					<facet answer=		"ooooo ooooo ooooo ooooo  ooooo ooooo ooooo o.... ooo" name="maxInclusive" value="9223372036854775807" />
					<facet answer=		"ooooo ooooo ooooo ooooo  ooooo ooooo ooooo oooo. ooo" name="maxInclusive" value="1844674407370955161618446744073709551616" />
				</choice>
			</combination>
		</choice>
	</combination></facets>
	
	<wrongs>
		<value>+</value>
		<value>-</value>
		<value></value>
		<value>++5</value>
		<value>+-0</value>
		<value>0x50</value>
		<value>&amp;h20</value>
		<value>#x11</value>
		<value>-1E4</value>
	</wrongs>
</case>

<case name="test of float/double (incomplete)">
	<value>-INF</value>
	<value>-999999999999999999999999999999999999999999999999999999999999999e99999999999999999999999999999999</value> <!-- way beyond the possible range of double, but valid -->
	<value>-1.79769313486231570999999999999999999999999999e+308</value> <!-- MAX_DOUBLE + additional digits that will be rounded to MAX_DOUBLE -->
	<value>-1.79769313486231570e+308</value> <!-- MAX_DOUBLE -->
	<value>-3.4028234799999999999999E+38f</value>	<!-- MAX_FLOAT + additional digits -->
	<value>-3.40282347e+38f</value>	<!-- MAX_FLOAT -->

	<value>-.0</value>
	<value>0.0</value>
	<value>00000000000.00000000000e00000000000000000000000000000000</value>
	<value>0.</value>
	<value>+0</value>

	<value>4.94065645841246544E-326</value>	<!-- should be rounded to -0 -->
	<value>4.94065645841246544E-324</value>	<!-- MIN_DOUBLE -->
	<value>0.70119923e-45f</value>	<!-- for float, should be rounded to -0 -->
	<value>0.70119923000000000000000000001e-45f</value>	<!-- for float, should be rounded to MIN_FLOAT -->
	<value>1.40239846e-45f</value>	<!-- MIN_FLOAT -->

	<value>INF</value>
	<value>NaN</value>

	<answer for="float" 		>oooooo ooooo ooooo oo </answer>
	<answer for="double"		>oooooo ooooo ooooo oo </answer>

	<facets><combination>
		<combination mode="or">
			<facet answer=		"...... .ooo. ..... .." name="pattern" value="(0|\.|e)+" />
			<facet answer=		"o..... ..... ..... oo" name="pattern" value="[^0-9]+" />
		</combination>
		<combination mode="or">
			<facet answer=		"...... .oooo ..... .." name="enumeration" value="+0" />
			<facet answer=		"...... o.... ..... .." name="enumeration" value="-0" />
			<facet answer=		"...... ..... ..... o." name="enumeration" value="INF" />
			<facet answer=		"...... ..... ..... .o" name="enumeration" value="NaN" />
		</combination>
	</combination></facets>
	
	<wrongs>
		<value>+INF</value>
		<value>inf</value>
		<value>Inf</value>
		<value>nan</value>
		<value>-NaN</value>
		<value>1e2f</value>
		<value>0.005d</value>
		<value>-0.0f</value>
		<value>E-2</value>
		<value>1e2.5</value>
		<value>0x123</value>
	</wrongs>
</case>
</suite>