srtm30 utils

This commit is contained in:
Arndt 2015-04-05 09:24:46 +02:00
parent 8c0b416aef
commit 91c463302e
5 changed files with 338 additions and 0 deletions

View file

@ -0,0 +1,63 @@
package btools.util;
import java.util.Random;
import java.io.*;
import org.junit.Assert;
import org.junit.Test;
public class MixCoderTest
{
@Test
public void mixEncodeDecodeTest() throws IOException
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
MixCoderDataOutputStream mco = new MixCoderDataOutputStream( baos );
MixCoderDataInputStream mci = null;
for(;;)
{
Random rnd = new Random( 1234 );
for( int i=0; i<1500; i++ )
{
checkEncodeDecode( rnd.nextInt( 3800 ), mco, mci );
}
for( int i=0; i<1500; i++ )
{
checkEncodeDecode( rnd.nextInt( 35 ), mco, mci );
}
for( int i=0; i<1500; i++ )
{
checkEncodeDecode( 0, mco, mci );
}
for( int i=0; i<1500; i++ )
{
checkEncodeDecode( 1000, mco, mci );
}
if ( mco != null )
{
mco.close();
mco = null;
mci = new MixCoderDataInputStream( new ByteArrayInputStream( baos.toByteArray() ) );
}
else break;
}
}
private void checkEncodeDecode( long v, MixCoderDataOutputStream mco, MixCoderDataInputStream mci ) throws IOException
{
if ( mco != null )
{
mco.writeMixed( v );
}
if ( mci != null )
{
long vv = mci.readMixed();
if ( vv != v )
{
Assert.assertTrue( "value mismatch: v=" + v + " vv=" + vv, false );
}
}
}
}

View file

@ -0,0 +1,47 @@
package btools.util;
import java.util.Random;
import java.io.*;
import org.junit.Assert;
import org.junit.Test;
public class ReducedMedianFilterTest
{
@Test
public void reducedMedianFilterTest() throws IOException
{
ReducedMedianFilter f = new ReducedMedianFilter( 10 );
f.reset();
f.addSample( .2, 10 );
f.addSample( .2, 10 );
f.addSample( .2, 10 );
f.addSample( .2, 15 );
f.addSample( .2, 20 );
double m = f.calcEdgeReducedMedian( 0.5 );
Assert.assertTrue( "median1 mismatch m=" + m + " expected 11.5", doubleEquals( m, 11.5 ) );
f.reset();
f.addSample( .2, 10 );
f.addSample( .2, 10 );
f.addSample( .2, 10 );
f.addSample( .2, 10 );
f.addSample( .2, 20 );
m = f.calcEdgeReducedMedian( 1. );
Assert.assertTrue( "median1 mismatch m=" + m + " expected 12", doubleEquals( m, 12. ) );
f.reset();
f.addSample( .5, -10 );
f.addSample( .5, 10 );
m = f.calcEdgeReducedMedian( 0.5 );
Assert.assertTrue( "median2 mismatch m=" + m + " expected 0", doubleEquals( m, 0. ) );
}
private boolean doubleEquals( double d1, double d2 )
{
double d = d1 - d2;
return d < 1e-9 && d > -1e-9;
}
}