<?xml version="1.0" encoding="UTF-8"?>
<testcases version="1.0" tds_version="1.3" timestamp="08-15-2005">
	<!-- Test Header/Scheme Type -->
	<testcase type="GRAI-170" name="ValidSchemeType" desc="Validate if the header corresponds to a defined coding scheme">
		<input value="00110111000101000000010010000001000100000000000000100101100110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 
		filter="" outputlevel="LEGACY"/>
		<output value="grai=000737960015061"/>
		<test-parameter name="schemeType" status="PASSED" errorMsg=""/>
	</testcase>
	
	<!-- Test Output Levels -->
	<testcase type="GRAI-170" name="ValidBinaryOutput" desc="Validate binary output format">
		<input value="000737960015061" 
		filter="0"  companyprefixlength="7" outputlevel="BINARY"/>
		<output value="00110111000101000000010010000001000100000000000000100101100110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="binary_encoding" status="PASSED" errorMsg=""/>
	</testcase>
	<testcase type="GRAI-170" name="ValidTagURIOutput" desc="Validate tag URI output format">
		<input value="000737960015061" 
		filter="0" companyprefixlength="7" outputlevel="TAG_ENCODING"/>
		<output value="urn:epc:tag:grai-170:0.0073796.00150.1"/>
		<test-parameter name="taguri_encoding" status="PASSED" errorMsg=""/>
	</testcase>
	<testcase type="GRAI-170" name="ValidPureIdentityOutput" desc="Validate pure identity output format">
		<input value="000737960015061" 
		filter="0"  companyprefixlength="7" outputlevel="PURE_IDENTITY"/>
		<output value="urn:epc:id:grai:0073796.00150.1"/>
		<test-parameter name="pureidentity_encoding" status="PASSED" errorMsg=""/>
	</testcase>
	<testcase type="GRAI-170" name="ValidLength" desc="Validate if the length is valid">
		<input value="00110111000101000000010010000001000100000000000000100101100110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 
		filter="0"  companyprefixlength="7" outputlevel="LEGACY"/>
		<output value="grai=000737960015061"/>
		<test-parameter name="length" status="PASSED" errorMsg=""/>
	</testcase>

	<!-- Test Filter Values -->
	<testcase type="GRAI-170" name="ValidFilter-1" desc="Validate Filter Value">
		<input value="000737960015061" 
		filter="1"  companyprefixlength="7" outputlevel="BINARY"/>
		<output value="00110111001101000000010010000001000100000000000000100101100110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="filter" status="PASSED" errorMsg=""/>
	</testcase>
	<testcase type="GRAI-170" name="ValidFilter-2" desc="Validate Filter Value">
		<input value="000737960015061" 
		filter="2"  companyprefixlength="7" outputlevel="BINARY"/>
		<output value="00110111010101000000010010000001000100000000000000100101100110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="filter" status="PASSED" errorMsg=""/>
	</testcase>
	<testcase type="GRAI-170" name="ValidFilter-3" desc="Validate Filter Value">
		<input value="000737960015061" 
		filter="3"  companyprefixlength="7" outputlevel="BINARY"/>
		<output value="00110111011101000000010010000001000100000000000000100101100110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="filter" status="PASSED" errorMsg=""/>
	</testcase>
	<testcase type="GRAI-170" name="ValidFilter-4" desc="Validate Filter Value">
		<input value="000737960015061" 
		filter="4"  companyprefixlength="7" outputlevel="BINARY"/>
		<output value="00110111100101000000010010000001000100000000000000100101100110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="filter" status="PASSED" errorMsg=""/>
	</testcase>
	<testcase type="GRAI-170" name="ValidFilter-5" desc="Validate Filter Value">
		<input value="000737960015061" 
		filter="5"  companyprefixlength="7" outputlevel="BINARY"/>
		<output value="00110111101101000000010010000001000100000000000000100101100110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="filter" status="PASSED" errorMsg=""/>
	</testcase>
	<testcase type="GRAI-170" name="ValidFilter-6" desc="Validate Filter Value">
		<input value="000737960015061" 
		filter="6"  companyprefixlength="7" outputlevel="BINARY"/>
		<output value="00110111110101000000010010000001000100000000000000100101100110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="filter" status="PASSED" errorMsg=""/>
	</testcase>
	<testcase type="GRAI-170" name="ValidFilter-7" desc="Validate Filter Value">
		<input value="000737960015061" 
		filter="7"  companyprefixlength="7" outputlevel="BINARY"/>
		<output value="00110111111101000000010010000001000100000000000000100101100110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="filter" status="PASSED" errorMsg=""/>
	</testcase>

	<!-- Test CompanyPrefix Length -->
	<testcase type="GRAI-170" name="ValidCompanyPrefix-6" desc="Validate CompanyPrefix">
		<input value="003800400150611" 
		filter="0"  companyprefixlength="6" outputlevel="BINARY"/>
		<output value="00110111000110000010010100011101000000000000000101111000100110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="companyprefix" status="PASSED" errorMsg=""/>
	</testcase>
	<testcase type="GRAI-170" name="ValidCompanyPrefix-8" desc="Validate CompanyPrefix length">
		<input value="008410580000001" 
		filter="0" serial="1" companyprefixlength="8" outputlevel="BINARY"/>
		<output value="00110111000100000100000000101010111010100000000000000000000110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="companyprefix" status="PASSED" errorMsg=""/>
	</testcase>
	<testcase type="GRAI-170" name="ValidCompanyPrefix-9" desc="Validate CompanyPrefix length">
		<input value="008359240000071" 
		filter="0" serial="1" companyprefixlength="9" outputlevel="BINARY"/>
		<output value="00110111000011000100111110111000010011010000000000000000000110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="companyprefix" status="PASSED" errorMsg=""/>
	</testcase>
	<testcase type="GRAI-170" name="ValidCompanyPrefix-10" desc="Validate CompanyPrefix length">
		<input value="008505830010041" 
		filter="0" serial="1" companyprefixlength="10" outputlevel="BINARY"/>
		<output value="00110111000010000011001010110010110111011101100100000000000110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="companyprefix" status="PASSED" errorMsg=""/>
	</testcase>
	<testcase type="GRAI-170" name="ValidCompanyPrefix-12" desc="Validate CompanyPrefix length">
		<input value="057900012653311" 
		filter="0" serial="1" companyprefixlength="10" outputlevel="BINARY"/>
		<output value="00110111000010000011001010110010110111011101100100000000000110001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="companyprefix" status="PASSED" errorMsg=""/>
	</testcase>

	<!-- Test Serial Number -->
	<testcase type="GRAI-170" name="ValidSerial" desc="Validate serial number value allowed">
		<input value="003800400000090A!0=?&)*+-/:;9" 
		filter="0" companyprefixlength="6" outputlevel="BINARY"/>
		<output value="00110111000110000010010100011101000000000000000000000000000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="serial" status="PASSED" errorMsg=""/>
	</testcase>
	
	<!-- Test Asset Type -->
	<testcase type="GRAI-170" name="ValidMinAssetType-6" desc="Validate minimum asset type value allowed">
		<input value="003800400000090" 
		filter="0" companyprefixlength="6" outputlevel="BINARY"/>
		<output value="00110111000110000010010100011101000000000000000000000000000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="assettype" status="PASSED" errorMsg=""/>
	</testcase>
	<testcase type="GRAI-170" name="ValidMaxAssetType-6" desc="Validate maximum asset type value allowed">
		<input value="003800499999910" 
		filter="0" serial="0" companyprefixlength="6" outputlevel="BINARY"/>
		<output value="00110111000110000010010100011101000000111101000010001111110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="assettype" status="PASSED" errorMsg=""/>
	</testcase>
	<testcase type="GRAI-170" name="ValidMinAssetType-7" desc="Validate minimum asset type value allowed">
		<input value="000737960000000000" 
		filter="0" serial="0" companyprefixlength="7" outputlevel="BINARY"/>
		<output value="00110111000101000000010010000001000100000000000000000000000110000011000001100000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="assettype" status="PASSED" errorMsg=""/>
	</testcase>
	<testcase type="GRAI-170" name="ValidMaxAssetType-7" desc="Validate maximum asset type value allowed">
		<input value="000737969999999990" 
		filter="0" serial="0" companyprefixlength="7" outputlevel="BINARY"/>
		<output value="00110111000101000000010010000001000100000110000110100111110111001011100101110010110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="assettype" status="PASSED" errorMsg=""/>
	</testcase>
	<testcase type="GRAI-170" name="ValidMinAssetType-8" desc="Validate minimum asset type value allowed">
		<input value="008410580000000" 
		filter="0" serial="0" companyprefixlength="8" outputlevel="BINARY"/>
		<output value="00110111000100000100000000101010111010100000000000000000000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="assettype" status="PASSED" errorMsg=""/>
	</testcase>
	<testcase type="GRAI-170" name="ValidMaxAssetType-8" desc="Validate maximum asset type value allowed">
		<input value="008410580999980" 
		filter="0" serial="0" companyprefixlength="8" outputlevel="BINARY"/>
		<output value="00110111000100000100000000101010111010100000100111000011110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="assettype" status="PASSED" errorMsg=""/>
	</testcase>
	<testcase type="GRAI-170" name="ValidMinAssetType-9" desc="Validate minimum asset type value allowed">
		<input value="008359240000070" 
		filter="0" serial="0" companyprefixlength="9" outputlevel="BINARY"/>
		<output value="00110111000011000100111110111000010011010000000000000000000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="assettype" status="PASSED" errorMsg=""/>
	</testcase>
	<testcase type="GRAI-170" name="ValidMaxAssetType-9" desc="Validate maximum asset type value allowed">
		<input value="008359240099920" 
		filter="0" serial="0" companyprefixlength="9" outputlevel="BINARY"/>
		<output value="00110111000011000100111110111000010011010000000011111001110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="assettype" status="PASSED" errorMsg=""/>
	</testcase>
	<testcase type="GRAI-170" name="ValidMinAssetType-10" desc="Validate minimum asset type value allowed">
		<input value="008505830010040" 
		filter="0" serial="0" companyprefixlength="10" outputlevel="BINARY"/>
		<output value="00110111000010000011001010110010110111011101100100000000000110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="assettype" status="PASSED" errorMsg=""/>
	</testcase>
	<testcase type="GRAI-170" name="ValidMaxAssetType-10" desc="Validate maximum asset type value allowed">
		<input value="008505830019980" 
		filter="0" serial="0" companyprefixlength="10" outputlevel="BINARY"/>
		<output value="00110111000010000011001010110010110111011101100100011000110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="assettype" status="PASSED" errorMsg=""/>
	</testcase>
	<testcase type="GRAI-170" name="ValidAssetType-12" desc="Validate asset type value allowed">
		<input value="057900012653310" 
		filter="0" serial="0" companyprefixlength="12" outputlevel="BINARY"/>
		<output value="00110111000010000011001010110010110111011101100100011000110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000"/>
		<test-parameter name="assettype" status="PASSED" errorMsg=""/>
	</testcase>
		
	<!-- Invalid Test Scenarios -->
	<testcase type="GRAI-170" name="InvalidSchemeType" desc="Validate if the header corresponds to a defined coding scheme"">
		<input value="11111111000010000011001010110010110111011101100100011000110110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" 
		filter="" outputlevel="LEGACY"/>
		<output value="" />
		<test-parameter name="schemeType" status="FAILED" errorMsg="Header value 11111111 is not currently defined in EPC Tag Data Standards"/>
	</testcase>
	<testcase type="GRAI-170" name="InvalidMinCompanyPrefixLength" desc="Validate min. company prefix length">
		<input value="000737960015061" 
		filter="0"  companyprefixlength="5" outputlevel="BINARY"/>
		<output value=""/>
		<test-parameter name="mincompanyprefixlength" status="FAILED" errorMsg="Company Prefix length cannot be less than 6 digits"/>
	</testcase>
	<testcase type="GRAI-170" name="InvalidMaxCompanyPrefixLength" desc="Validate max. company prefix length">
		<input value="000737960015061" 
		filter="0"  companyprefixlength="13" outputlevel="BINARY"/>
		<output value=""/>
		<test-parameter name="maxcompanyprefixlength" status="FAILED" errorMsg="Company Prefix length cannot be greater than 12 digits"/>
	</testcase>
	<testcase type="GRAI-170" name="InvalidSerial" desc="Validate serial number value allowed">
		<input value="000737960015061#$" 
		filter="0" companyprefixlength="7" outputlevel="BINARY"/>
		<output value=""/>
		<test-parameter name="serial" status="FAILED" errorMsg="Invalid character in serial number"/>
	</testcase>
	<testcase type="GRAI-170" name="InvalidFilter" desc="Validate filter value">
		<input value="000737960015061" 
		filter="8"  companyprefixlength="7" outputlevel="BINARY"/>
		<output value=""/>
		<test-parameter name="filter" status="FAILED" errorMsg="Filter value cannot be greater than 7"/>
	</testcase>
</testcases>