
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
<html xml:lang="en" lang="en">
	<head>
		<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
		<title>OpenCMIS Full Integration Tests 1.0.0 Reference Package org.apache.chemistry.opencmis.fit.tck</title>
		<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="style" />
	</head>
	<body>
		      	<div class="overview">
        	<ul>
          		<li>
            		<a href="../../../../../../overview-summary.html">Overview</a>
          		</li>
          		<li class="selected">Package</li>
        	</ul>
      	</div>
      	<div class="framenoframe">
        	<ul>
          		<li>
            		<a href="../../../../../../index.html" target="_top">FRAMES</a>
          		</li>
          		<li>
            		<a href="package-summary.html" target="_top">NO FRAMES</a>
          		</li>
        	</ul>
      	</div>
		
		      	<h2>Package org.apache.chemistry.opencmis.fit.tck</h2>

		<table class="summary">
        	<thead>
          		<tr>
            		<th>Class Summary</th>
          		</tr>
        	</thead>
        	<tbody>
        		            	<tr>
              		<td>
                		<a href="AbstractAtomPubTckIT.html" target="classFrame">AbstractAtomPubTckIT</a>
              		</td>
            	</tr>
				            	<tr>
              		<td>
                		<a href="AbstractBrowserTckIT.html" target="classFrame">AbstractBrowserTckIT</a>
              		</td>
            	</tr>
				            	<tr>
              		<td>
                		<a href="AbstractTckIT.html" target="classFrame">AbstractTckIT</a>
              		</td>
            	</tr>
				            	<tr>
              		<td>
                		<a href="AbstractWebServicesTckIT.html" target="classFrame">AbstractWebServicesTckIT</a>
              		</td>
            	</tr>
				            	<tr>
              		<td>
                		<a href="AtomPub10NonVersTckIT.html" target="classFrame">AtomPub10NonVersTckIT</a>
              		</td>
            	</tr>
				            	<tr>
              		<td>
                		<a href="AtomPub10VersTckIT.html" target="classFrame">AtomPub10VersTckIT</a>
              		</td>
            	</tr>
				            	<tr>
              		<td>
                		<a href="AtomPub11NonVersTckIT.html" target="classFrame">AtomPub11NonVersTckIT</a>
              		</td>
            	</tr>
				            	<tr>
              		<td>
                		<a href="AtomPub11VersTckIT.html" target="classFrame">AtomPub11VersTckIT</a>
              		</td>
            	</tr>
				            	<tr>
              		<td>
                		<a href="Browser11NonVersTckIT.html" target="classFrame">Browser11NonVersTckIT</a>
              		</td>
            	</tr>
				            	<tr>
              		<td>
                		<a href="Browser11VersTckIT.html" target="classFrame">Browser11VersTckIT</a>
              		</td>
            	</tr>
				            	<tr>
              		<td>
                		<a href="AbstractTckIT.html" target="classFrame">TestProgressMonitor</a>
              		</td>
            	</tr>
				            	<tr>
              		<td>
                		<a href="WebServices10NonVersTckIT.html" target="classFrame">WebServices10NonVersTckIT</a>
              		</td>
            	</tr>
				            	<tr>
              		<td>
                		<a href="WebServices10VersTckIT.html" target="classFrame">WebServices10VersTckIT</a>
              		</td>
            	</tr>
				            	<tr>
              		<td>
                		<a href="WebServices11NonVersTckIT.html" target="classFrame">WebServices11NonVersTckIT</a>
              		</td>
            	</tr>
				            	<tr>
              		<td>
                		<a href="WebServices11VersTckIT.html" target="classFrame">WebServices11VersTckIT</a>
              		</td>
            	</tr>
				        	</tbody>
      	</table>
		
		      	<div class="overview">
        	<ul>
          		<li>
            		<a href="../../../../../../overview-summary.html">Overview</a>
          		</li>
          		<li class="selected">Package</li>
        	</ul>
      	</div>
      	<div class="framenoframe">
        	<ul>
          		<li>
            		<a href="../../../../../../index.html" target="_top">FRAMES</a>
          		</li>
          		<li>
            		<a href="package-summary.html" target="_top">NO FRAMES</a>
          		</li>
        	</ul>
      	</div>
				<hr />
		Copyright &#169; 2009-2016 The Apache Software Foundation. All Rights Reserved.
	</body>
</html>