/*
* Copyright (C) 2011 Brockmann Consult GmbH (info@brockmann-consult.de)
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation; either version 3 of the License, or (at your option)
* any later version.
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along
* with this program; if not, see http://www.gnu.org/licenses/
*/
package org.esa.snap.ui.product;
import org.esa.snap.core.datamodel.Band;
import org.esa.snap.core.datamodel.ProductData;
import org.junit.Test;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import static org.junit.Assert.*;
/**
* @author Thomas Storm
*/
public class BandSorterTest {
@Test
public void testSort_With_Wavelengths_and_Digits() throws Exception {
List<Band> bands = new ArrayList<>();
bands.add(createBand("spec_1", 200));
bands.add(createBand("spec_2", 300));
bands.add(createBand("spec_3", 400));
bands.add(createBand("spec_4", 500));
bands.add(createBand("spec_5", 600));
bands.add(createBand("spec_6", 700));
Collections.shuffle(bands);
Band[] bandsArray = bands.toArray(new Band[bands.size()]);
Arrays.sort(bandsArray, BandSorter.createComparator());
assertEquals("spec_1", bandsArray[0].getName());
assertEquals("spec_2", bandsArray[1].getName());
assertEquals("spec_3", bandsArray[2].getName());
assertEquals("spec_4", bandsArray[3].getName());
assertEquals("spec_5", bandsArray[4].getName());
assertEquals("spec_6", bandsArray[5].getName());
}
@Test
public void testSort_Without_Digits() throws Exception {
List<Band> bands = new ArrayList<>();
bands.add(createBand("spec_a", 200));
bands.add(createBand("spec_b", 300));
bands.add(createBand("spec_c", 400));
bands.add(createBand("spec_d", 500));
bands.add(createBand("spec_e", 600));
bands.add(createBand("spec_f", 700));
Collections.shuffle(bands);
Band[] bandsArray = bands.toArray(new Band[bands.size()]);
BandSorter.sort(bandsArray);
assertEquals("spec_a", bandsArray[0].getName());
assertEquals("spec_b", bandsArray[1].getName());
assertEquals("spec_c", bandsArray[2].getName());
assertEquals("spec_d", bandsArray[3].getName());
assertEquals("spec_e", bandsArray[4].getName());
assertEquals("spec_f", bandsArray[5].getName());
}
@Test
public void testSort_Without_Wavelengths() throws Exception {
List<Band> bands = new ArrayList<>();
bands.add(createBand("spec_1", 0));
bands.add(createBand("spec_2", 0));
bands.add(createBand("spec_3", 0));
bands.add(createBand("spec_4", 0));
bands.add(createBand("spec_5", 0));
bands.add(createBand("spec_6", 0));
Collections.shuffle(bands);
Band[] bandsArray = bands.toArray(new Band[bands.size()]);
BandSorter.sort(bandsArray);
assertEquals("spec_1", bandsArray[0].getName());
assertEquals("spec_2", bandsArray[1].getName());
assertEquals("spec_3", bandsArray[2].getName());
assertEquals("spec_4", bandsArray[3].getName());
assertEquals("spec_5", bandsArray[4].getName());
assertEquals("spec_6", bandsArray[5].getName());
}
@Test
public void testSort_Without_Wavelengths_And_Digits() throws Exception {
List<Band> bands = new ArrayList<>();
bands.add(createBand("spec_a", 0));
bands.add(createBand("spec_b", 0));
bands.add(createBand("spec_c", 0));
bands.add(createBand("spec_d", 0));
bands.add(createBand("spec_e", 0));
bands.add(createBand("spec_f", 0));
Collections.shuffle(bands);
Band[] bandsArray = bands.toArray(new Band[bands.size()]);
BandSorter.sort(bandsArray);
assertEquals("spec_a", bandsArray[0].getName());
assertEquals("spec_b", bandsArray[1].getName());
assertEquals("spec_c", bandsArray[2].getName());
assertEquals("spec_d", bandsArray[3].getName());
assertEquals("spec_e", bandsArray[4].getName());
assertEquals("spec_f", bandsArray[5].getName());
}
public static Band createBand(String name, int wavelength) {
Band a = new Band(name, ProductData.TYPE_INT16, 10, 10);
a.setSpectralWavelength(wavelength);
return a;
}
}