@Test
  public void testReadBandRasterData() {
    Date startDate = Calendar.getInstance().getTime();
    // Product product = new Product("name", "desc", 100, 200);
    File file =
        TestUtil.getTestFile(
            productsFolder + "SP04_HRI1_X__1O_20050605T090007_20050605T090016_DLR_70_PREU.BIL.ZIP");
    // File rasterFile = TestUtil.getTestFile(productsFolder + "mediumImage.tif");
    System.setProperty("snap.dataio.reader.tileWidth", "100");
    System.setProperty("snap.dataio.reader.tileHeight", "200");
    try {

      Product finalProduct = reader.readProductNodes(file, null);
      ProductData data = ProductData.createInstance(ProductData.TYPE_UINT16, 20000);
      data.setElemFloatAt(3, 5);
      reader.readBandRasterData(
          finalProduct.getBandAt(0), 2000, 2000, 100, 200, data, new NullProgressMonitor());
      assertNotEquals(0, data.getElemFloatAt(0));
      assertNotEquals(-1000, data.getElemFloatAt(0));
      assertNotEquals(0, data.getElemFloatAt(1999));
      assertNotEquals(-1000, data.getElemFloatAt(1999));
      assertNotEquals(5, data.getElemFloatAt(3));
      Date endDate = Calendar.getInstance().getTime();
      assertTrue(
          "The load time for the product is too big!",
          (endDate.getTime() - startDate.getTime()) / (60 * 1000) < 30);
    } catch (IOException e) {
      e.printStackTrace();
      assertTrue(e.getMessage(), false);
    }
  }
 @Test
 public void testReadProductNodes() {
   Date startDate = Calendar.getInstance().getTime();
   Product product = new Product("name", "desc", 100, 100);
   File file =
       TestUtil.getTestFile(
           productsFolder + "SP04_HRI1_X__1O_20050605T090007_20050605T090016_DLR_70_PREU.BIL.ZIP");
   System.setProperty("snap.dataio.reader.tileWidth", "100");
   System.setProperty("snap.dataio.reader.tileHeight", "100");
   try {
     Product finalProduct = reader.readProductNodes(file, null);
     assertEquals(4, finalProduct.getBands().length);
     assertEquals("WGS84(DD)", finalProduct.getSceneGeoCoding().getGeoCRS().getName().toString());
     assertEquals("SPOTView", finalProduct.getProductType());
     assertEquals(0, finalProduct.getMaskGroup().getNodeCount());
     assertEquals(2713, finalProduct.getSceneRasterWidth());
     assertEquals(2568, finalProduct.getSceneRasterHeight());
     Date endDate = Calendar.getInstance().getTime();
     assertTrue(
         "The load time for the product is too big!",
         (endDate.getTime() - startDate.getTime()) / (60 * 1000) < 30);
   } catch (IOException e) {
     e.printStackTrace();
     assertTrue(e.getMessage(), false);
   }
 }
  @Before
  public void setup() {
    assumeTrue(TestUtil.testdataAvailable());

    SpotViewProductReaderPlugin plugin = new SpotViewProductReaderPlugin();
    reader = new SpotViewProductReader(plugin);
  }
 @Test
 public void testGetProductComponentsOnFileInput() {
   File file =
       TestUtil.getTestFile(
           productsFolder
               + "SP04_HRI1_X__1O_20050605T090007_20050605T090016_DLR_70_PREU.BIL/metadata.xml");
   System.setProperty("snap.dataio.reader.tileWidth", "100");
   System.setProperty("snap.dataio.reader.tileHeight", "100");
   try {
     reader.readProductNodes(file, null);
     TreeNode<File> components = reader.getProductComponents();
     assertEquals(3, components.getChildren().length);
     String[] expectedIds = new String[] {"metadata.dim", "metadata.xml", "geolayer.bil"};
     int componentsAsExpected = 0;
     for (TreeNode<File> component : components.getChildren()) {
       for (String expectedValue : expectedIds) {
         if (component.getId().toLowerCase().equals(expectedValue.toLowerCase())) {
           componentsAsExpected++;
         }
       }
     }
     assertEquals(3, componentsAsExpected);
   } catch (IOException e) {
     e.printStackTrace();
     assertTrue(e.getMessage(), false);
   }
 }
 @Test
 public void testDecodeQualificationForXML() throws IOException {
   Date startDate = Calendar.getInstance().getTime();
   DecodeQualification decodeQualification =
       plugIn.getDecodeQualification(
           TestUtil.getTestFile(productsFolder + "dimap/test_ST4_MT.xml"));
   assertEquals(DecodeQualification.UNABLE, decodeQualification);
   decodeQualification =
       plugIn.getDecodeQualification(
           TestUtil.getTestFile(
               productsFolder
                   + "Demo03_1B/2009-04-16T104920_RE4_1B-NAC_3436599_84303_metadata.xml"));
   assertEquals(DecodeQualification.INTENDED, decodeQualification);
   Date endDate = Calendar.getInstance().getTime();
   assertTrue(
       "The decoding time for the file is too big!",
       (endDate.getTime() - startDate.getTime()) / 1000 < 30); // 30 sec
 }
  @Test
  public void testDecodeQualificationForXML() throws IOException {
    assumeTrue(TestUtil.testdataAvailable());

    Date startDate = Calendar.getInstance().getTime();
    DecodeQualification decodeQualification =
        plugIn.getDecodeQualification(
            TestUtil.getTestFile(productsFolder + "dimap/test_ST4_MT.xml"));
    assertEquals(DecodeQualification.UNABLE, decodeQualification);
    decodeQualification =
        plugIn.getDecodeQualification(
            TestUtil.getTestFile(productsFolder + "SPOT4_HRVIR1_XS_88888888_N1A.tgz"));
    assertEquals(DecodeQualification.INTENDED, decodeQualification);
    Date endDate = Calendar.getInstance().getTime();
    assertTrue(
        "The decoding time for the file is too big!",
        (endDate.getTime() - startDate.getTime()) / 1000 < 30); // 30 sec
  }
 @Test
 public void testGetProductComponentsOnArchiveInput() {
   File file =
       TestUtil.getTestFile(
           productsFolder + "SP04_HRI1_X__1O_20050605T090007_20050605T090016_DLR_70_PREU.BIL.ZIP");
   System.setProperty("snap.dataio.reader.tileWidth", "100");
   System.setProperty("snap.dataio.reader.tileHeight", "100");
   try {
     reader.readProductNodes(file, null);
     TreeNode<File> components = reader.getProductComponents();
     assertEquals(1, components.getChildren().length);
     assertEquals(
         "SP04_HRI1_X__1O_20050605T090007_20050605T090016_DLR_70_PREU.BIL.ZIP",
         components.getChildren()[0].getId());
   } catch (IOException e) {
     e.printStackTrace();
     assertTrue(e.getMessage(), false);
   }
 }