/* * This file is part of ALOE. * * ALOE 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. * ALOE 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 ALOE. If not, see <http://www.gnu.org/licenses/>. * * Copyright (c) 2012 SCCL, University of Washington (http://depts.washington.edu/sccl) */ package etc.aloe.data; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.util.ArrayList; import java.util.List; import org.junit.After; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; import org.junit.Test; import static org.junit.Assert.*; import weka.filters.Filter; import weka.filters.unsupervised.instance.Randomize; /** * * @author Michael Brooks <mjbrooks@uw.edu> */ public class FeatureSpecificationTest { public FeatureSpecificationTest() { } @BeforeClass public static void setUpClass() { } @AfterClass public static void tearDownClass() { } @Before public void setUp() { } @After public void tearDown() { } /** * Test of load method, of class FeatureSpecification. */ @Test public void testLoad() throws Exception { System.out.println("load"); Randomize filter = new Randomize(); filter.setRandomSeed(455); ArrayList<Filter> filtersList = new ArrayList<Filter>(); filtersList.add(filter); ByteArrayOutputStream out = new ByteArrayOutputStream(); ObjectOutputStream objOut = new ObjectOutputStream(out); objOut.writeObject(filtersList); out.close(); byte[] serializedBytes = out.toByteArray(); ByteArrayInputStream input = new ByteArrayInputStream(serializedBytes); FeatureSpecification instance = new FeatureSpecification(); assertTrue(instance.load(input)); input.close(); List<Filter> filters = instance.getFilters(); assertEquals(1, filters.size()); assertTrue(filters.get(0) instanceof Randomize); Randomize serialized = (Randomize) filters.get(0); assertEquals(filter.getRandomSeed(), serialized.getRandomSeed()); } /** * Test of save method, of class FeatureSpecification. */ @Test public void testSave() throws Exception { System.out.println("save");; Randomize filter = new Randomize(); filter.setRandomSeed(455); FeatureSpecification instance = new FeatureSpecification(); instance.addFilter(filter); ByteArrayOutputStream out = new ByteArrayOutputStream(); assertTrue(instance.save(out)); out.close(); byte[] bytes = out.toByteArray(); //It wrote something assertTrue(bytes.length > 0); //It wrote the correct thing ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(bytes)); try { List<Filter> serialized = (List<Filter>) in.readObject(); in.close(); assertEquals(1, serialized.size()); assertTrue(serialized.get(0) instanceof Randomize); Randomize randomize = (Randomize) serialized.get(0); assertEquals(filter.getRandomSeed(), randomize.getRandomSeed()); } catch (ClassNotFoundException e) { assertTrue(e.getMessage(), false); } catch (IOException e) { assertTrue(e.getMessage(), false); } } /** * Test of addFilter method, of class FeatureSpecification. */ @Test public void testAddFilter() { System.out.println("addFilter"); Randomize filter = new Randomize(); FeatureSpecification instance = new FeatureSpecification(); instance.addFilter(filter); assertEquals(filter, instance.getFilters().get(0)); } }