@Test
public void testReadNextAttributeProvider() throws Exception {

	try {
		this.reader.readNextAttributeProvider();
		fail("MustCallReadHeaderFunctionException is expected"); //$NON-NLS-1$
	}
	catch(MustCallReadHeaderFunctionException exception) {
		// Expected exception
	}
	
	this.reader.readDBFHeader();
	this.reader.readDBFFields();
	
	AttributeProvider attrs;
	
	attrs= this.reader.readNextAttributeProvider();
	assertNotNull(attrs);
	assertEquals(BDTOPO_VALUE, attrs.getAttribute("SOURCE").getValue()); //$NON-NLS-1$
	assertEquals("Religieux", attrs.getAttributeObject("CATEGORIE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals(BATIMENT_RELIGIEUX_VALUE, attrs.getAttributeObject("NATURE").getValue()); //$NON-NLS-1$
	assertEquals(15., attrs.getAttributeObject("HAUTEUR").getValue()); //$NON-NLS-1$
	attrs = this.reader.readNextAttributeProvider();
	assertNotNull(attrs);
	assertEquals(BDTOPO_VALUE, attrs.getAttribute("SOURCE").getValue()); //$NON-NLS-1$
	assertEquals("Religieux", attrs.getAttribute("CATEGORIE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals(BATIMENT_RELIGIEUX_VALUE, attrs.getAttribute("NATURE").getValue()); //$NON-NLS-1$
	assertEquals(7., attrs.getAttribute("HAUTEUR").getValue()); //$NON-NLS-1$
	attrs = this.reader.readNextAttributeProvider();
	assertNotNull(attrs);
	assertEquals(BDTOPO_VALUE, attrs.getAttribute("SOURCE").getValue()); //$NON-NLS-1$
	assertEquals("Religieux", attrs.getAttribute("CATEGORIE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals(BATIMENT_RELIGIEUX_VALUE, attrs.getAttribute("NATURE").getValue()); //$NON-NLS-1$
	assertEquals(11., attrs.getAttribute("HAUTEUR").getValue()); //$NON-NLS-1$
	attrs = this.reader.readNextAttributeProvider();
	assertNotNull(attrs);
	assertEquals(BDTOPO_VALUE, attrs.getAttribute("SOURCE").getValue()); //$NON-NLS-1$
	assertEquals("Religieux", attrs.getAttribute("CATEGORIE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals("Eglise", attrs.getAttribute("NATURE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals(5., attrs.getAttribute("HAUTEUR").getValue()); //$NON-NLS-1$
	attrs = this.reader.readNextAttributeProvider();
	assertNotNull(attrs);
	assertEquals(BDTOPO_VALUE, attrs.getAttribute("SOURCE").getValue()); //$NON-NLS-1$
	assertEquals("Religieux", attrs.getAttribute("CATEGORIE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals("Eglise", attrs.getAttribute("NATURE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals(23., attrs.getAttribute("HAUTEUR").getValue()); //$NON-NLS-1$
	attrs = this.reader.readNextAttributeProvider();
	assertNotNull(attrs);
	assertEquals(BDTOPO_VALUE, attrs.getAttribute("SOURCE").getValue()); //$NON-NLS-1$
	assertEquals("Religieux", attrs.getAttribute("CATEGORIE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals("Eglise", attrs.getAttribute("NATURE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals(6., attrs.getAttribute("HAUTEUR").getValue()); //$NON-NLS-1$
	attrs = this.reader.readNextAttributeProvider();
	assertNotNull(attrs);
	assertEquals(BDTOPO_VALUE, attrs.getAttribute("SOURCE").getValue()); //$NON-NLS-1$
	assertEquals("Religieux", attrs.getAttribute("CATEGORIE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals("Eglise", attrs.getAttribute("NATURE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals(6., attrs.getAttribute("HAUTEUR").getValue()); //$NON-NLS-1$
	attrs = this.reader.readNextAttributeProvider();
	assertNotNull(attrs);
	assertEquals(BDTOPO_VALUE, attrs.getAttribute("SOURCE").getValue()); //$NON-NLS-1$
	assertEquals("Religieux", attrs.getAttribute("CATEGORIE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals("Eglise", attrs.getAttribute("NATURE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals(7., attrs.getAttribute("HAUTEUR").getValue()); //$NON-NLS-1$
	attrs = this.reader.readNextAttributeProvider();
	assertNotNull(attrs);
	assertEquals(BDTOPO_VALUE, attrs.getAttribute("SOURCE").getValue()); //$NON-NLS-1$
	assertEquals("Religieux", attrs.getAttribute("CATEGORIE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals("Eglise", attrs.getAttribute("NATURE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals(5., attrs.getAttribute("HAUTEUR").getValue()); //$NON-NLS-1$
	attrs = this.reader.readNextAttributeProvider();
	assertNotNull(attrs);
	assertEquals(BDTOPO_VALUE, attrs.getAttribute("SOURCE").getValue()); //$NON-NLS-1$
	assertEquals("Religieux", attrs.getAttribute("CATEGORIE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals("Eglise", attrs.getAttribute("NATURE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals(2., attrs.getAttribute("HAUTEUR").getValue()); //$NON-NLS-1$
	attrs = this.reader.readNextAttributeProvider();
	assertNotNull(attrs);
	assertEquals(BDTOPO_VALUE, attrs.getAttribute("SOURCE").getValue()); //$NON-NLS-1$
	assertEquals("Religieux", attrs.getAttribute("CATEGORIE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals("Eglise", attrs.getAttribute("NATURE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals(14., attrs.getAttribute("HAUTEUR").getValue()); //$NON-NLS-1$
	attrs = this.reader.readNextAttributeProvider();
	assertNotNull(attrs);
	assertEquals(BDTOPO_VALUE, attrs.getAttribute("SOURCE").getValue()); //$NON-NLS-1$
	assertEquals("Religieux", attrs.getAttribute("CATEGORIE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals("Eglise", attrs.getAttribute("NATURE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals(27., attrs.getAttribute("HAUTEUR").getValue()); //$NON-NLS-1$
	attrs = this.reader.readNextAttributeProvider();
	assertNotNull(attrs);
	assertEquals(BDTOPO_VALUE, attrs.getAttribute("SOURCE").getValue()); //$NON-NLS-1$
	assertEquals("Religieux", attrs.getAttribute("CATEGORIE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals("Eglise", attrs.getAttribute("NATURE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals(8., attrs.getAttribute("HAUTEUR").getValue()); //$NON-NLS-1$
	attrs = this.reader.readNextAttributeProvider();
	assertNotNull(attrs);
	assertEquals(BDTOPO_VALUE, attrs.getAttribute("SOURCE").getValue()); //$NON-NLS-1$
	assertEquals("Religieux", attrs.getAttribute("CATEGORIE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals("Eglise", attrs.getAttribute("NATURE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals(14., attrs.getAttribute("HAUTEUR").getValue()); //$NON-NLS-1$
	attrs = this.reader.readNextAttributeProvider();
	assertNotNull(attrs);
	assertEquals(BDTOPO_VALUE, attrs.getAttribute("SOURCE").getValue()); //$NON-NLS-1$
	assertEquals("Religieux", attrs.getAttribute("CATEGORIE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals("Eglise", attrs.getAttribute("NATURE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals(11., attrs.getAttribute("HAUTEUR").getValue()); //$NON-NLS-1$
	attrs = this.reader.readNextAttributeProvider();
	assertNotNull(attrs);
	assertEquals(BDTOPO_VALUE, attrs.getAttribute("SOURCE").getValue()); //$NON-NLS-1$
	assertEquals("Religieux", attrs.getAttribute("CATEGORIE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals("Eglise", attrs.getAttribute("NATURE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals(30., attrs.getAttribute("HAUTEUR").getValue()); //$NON-NLS-1$
	attrs = this.reader.readNextAttributeProvider();
	assertNotNull(attrs);
	assertEquals(BDTOPO_VALUE, attrs.getAttribute("SOURCE").getValue()); //$NON-NLS-1$
	assertEquals("Religieux", attrs.getAttribute("CATEGORIE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals("Eglise", attrs.getAttribute("NATURE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals(23., attrs.getAttribute("HAUTEUR").getValue()); //$NON-NLS-1$
	attrs = this.reader.readNextAttributeProvider();
	assertNotNull(attrs);
	assertEquals(PHOTOGRAMMETRIE_VALUE, attrs.getAttribute("SOURCE").getValue()); //$NON-NLS-1$
	assertEquals("Religieux", attrs.getAttribute("CATEGORIE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals("Eglise", attrs.getAttribute("NATURE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals(35., attrs.getAttribute("HAUTEUR").getValue()); //$NON-NLS-1$
	attrs = this.reader.readNextAttributeProvider();
	assertNotNull(attrs);
	assertEquals(BDTOPO_VALUE, attrs.getAttribute("SOURCE").getValue()); //$NON-NLS-1$
	assertEquals("Religieux", attrs.getAttribute("CATEGORIE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals("Eglise", attrs.getAttribute("NATURE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals(18., attrs.getAttribute("HAUTEUR").getValue()); //$NON-NLS-1$
	attrs = this.reader.readNextAttributeProvider();
	assertNotNull(attrs);
	assertEquals(PHOTOGRAMMETRIE_VALUE, attrs.getAttribute("SOURCE").getValue()); //$NON-NLS-1$
	assertEquals("Religieux", attrs.getAttribute("CATEGORIE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals("Eglise", attrs.getAttribute("NATURE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals(15., attrs.getAttribute("HAUTEUR").getValue()); //$NON-NLS-1$
	attrs = this.reader.readNextAttributeProvider();
	assertNotNull(attrs);
	assertEquals(PHOTOGRAMMETRIE_VALUE, attrs.getAttribute("SOURCE").getValue()); //$NON-NLS-1$
	assertEquals("Religieux", attrs.getAttribute("CATEGORIE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals("Eglise", attrs.getAttribute("NATURE").getValue()); //$NON-NLS-1$ //$NON-NLS-2$
	assertEquals(11., attrs.getAttribute("HAUTEUR").getValue()); //$NON-NLS-1$
	assertNull(this.reader.readNextAttributeProvider());
}