Package test

Source Code of test.TestTreeBuilder

/*
* Copyright 2011, Zettabyte Storage LLC
*
* This file is part of Vash.
*
* Vash is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Vash 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 Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with Vash.  If not, see <http://www.gnu.org/licenses/>.
*/
package test;

import static org.junit.Assert.fail;

import java.io.ByteArrayInputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.security.NoSuchAlgorithmException;

import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import test.operation.TestOperationIntegration;
import vash.ImageParameters;
import vash.Output;
import vash.OutputParameters;
import vash.Tree;
import vash.TreeParameters;


public class TestTreeBuilder {
  private final int GALLERY_SIZE = 100;
  private final int WIDTH = 128;
  private final int HEIGHT = 128;

  public void runStaticTest(String algo, String name, int width, int height) {
    TreeParameters tp;
    Tree tree;

    // ensure we have an output directory
    File treeTgt = new File(String.format("./gallery-%s/trees/", name));
    if(!treeTgt.exists()) {
      Assert.assertTrue(treeTgt.mkdirs());
    }
   
    for(int i = 0; i < GALLERY_SIZE; i++) {
      System.out.format("At image: %03d\n", i);
      InputStream data = new ByteArrayInputStream(String.format("%03d", i).getBytes());
      tp = TreeParameters.createInstanceOrDie(algo, null, data);
      tree = new Tree(tp);

      // write out the tree we built
      try {
        tree.show(String.format("./gallery-%s/trees/%03d.txt", name, i));
      } catch(IOException e) {
        fail(e.toString());
      }

      ImageParameters ip = new ImageParameters(width, height);
      tree.setGenerationParameters(ip);
      byte[] actual = tree.generateCurrentFrame();
      TestOperationIntegration.compare(actual, width, height, String.format("./test/reference-%s/%03d.png", name, i), null);
     
      OutputParameters op = new OutputParameters(String.format("./gallery-%s/%03d.png", name, i), width, height);
      Output out = new Output(op, tree);
      try {
        out.generate();
      } catch(IOException e) {
        System.err.println(e.toString());
        Assert.assertTrue(false);
      }
    }
  }

  /////// GOLDEN OUTPUT TESTS
  @Test
  public void testBuildTree1FastNonSquare() {
    runStaticTest("1-fast", "1-fast-nonsquare", WIDTH * 2, HEIGHT);
  }

  @Test
  public void testBuildTree1Fast() {
    runStaticTest("1-fast", "1-fast", WIDTH, HEIGHT);
  }

  @Test
  public void testBuildTree1NonSquare() {
    runStaticTest("1", "1-nonsquare", WIDTH * 2, HEIGHT);
  }

  @Test
  public void testBuildTree1() {
    runStaticTest("1", "1", WIDTH, HEIGHT);
  }

  @Test
  public void testBuildTree1_1() {
    runStaticTest("1.1", "1.1", WIDTH, HEIGHT);
  }
  /////// END GOLDEN OUTPUT TESTS

  protected FakeSeed seed;
 
  @Before
  public void setUp() throws Exception {
    try {
      seed = new FakeSeed();
    } catch(NoSuchAlgorithmException e) {
    } catch(IOException e) {}
  }
 
  @Test
  public void testExcludeCount() {
    Assert.assertEquals(3, Tree.__getChannelExclusionCount(seed, -1.0));
    Assert.assertEquals(3, Tree.__getChannelExclusionCount(seed, 0.0));
    Assert.assertEquals(2, Tree.__getChannelExclusionCount(seed, 1.0));
    Assert.assertEquals(1, Tree.__getChannelExclusionCount(seed, 2.0));
    Assert.assertEquals(0, Tree.__getChannelExclusionCount(seed, 3.0));
    Assert.assertEquals(0, Tree.__getChannelExclusionCount(seed, 4.0));

    seed.addValue(0.75);
    Assert.assertEquals(3, Tree.__getChannelExclusionCount(seed, 0.6));
    seed.addValue(0.25);
    Assert.assertEquals(2, Tree.__getChannelExclusionCount(seed, 0.6));
   
    seed.addValue(0.75);
    Assert.assertEquals(2, Tree.__getChannelExclusionCount(seed, 1.6));
    seed.addValue(0.25);
    Assert.assertEquals(1, Tree.__getChannelExclusionCount(seed, 1.6));

    seed.addValue(0.75);
    Assert.assertEquals(1, Tree.__getChannelExclusionCount(seed, 2.6));
    seed.addValue(0.25);
    Assert.assertEquals(0, Tree.__getChannelExclusionCount(seed, 2.6));
  }
 
  void assertSameMask(boolean[] expected, boolean[] actual) {
    for(int i = 0; i < 3; i++) {
      Assert.assertEquals(expected[i], actual[i]);
    }
  }
 
  @Test
  public void testBuildChannelMask() {
    assertSameMask(new boolean[] {true, true, true}, Tree.__buildChannelMask(seed, 3));

    seed.addValue(0);
    assertSameMask(new boolean[] {false, true, true}, Tree.__buildChannelMask(seed, 2));
    seed.addValue(1);
    assertSameMask(new boolean[] {true, false, true}, Tree.__buildChannelMask(seed, 2));
    seed.addValue(2);
    assertSameMask(new boolean[] {true, true, false}, Tree.__buildChannelMask(seed, 2));

    seed.addValue(0);
    assertSameMask(new boolean[] {true, false, false}, Tree.__buildChannelMask(seed, 1));
    seed.addValue(1);
    assertSameMask(new boolean[] {false, true, false}, Tree.__buildChannelMask(seed, 1));
    seed.addValue(2);
    assertSameMask(new boolean[] {false, false, true}, Tree.__buildChannelMask(seed, 1));

    assertSameMask(new boolean[] {false, false, false}, Tree.__buildChannelMask(seed, 0));
  }

}
TOP

Related Classes of test.TestTreeBuilder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.